Examinar o repositório GitHub conectado ou o projeto de Azure DevOps

Você pode configurar o Segurança da Microsoft DevOps para verificar o repositório GitHub conectado ou o projeto do Azure DevOps. Use uma ação do GitHub ou uma extensão do Azure DevOps para executar Segurança da Microsoft DevOps apenas no código-fonte IaC (Infraestrutura como Código) e ajudar a reduzir o tempo de execução do pipeline.

Este artigo mostra como aplicar um arquivo de configuração YAML de modelo para verificar seu repositório ou projeto conectado especificamente para problemas de segurança da IaC, usando regras de DevOps de Segurança da Microsoft. Antes de começar, certifique-se de ter um repositório GitHub conectado ou um projeto Azure DevOps e revise os pré-requisitos.

Pré-requisitos

Configurar e executar uma ação do GitHub para escanear o código-fonte IaC conectado

Para configurar uma ação e exibir os resultados da verificação no GitHub:

  1. Faça login no GitHub.

  2. Vá para a página principal do repositório.

  3. No diretório de arquivos, selecionefluxos>de trabalho> msdevopssec.yml.

    Para obter mais informações sobre como trabalhar com uma ação no GitHub, consulte Pré-requisitos.

  4. Selecione o ícone Editar este arquivo (lápis).

    Captura de tela que realça o ícone Editar este arquivo para o arquivo msdevopssec.yml.

  5. Na seção Executar analisadores do arquivo YAML, adicione o seguinte código para habilitar a varredura de Infraestrutura como Código:

    with:
        categories: 'IaC'
    

    Note

    Os valores diferenciam maiúsculas de minúsculas.

    A captura de tela a seguir mostra um exemplo da configuração atualizada do YAML:

    Captura de tela que mostra as informações a serem adicionadas ao arquivo YAML.

  6. Selecione Confirmar alterações . . . .

  7. Selecione Confirmar alterações.

    Captura de tela que mostra onde selecionar Confirmar alterações na página do GitHub.

  8. (Opcional) Adicione um modelo de IaC ao repositório. Se você já tiver um modelo de IaC em seu repositório, ignore esta etapa.

    Por exemplo, confirme um modelo de IaC que você pode usar para implantar um aplicativo Web Linux básico.

    1. Selecione o arquivo azuredeploy.json .

      Captura de tela que mostra onde o arquivo azuredeploy.json está localizado.

    2. Selecione Bruto.

    3. Copie todas as informações no arquivo, como no exemplo a seguir:

      {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
          "webAppName": {
            "type": "string",
            "defaultValue": "AzureLinuxApp",
            "metadata": {
              "description": "The base name of the resource, such as the web app name or the App Service plan."
            },
            "minLength": 2
          },
          "sku": {
            "type": "string",
            "defaultValue": "S1",
            "metadata": {
              "description": "The SKU of the App Service plan."
            }
          },
          "linuxFxVersion": {
            "type": "string",
            "defaultValue": "php|7.4",
            "metadata": {
              "description": "The runtime stack of the current web app."
            }
          },
          "location": {
            "type": "string",
            "defaultValue": "[resourceGroup().location]",
            "metadata": {
              "description": "The location for all resources."
            }
          }
        },
        "variables": {
          "webAppPortalName": "[concat(parameters('webAppName'), '-webapp')]",
          "appServicePlanName": "[concat('AppServicePlan-', parameters('webAppName'))]"
        },
        "resources": [
          {
            "type": "Microsoft.Web/serverfarms",
            "apiVersion": "2020-06-01",
            "name": "[variables('appServicePlanName')]",
            "location": "[parameters('location')]",
            "sku": {
              "name": "[parameters('sku')]"
            },
            "kind": "linux",
            "properties": {
              "reserved": true
            }
          },
          {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2020-06-01",
            "name": "[variables('webAppPortalName')]",
            "location": "[parameters('location')]",
            "kind": "app",
            "dependsOn": [
              "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
            ],
            "properties": {
              "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
              "siteConfig": {
                "linuxFxVersion": "[parameters('linuxFxVersion')]"
              }
            }
          }
        ]
      }
      
    4. No repositório GitHub, vá para a pasta .github/fluxos de trabalho .

    5. Selecione Adicionar arquivo>Criar novo arquivo.

      Captura de tela que mostra como criar um novo arquivo.

    6. Insira um nome para o arquivo.

    7. Cole as informações copiadas no arquivo.

    8. Selecione Confirmar novo arquivo.

    O arquivo de modelo é adicionado ao repositório.

    Captura de tela que mostra que o novo arquivo criado é adicionado ao repositório.

  9. Verifique se a análise de Segurança DevOps da Microsoft foi concluída:

    1. Para o repositório, selecione Ações.

    2. Selecione o fluxo de trabalho para ver o status da ação.

  10. Para visualizar os resultados da varredura, utilize uma das seguintes opções:

    • Vá para o Defender para Nuvem>para segurança DevOps. Essa opção não requer uma licença GitHub Advanced Security (GHAS).
    • Se você tem uma licença GitHub Advanced Security (GHAS), vá para> SecurityCode scanning alerts nativamente no GitHub.

Configurar e executar uma extensão do Azure DevOps para escanear o código-fonte IaC conectado

Para configurar uma extensão e exibir os resultados da verificação no Azure DevOps:

  1. Entre no Azure DevOps.

  2. Selecione seu projeto.

  3. Selecione Pipelines.

  4. Selecione o pipeline em que a extensão do Azure DevOps para o Segurança da Microsoft DevOps está configurada.

  5. Selecione Editar pipeline.

  6. No arquivo de configuração YAML do pipeline, abaixo da displayName linha da tarefa MicrosoftSecurityDevOps@1 , adicione o seguinte código para habilitar a varredura de Infraestrutura como Código:

    inputs:
        categories: 'IaC'
    

    A captura de tela a seguir mostra um exemplo da configuração YAML do pipeline com a categoria IaC adicionada:

    Captura de tela que mostra onde adicionar a linha de categorias de IaC no arquivo YAML de configuração do pipeline.

  7. Selecione Salvar.

  8. (Opcional) Adicione um modelo IaC ao seu projeto do Azure DevOps. Se você já tiver um modelo de IaC em seu projeto, ignore esta etapa.

  9. Escolha se deseja confirmar diretamente no branch principal ou criar um novo branch para a confirmação e selecione Salvar.

  10. Para exibir os resultados da verificação de IaC, selecione Pipelines e selecione o pipeline modificado.

  11. Para ver mais detalhes, selecione uma execução de pipeline específica.

Exibir detalhes e informações de correção para regras de IaC aplicadas

As ferramentas de verificação de IaC incluídas no Segurança da Microsoft DevOps são o Analisador de Modelos (PSRule está incluído no Analisador de Modelos), Checkov e Terrascan.

O Analisador de Modelos executa regras em modelos do ARM (modelos do Azure Resource Manager) e modelos Bicep. Consulte as regras Template Analyzer e detalhes de correção.

O Terrascan executa regras em modelos ARM e em templates para CloudFormation, Docker, Helm, Kubernetes, Kustomize e Terraform. Consulte as regras de Terrascan.

Chekov executa regras em modelos do ARM e modelos para CloudFormation, Docker, Helm, Kubernetes, Kustomize e Terraform. Consulte as regras Checkov.

Para saber mais sobre as ferramentas de verificação de IaC incluídas no Segurança da Microsoft DevOps, confira:

Neste artigo, você aprendeu a configurar uma ação do GitHub e uma extensão do Azure DevOps para o Segurança da Microsoft DevOps para verificar se há configurações incorretas de segurança de IaC e como exibir os resultados.

Para obter mais informações: