Partilhar via


Configurar a Segurança Avançada do GitHub para o Azure DevOps

O GitHub Advanced Security for Azure DevOps adiciona o conjunto de recursos de segurança do GitHub Advanced Security ao Azure Repos e inclui os seguintes recursos:

  • Proteção por push de varredura secreta: verifique se os pushes de código incluem confirmações que expõem segredos, como credenciais
  • Varredura secreta de repositório: verifique seu repositório e procure segredos expostos que foram cometidos acidentalmente
  • Verificação de dependência – pesquisa de vulnerabilidades conhecidas em dependências de código aberto (direto e transitivo)
  • Verificação de código – use o mecanismo de análise estática CodeQL para identificar vulnerabilidades de aplicações a nível de código, como injeção de SQL e bypass à autenticação

O GitHub Advanced Security for Azure DevOps só está disponível para os Serviços de DevOps do Azure e especificamente para repositórios Git de código.

O GitHub Advanced Security for Azure DevOps funciona com o Azure Repos. Para usar a Segurança Avançada do GitHub com repositórios do GitHub, consulte Segurança Avançada do GitHub.

Pré-requisitos

Categoria Requerimentos
Permissões - Para visualizar um resumo de todos os alertas para um repositório: Colaborador permissões para o repositório.
- Para descartar alertas em Segurança Avançada: permissões de administrador do projeto.
- Para gerir permissões em Segurança Avançada: Membro do grupo Administradores de Coleção de Projetos ou Segurança Avançada: gerir configurações permissões definidas como Permitir.

Para obter mais informações sobre permissões de Segurança Avançada, consulte Gerenciar permissões de Segurança Avançada.

Pré-requisitos extras para agentes auto-hospedados

Se sua organização usa agentes auto-hospedados, adicione as seguintes URLs à sua Lista de permissões para que a tarefa de verificação de dependência possa buscar dados de aviso de vulnerabilidade. Para obter mais informações, consulte 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 sua instância de DevOps
https://dev.azure.com Para organizações que usam o domínio dev.azure.com para acessar sua instância de DevOps
https://advsec.dev.azure.com Para organizações que usam o domínio dev.azure.com para acessar sua instância de DevOps
https://{organization_name}.governance.visualstudio.com Para organizações que usam o domínio {organization_name}.visualstudio.com para acessar sua instância de DevOps
https://{organization_name}.visualstudio.com  Para organizações que usam o domínio {organization_name}.visualstudio.com para acessar sua instância de DevOps
https://{organization_name}.advsec.visualstudio.com Para organizações que usam o domínio {organization_name}.visualstudio.com para acessar sua instância de DevOps
  • Execute uma versão compatível do tempo de execução do .NET (atualmente .NET 8.x). Se uma versão compatível não estiver presente no agente, a tarefa de compilação de análise de dependências irá transferir o .NET.

  • Certifique-se de que o pacote CodeQL esteja instalado no cache da ferramenta do agente em seu agente. Você pode utilizar a variável enableAutomaticCodeQLInstall: true com a tarefa de pipeline AdvancedSecurity-Codeql-Init@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 para Segurança Avançada do GitHub para Azure DevOps.

Ativar a Segurança Avançada do GitHub

Você pode habilitar a Segurança Avançada no nível da organização, projeto ou repositório. Para acessar cada uma das ferramentas de verificação e resultados, você precisa primeiro ativar a Segurança Avançada. Depois de ativar a Segurança Avançada, todos os envios futuros que contenham segredos para um repositório com esta política ativada são bloqueados e a verificação de segredos do repositório acontece em segundo plano.

Integração no nível do repositório

  1. Vá para as configurações do Project para seu projeto do Azure DevOps.
  2. Selecione Repositórios>Repositórios.
  3. Selecione o repositório para o qual deseja ativar a Segurança Avançada.
  4. Selecione Ativar e Iniciar a faturação para ativar a Segurança Avançada. Um ícone de escudo agora aparece na visualização do repositório para qualquer repositório com Segurança Avançada ativada.

Captura de tela mostrando a ativação do GitHub Advanced Security.

Integração no nível do projeto

  1. Vá para as configurações do Project para seu projeto do Azure DevOps.
  2. Selecione Repos.
  3. Selecione o separador Definições.
  4. Selecione Ativar tudo e verá aparecer uma estimativa do número de committers ativos para o 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 Ativar 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 ativada na criação.

Captura de tela da ativação no nível do projeto para Segurança Avançada.

Integração ao nível da organização

  1. Vá para Configurações da Organização da sua organização do Azure DevOps.
  2. Selecione Repositórios.
  3. Selecione Ativar tudo e veja aparecer uma estimativa para o número de committers ativos da sua organização.
  4. Selecione Iniciar cobrança para ativar a Segurança Avançada para cada repositório existente em cada projeto em sua organização.
  5. Opcionalmente, selecione Ativar automaticamente a Segurança Avançada para novos repositórios para que todos os projetos recém-criados tenham a Segurança Avançada ativada após a criação.

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

Configurar a análise de segredos

A verificação secreta, a proteção por push e a verificação do repositório são ativadas automaticamente quando você ativa a Segurança Avançada. Você pode ativar ou desativar a proteção secreta por push na página de configurações do repositório.

Captura de ecrã a mostrar a ativação da proteção push.

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

Configurar a análise de dependências

A análise de dependência é uma ferramenta de análise baseada em pipeline. Os resultados são agregados por repositório. Recomendamos que você adicione a tarefa de verificação de dependência a todos os pipelines que deseja verificar.

Gorjeta

Para obter os resultados de verificação mais precisos, adicione a tarefa de verificação de dependência após as etapas de compilação ou a etapa de restauração do pacote em um pipeline que cria o código que você deseja verificar.

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 no assistente de tarefas.

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

Configurar a análise de código

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

Gorjeta

A verificação de código pode ser uma tarefa de compilação mais demorada, portanto, recomendamos que você adicione a tarefa de verificação de código a um pipeline clonado separado do pipeline de produção principal ou crie um novo pipeline.

Adicione as tarefas na seguinte ordem:

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

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

Além disso, especifique qual idioma você está analisando na Initialize CodeQL tarefa. Você pode usar uma lista separada por vírgulas para analisar vários idiomas ao mesmo tempo. Os idiomas suportados são csharp, cpp, go, java, javascript, python, ruby, swift. Se você estiver utilizando agentes auto-hospedados, você também pode adicionar a enableAutomaticCodeQLInstall: true variável para instalar automaticamente os bits CodeQL mais recentes para seu agente.

Aqui está um exemplo de fluxo de trabalho 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

Gorjeta

A análise CodeQL para Kotlin/Swift está atualmente em fase beta. Durante a versão beta, a análise dessas linguagens é menos abrangente do que a análise CodeQL de outras.

  • Use java para analisar código escrito em Java, Kotlin ou ambos.
  • Use javascript para analisar código escrito em JavaScript, TypeScript ou ambos.

Se o idioma especificado for cpp, java, csharp ou swift, as etapas de compilação personalizadas serão necessárias.

Configurar anotações de solicitação pull

Para a varredura de dependências e análise de código, as anotações são configuradas automaticamente para as solicitações pull onde uma política de validação de build se aplica, com tarefas de varredura de dependências e/ou análise de código incluídas no seu pipeline. Para obter mais informações sobre como configurar políticas de validação de compilação, consulte Validação de compilação.

As anotações de pull request também exigem uma análise de Segurança Avançada no branch padrão e no branch de destino antes de então analisar o branch de origem (pull request). Para obter mais informações sobre como resolver alertas para ramificações de pull request, consulte Gerir alertas de análise de dependências em pull requests e Gerir alertas de análise de código em pull requests.

Para desativar a Segurança Avançada, todos os alertas e estados de alertas são retidos na guia Segurança Avançada para a próxima vez que você reativar a Segurança Avançada para seu repositório.