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
  • Verificação de segredos no repositório: examine o seu repositório e procure por segredos expostos 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

Você pode trazer a proteção da Segurança Avançada para sua empresa com a flexibilidade para habilitar o nível certo de proteção para seus repositórios. O GitHub Advanced Security for Azure DevOps está disponível como GitHub Secret Protection for Azure DevOps e GitHub Code Security for Azure DevOps.

A Proteção Secreta inclui os seguintes recursos:

  • Proteção push para prevenir vazamentos de segredos antes de acontecerem
  • Alertas de varredura de segredos com notificações, para detectar vulnerabilidades existentes antes que se tornem um problema.
  • Visão geral de segurança, que fornece informações sobre o nível de risco e proteção de segurança da sua organização

O Code Security inclui os seguintes recursos:

  • Alertas de dependência, para encontrar vulnerabilidades em dependências de código aberto
  • Verificação do CodeQL, para detetar vulnerabilidades diretamente no seu código
  • Descobertas de segurança para ferramentas de terceiros
  • Visão geral de segurança, que fornece informações sobre o nível de risco e proteção de segurança da sua organizaçã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 construção de análise de dependências irá transferir .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 verificação 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.

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

Você pode habilitar a Proteção Secreta ou a Segurança de Código no nível da organização, projeto ou repositório.

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. Alterne entre Proteção Secreta ou Segurança de Código.
  5. Selecione Iniciar cobrança. Um ícone de escudo agora aparece na visualização do repositório para qualquer repositório com qualquer produto habilitado.
  6. Para habilitar opcionalmente a configuração padrão da varredura de dependência, selecione Opções e habilite a caixa de seleção Configuração padrão da verificação de dependência.

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 veja aparecer uma estimativa do número de committers ativos por produto para o seu projeto.
  5. Ative os produtos desejados da Proteção Secreta ou da Segurança de Código.
  6. Selecione Iniciar cobrança para ativar a Proteção Secreta e/ou Segurança de Código para cada repositório existente em seu projeto.
  7. Opcionalmente, alterne Ativar automaticamente a Segurança Avançada para novos repositórios para que todos os repositórios recém-criados tenham a Proteção Secreta ou a Segurança de Código ativada após a 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 do número de committers ativos por produto para a sua organização.
  4. Ative os produtos desejados da Proteção Secreta ou da Segurança de Código.
  5. Selecione Iniciar cobrança para ativar a Segurança Avançada para cada repositório existente em cada projeto em sua organização.
  6. Opcionalmente, alterne Ativar automaticamente a Segurança Avançada para novos repositórios para que todos os projetos recém-criados tenham a Proteção Secreta ou a Segurança de Código 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 verificação de segredos

A proteção push de varredura secreta e a varredura de repositório são ativadas automaticamente quando você ativa a Proteção Secreta. 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 Proteção Secreta para um repositório selecionado.

Configurar a análise de dependências

Para obter acesso aos recursos de verificação de dependência, você precisa do produto Code Security habilitado para seu repositório.

A análise de dependência é uma ferramenta de análise baseada em pipeline. Os resultados são agregados por repositório. Para verificar sua ramificação padrão, você pode utilizar a configuração "Verificar dependências vulneráveis" na página de configurações do repositório. Isso incluirá automaticamente a tarefa de análise de dependências em qualquer pipeline que tenha como alvo a sua ramificação padrão, ou qualquer build de pull request que tenha como alvo a sua ramificação padrão.

Para uma configuração mais avançada ou se você quiser verificar todas as ramificações, recomendamos que você adicione a tarefa de verificação de dependência a todos os pipelines que deseja verificar. Consulte Análise de dependências para a Segurança Avançada do GitHub para o Azure DevOps para mais detalhes.

Configurar a análise de código

Para obter acesso aos recursos de verificação de código, você precisa do produto Code Security habilitado para seu repositório.

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

Além disso, especifique qual idioma você está analisando na Initialize CodeQL tarefa. Se o idioma especificado for swift, etapas de compilação personalizadas serão necessárias.

Gorjeta

  • 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 você estiver executando em um agente auto-hospedado, selecione a Enable automatic CodeQL detection and installation opção para usar automaticamente os bits CodeQL mais recentes em seu agente se você não tiver instalado manualmente o pacote CodeQL mais recente no cache de ferramentas do agente.

Para gerar alertas, execute a sua primeira análise num pipeline que inclua as tarefas de varredura de código inclusas.

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.