Configurar GitHub Advanced Security for Azure DevOps

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

O GitHub Advanced Security for Azure inclui:

  • 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 aplicativos no nível de código, como injeção de SQL e bypass de autenticação

No momento, o GitHub Advanced Security for Azure DevOps está disponível apenas para os Serviços de DevOps do Azure e não há planos de trazer esse produto para o Azure DevOps Server.

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

Pré-requisitos

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

Pré-requisitos extras para agentes auto-hospedados

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

  • Adicione esses URLs à sua Lista de permissões para permitir que a tarefa de verificação de dependência busque dados de aviso de vulnerabilidade. Saiba mais sobre Endereços IP permitidos e URLs de domínio.
URL do domínio Description
https://governance.dev.azure.com/{organization_name} Para organizações que usam o domínio dev.azure.com para acessar sua instância de DevOps
https://dev.azure.com/{organization_name} Para organizações que usam o domínio dev.azure.com para acessar sua instância de DevOps
https://advsec.dev.azure.com/{organization_name} 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 6.0.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 enableAutomaticCodeQLInstall: true variável com a Advanced-Security-CodeQL@1 tarefa de pipeline para pipelines YAML ou selecionar a caixa de Enable automatic CodeQL detection and installation seleção 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 de>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 veja uma estimativa para o número de committers ativos para o seu projeto aparecer.
  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 as configurações da sua organização para sua organização do Azure DevOps.
  2. Selecione Repositórios.
  3. Selecione Ativar tudo e veja uma estimativa para o número de committers ativos para sua organização aparecer.
  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 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.

Gorjeta

Para obter os resultados de verificação mais precisos, certifique-se de adicionar a tarefa de verificação de dependência seguindo as etapas de compilação e/ou a etapa de restauração de pacote de 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

É recomendável adicionar a tarefa de verificação de código a um pipeline clonado separado 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 compilação mais demorada.

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 Execute 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, você precisa especificar qual(is) idioma(s) você está analisando na tarefa Inicializar CodeQL. Uma lista separada por vírgulas pode ser usada 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 pipeline inicial:

trigger:
  - main

pool:
  # Additional hosted image options are available: https://video2.skills-academy.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://video2.skills-academy.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://video2.skills-academy.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://video2.skills-academy.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 versão beta. Durante o beta, a análise dessas linguagens será 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 forem necessárias etapas de compilação personalizadas.

Se, por qualquer motivo, você precisar desativar a Segurança Avançada, quaisquer alertas e estado de alertas serão mantidos para a próxima vez que você reativar a Segurança Avançada para seu repositório.

Próximos passos