Partilhar via


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.

  • Instale o pacote CodeQL no cache da ferramenta do agente utilizando o script de configuração para sua arquitetura, disponível no GitHub. Esses scripts exigem que a $AGENT_TOOLSDIRECTORY variável de ambiente seja definida para o local do diretório de ferramentas do agente no agente, por exemplo. C:/agent/_work/_tool Como alternativa, você pode implementar manualmente as seguintes etapas:

    1. Escolha o pacote de versão mais recente do CodeQL no GitHub.
    2. Baixe e descompacte o pacote para o seguinte diretório dentro do diretório da ferramenta do agente, normalmente localizado em _work/_tool: ./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/. Usando a versão atual do , o nome da v2.16.0pasta seria intitulado ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/. Saiba mais sobre o diretório de ferramentas do agente.
    3. Crie um arquivo vazio intitulado x64.complete dentro da ./CodeQL/0.0.0-[codeql-release-bundle-tag] pasta. Usando o exemplo anterior, o caminho do arquivo final para o x64.complete arquivo deve ser ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete.

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 você verá 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 você verá 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ê precisará 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.

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

#   Add your custom build steps here
# - Ensure that all code to be scanned is compiled (often using a `clean` command to ensure you are 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 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 personalizadas ou AutoBuild de compilação. Para outros idiomas, se o AutoBuild estiver incluído, a etapa será concluída com êxito sem executar nenhuma ação.

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