Compartilhar via


Configurar o GitHub Advanced Security para Azure DevOps

O GitHub Advanced Security para Azure DevOps adiciona o pacote de recursos de segurança do GitHub Advanced Security ao Azure Repos.

O GitHub Advanced Security para Azure DevOps inclui:

  • Proteção por push de verificação secreta: verifique se os pushes de código incluem confirmações que expõem segredos como credenciais
  • Verificação de repositório de verificação secreta: examine seu repositório e procure segredos expostos que foram confirmados acidentalmente
  • Verificação de dependência – procure vulnerabilidades conhecidas em dependências de software livre (diretas e transitivas)
  • Verificação de código – use o mecanismo de análise estática codeQL para identificar vulnerabilidades de aplicativo no nível do código, como injeção de SQL e bypass de autenticação

No momento, GitHub Advanced Security para Azure DevOps só está disponível para o Azure DevOps Services e não existem planos para levar esse produto ao Azure DevOps Server. O GitHub Advanced Security para Azure DevOps também está disponível apenas para repositórios Git de código.

O GitHub Advanced Security para Azure DevOps funciona com o Azure Repos. Se você quiser usar o GitHub Advanced Security com repositórios do GitHub, consulte o GitHub Advanced Security.

Pré-requisitos

Você precisa ter permissões alocadas como membro do grupo Administradores da Coleção de Projetos. Para adicionar membros ao grupo Administradores de Coleção de Projetos ou alterar uma permissão no nível da coleção do projeto, consulte Alterar permissões no nível da coleção do projeto.

Pré-requisitos extras para agentes auto-hospedados

Se sua organização usa agentes auto-hospedados, há mais requisitos:

  • Adicione essas URLs à lista de permissões para permitir que a tarefa de verificação de dependência busque dados de consultoria de vulnerabilidade. Saiba mais sobre endereços IP permitidos e URLs de domínio.
URL do domínio Descrição
https://governance.dev.azure.com Para organizações que usam o domínio dev.azure.com para acessar a instância do DevOps
https://dev.azure.com Para organizações que usam o domínio dev.azure.com para acessar a instância do DevOps
https://advsec.dev.azure.com Para organizações que usam o domínio dev.azure.com para acessar a instância do DevOps
https://{organization_name}.governance.visualstudio.com Para organizações que usam o domínio {organization_name}.visualstudio.com para acessar a instância do DevOps
https://{organization_name}.visualstudio.com  Para organizações que usam o domínio {organization_name}.visualstudio.com para acessar a instância do DevOps
https://{organization_name}.advsec.visualstudio.com Para organizações que usam o domínio {organization_name}.visualstudio.com para acessar a instância do DevOps
  • Execute uma versão compatível do runtime do .NET (atualmente .NET 8.x). Se uma versão compatível não estiver presente no agente, a tarefa de build de verificação de dependência baixará o .NET.

  • Verifique se o pacote CodeQL está instalado no cache da ferramenta no seu agente. Você pode utilizar a variável enableAutomaticCodeQLInstall: true com a tarefa de pipeline Advanced-Security-CodeQL@1 para pipelines YAML ou marcar a caixa de seleção Enable automatic CodeQL detection and installation para pipelines clássicos. Como alternativa, para obter instruções de instalação manual, consulte Verificação de código do GitHub Advanced Security para Azure DevOps.

Habilitar a Segurança Avançada do GitHub

Você pode habilitar a Segurança Avançada no nível da organização, do projeto ou do repositório. Para acessar cada uma das ferramentas e resultados de verificação, você precisa primeiro habilitar a Segurança Avançada. Depois de habilitar a Segurança Avançada, quaisquer envios futuros contendo segredos para um repositório com essa política habilitada serão bloqueados e a verificação de segredo do repositório ocorrerá em segundo plano.

Integração em nível de repositório

  1. Vá para as configurações do Projeto para seu projeto do Azure DevOps.
  2. Selecione Repos>Repositories.
  3. Selecione o repositório para o qual você deseja habilitar a Segurança Avançada.
  4. Selecione Habilitar e Iniciar cobrança para ativar a Segurança Avançada. Um ícone de escudo agora aparece no modo de exibição do repositório para qualquer repositório com a Segurança Avançada habilitada.

Captura de tela da habilitação do GitHub Advanced Security.

Integração em nível de projeto

  1. Vá para as configurações do Projeto para seu projeto do Azure DevOps.
  2. Selecione Repositório.
  3. Selecione a guia Settings (Configurações).
  4. Selecione Habilitar tudo para ver uma estimativa do número de confirmadores ativos do seu projeto.
  5. Selecione Iniciar cobrança para ativar a Segurança Avançada para cada repositório existente em seu projeto.
  6. Opcionalmente, selecione Habilitar automaticamente a Segurança Avançada para novos repositórios para que todos os repositórios recém-criados tenham a Segurança Avançada habilitada no momento da criação.

Captura de tela da habilitação em nível de projeto para Segurança Avançada.

Integração em nível de organização

  1. Acesse Configurações da organização para sua organização do Azure DevOps.
  2. Selecione Repositórios.
  3. Selecione Habilitar tudo e veja uma estimativa do número de committers ativos da sua organização.
  4. Selecione Iniciar cobrança para ativar a Segurança Avançada para todos os repositórios existentes em cada projeto da sua organização.
  5. Opcionalmente, selecione Habilitar automaticamente a Segurança Avançada para novos repositórios para que todos os projetos recém-criados tenham a Segurança Avançada habilitada no momento da criação.

Captura de tela da habilitação em nível de organização para Segurança Avançada.

Configurar a verificação secreta

A proteção por push de verificação secreta e a verificação de repositório são habilitadas automaticamente quando você ativa a Segurança Avançada. Você pode habilitar ou desabilitar a proteção por push secreta da página de configurações do repositório.

Captura de tela da habilitação da proteção por push.

Conforme mencionado, a verificação do repositório de verificação secreta é iniciada automaticamente ao habilitar a Segurança Avançada para um repositório selecionado.

Configurar a verificação de dependência

A verificação de dependência é uma ferramenta de verificação baseada em pipeline. Os resultados são agregados por repositório. É recomendável que você adicione a tarefa de verificação de dependência a todos os pipelines que deseja que sejam verificados.

Dica

Para obter os resultados de verificação mais precisos, adicione a tarefa de verificação de dependência seguindo as etapas de build e/ou etapa de restauração de pacote de um pipeline que compila o código que você deseja examinar.

Adicione a tarefa Advanced Security Dependency Scanning (AdvancedSecurity-Dependency-Scanning@1) diretamente ao seu arquivo de pipeline YAML ou selecione a tarefa Advanced Security Dependency Scanning a partir do assistente de tarefas.

Captura de tela da configuração do pipeline de verificação de dependência para YAML.

Configurar a verificação de código

A verificação de código também é uma ferramenta de verificação baseada em pipeline em que os resultados são agregados por repositório.

Dica

É recomendável adicionar a tarefa de verificação de código a um pipeline separado e clonado do pipeline de produção principal ou criar um novo pipeline. Isso ocorre porque a verificação de código pode ser uma tarefa de build mais demorada.

Adicione as tarefas na seguinte ordem:

  1. Inicialização do CodeQL com Segurança Avançada (AdvancedSecurity-Codeql-Init@1)
  2. Suas etapas de compilação personalizada
  3. Executar Segurança Avançada de Análise do CodeQL (AdvancedSecurity-Codeql-Analyze@1)

Captura de tela da configuração do pipeline de verificação de código para YAML.

Além disso, você precisará especificar o(s) idioma(s) que está analisando na tarefa Inicializar o CodeQL. Uma lista separada por vírgulas pode ser usada para analisar várias linguagens ao mesmo tempo. As linguagens com suporte são csharp, cpp, go, java, javascript, python, ruby, swift. Se você estiver utilizando agentes auto-hospedados, também poderá adicionar a variável enableAutomaticCodeQLInstall: true para instalar automaticamente os bits mais recentes do CodeQL para seu agente.

Aqui está um exemplo de pipeline inicial:

trigger:
  - main

pool:
  # Additional hosted image options are available: https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/hosted#software
  vmImage: ubuntu-latest

steps:

  - task: AdvancedSecurity-Codeql-Init@1
    inputs:
      languages: "java"
      # Supported languages: csharp, cpp, go, java, javascript, python, ruby, swift
      # You can customize the initialize task: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-codeql-init-v1?view=azure-pipelines
      # If you're using a self-hosted agent to run CodeQL, use `enableAutomaticCodeQLInstall` to automatically use the latest CodeQL bits on your agent:
      enableAutomaticCodeQLInstall: true

#   Add your custom build steps here
# - Ensure that all code to be scanned is compiled (often using a `clean` command to ensure you're building from a clean state).
# - Disable the use of any build caching mechanisms as this can interfere with CodeQL's ability to capture all the necessary data during the build.
# - Disable the use of any distributed/multithreaded/incremental builds as CodeQL needs to monitor executions of the compiler to construct an accurate representation of the application.
# - For dependency scanning, ensure you have a package restore step for more accurate results.

# If you had a Maven app:
#   - task: Maven@4
#     inputs:
#       mavenPomFile: 'pom.xml'
#       goals: 'clean package'
#       publishJUnitResults: true
#       testResultsFiles: '**/TEST-*.xml'
#       javaHomeOption: 'JDKVersion'
#       jdkVersionOption: '1.17'
#       mavenVersionOption: 'Default'

# Or a general script:
#   - script: |
#       echo "Run, Build Application using script"
#       ./location_of_script_within_repo/buildscript.sh

  - task: AdvancedSecurity-Dependency-Scanning@1 # More details on this task: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-dependency-scanning-v1?view=azure-pipelines

  - task: AdvancedSecurity-Codeql-Analyze@1 # More details on this task: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-codeql-analyze-v1?view=azure-pipelines

Dica

A análise do CodeQL para Kotlin/Swift está atualmente na versão beta. Durante a versão beta, a análise dessa linguagem será menos abrangente do que a análise do CodeQL de outras linguagens. Use java para analisar o código escrito em Java, Kotlin ou ambos. Use javascript para analisar o código escrito em JavaScript, TypeScript ou ambos.

Se a linguagem especificada for cpp, java, csharp ou swift as etapas de build personalizadas forem obrigatórias.

Configurar as anotações da solicitação de pull

No caso de verificação da dependência e verificação de código, as anotações são configuradas automaticamente para solicitações de pull onde uma política de validação de compilação aplica-se com tarefas de verificação de dependência e/ou verificação de código incluídas em seu pipeline. Para obter mais informações sobre configurar políticas de validação de compilação, consulte Validação de compilação.

Para obter mais informações sobre como resolver alertas de ramificações de solicitação de pull, consulte Gerenciamento alertas de verificação de dependência em solicitações de pull e Gerenciamento alertas de verificação de código em solicitações de pull.

Se, por qualquer motivo, você precisar desabilitar a Segurança Avançada, todos os alertas e o estado dos alertas serão mantidos na guia Segurança Avançada para a próxima vez que você reabilitar a Segurança Avançada para seu repositório.

Próximas etapas