Dela via


Konfigurera GitHub Advanced Security för Azure DevOps

GitHub Advanced Security för Azure DevOps lägger till GitHub Advanced Securitys uppsättning säkerhetsfunktioner till Azure Repos.

GitHub Advanced Security för Azure DevOps innehåller:

  • Push-skydd för hemlig genomsökning: Kontrollera om kod push-överföring innehåller incheckningar som exponerar hemligheter, till exempel autentiseringsuppgifter
  • Genomsökning av lagringsplats för hemlig genomsökning: sök igenom lagringsplatsen och leta efter exponerade hemligheter som har begåtts av misstag
  • Genomsökning av beroenden – sök efter kända sårbarheter i öppen källkod beroenden (direkt och transitiv)
  • Kodgenomsökning – använd CodeQL-motorn för statisk analys för att identifiera programsårbarheter på kodnivå, till exempel SQL-inmatning och förbikoppling av autentisering

För närvarande är GitHub Advanced Security för Azure DevOps endast tillgängligt för Azure DevOps Services och det finns inga planer på att ta den här produkten till Azure DevOps Server. GitHub Advanced Security för Azure DevOps är också endast tillgängligt för git-lagringsplatser med kod.

GitHub Advanced Security för Azure DevOps fungerar med Azure Repos. Om du vill använda GitHub Advanced Security med GitHub-lagringsplatser läser du GitHub Advanced Security.

Förutsättningar

Du måste ha behörigheter allokerade som medlem i gruppen Administratörer för projektsamling. Information om hur du lägger till medlemmar i gruppen Projektsamlingsadministratörer eller ändrar en behörighet på projektsamlingsnivå finns i Ändra behörigheter på projektsamlingsnivå.

Extra krav för lokalt installerade agenter

Om din organisation använder lokalt installerade agenter finns det fler krav:

  • Lägg till dessa URL:er i listan över tillåtna för att tillåta att beroendegenomsökningsaktiviteten hämtar rådgivande data för sårbarhet. Läs mer om Tillåtna IP-adresser och domän-URL:er.
Domän-URL beskrivning
https://governance.dev.azure.com För organisationer som använder dev.azure.com domänen för att få åtkomst till sin DevOps-instans
https://dev.azure.com För organisationer som använder dev.azure.com domänen för att få åtkomst till sin DevOps-instans
https://advsec.dev.azure.com För organisationer som använder dev.azure.com domänen för att få åtkomst till sin DevOps-instans
https://{organization_name}.governance.visualstudio.com För organisationer som använder domänen {organization_name}.visualstudio.com för att få åtkomst till sin DevOps-instans
https://{organization_name}.visualstudio.com  För organisationer som använder domänen {organization_name}.visualstudio.com för att få åtkomst till sin DevOps-instans
https://{organization_name}.advsec.visualstudio.com För organisationer som använder domänen {organization_name}.visualstudio.com för att få åtkomst till sin DevOps-instans
  • Kör en kompatibel version av .NET-körningen (för närvarande .NET 8.x). Om det inte finns någon kompatibel version på agenten laddar beroendegenomsökning ned .NET.

  • Kontrollera att CodeQL-paketet är installerat i agentverktygets cacheminne på din agent. Du kan använda variabeln enableAutomaticCodeQLInstall: true med pipelineaktiviteten Advanced-Security-CodeQL@1 för YAML-pipelines eller markera kryssrutan Enable automatic CodeQL detection and installation för klassiska pipelines. Anvisningar för manuell installation finns i Kodgenomsökning för GitHub Advanced Security för Azure DevOps.

Aktivera GitHub Advanced Security

Du kan aktivera Avancerad säkerhet på organisations-, projekt- eller lagringsplatsnivå. För att få åtkomst till var och en av genomsökningsverktygen och resultaten måste du först aktivera Avancerad säkerhet. När du aktiverar Avancerad säkerhet blockeras alla framtida push-meddelanden som innehåller hemligheter till en lagringsplats med den här principen aktiverade, och genomsökning av lagringsplatshemligheter sker i bakgrunden.

Registrering på lagringsplatsnivå

  1. Gå till dina Projektinställningar för ditt Azure DevOps-projekt.
  2. Välj Lagringsplatser>.
  3. Välj den lagringsplats som du vill aktivera Avancerad säkerhet för.
  4. Välj Aktivera och Börja fakturering för att aktivera Avancerad säkerhet. Nu visas en sköldikon i lagringsplatsens vy för alla lagringsplatser med Advanced Security aktiverat.

Skärmbild av aktivering av GitHub Advanced Security.

Onboarding på projektnivå

  1. Gå till dina Projektinställningar för ditt Azure DevOps-projekt.
  2. Välj Lagringsplatser.
  3. Välj fliken Inställningar.
  4. Välj Aktivera alla och se en uppskattning för antalet aktiva incheckningar för projektet.
  5. Välj Börja fakturering för att aktivera Avancerad säkerhet för varje befintlig lagringsplats i projektet.
  6. Du kan också välja Aktivera Avancerad säkerhet automatiskt för nya lagringsplatser så att alla nyligen skapade lagringsplatser har Advanced Security aktiverat när de skapas.

Skärmbild av aktivering på projektnivå för Avancerad säkerhet.

Registrering på organisationsnivå

  1. Gå till organisationsinställningarna för din Azure DevOps-organisation.
  2. Välj Databaser.
  3. Välj Aktivera alla och se en uppskattning för antalet aktiva incheckningar för din organisation visas.
  4. Välj Börja fakturering för att aktivera Avancerad säkerhet för varje befintlig lagringsplats i varje projekt i din organisation.
  5. Du kan också välja Aktivera Avancerad säkerhet automatiskt för nya lagringsplatser så att alla nyligen skapade projekt har Advanced Security aktiverat när de skapas.

Skärmbild av aktivering på organisationsnivå för Avancerad säkerhet.

Konfigurera genomsökning av hemlighet

Push-skydd för hemlig genomsökning och genomsökning av lagringsplatser aktiveras automatiskt när du aktiverar Avancerad säkerhet. Du kan aktivera eller inaktivera hemligt push-skydd från lagringsplatsens inställningssida.

Skärmbild av aktivering av push-skydd.

Som nämnts startas genomsökningen av lagringsplatsen för hemlig genomsökning automatiskt när avancerad säkerhet aktiveras för en vald lagringsplats.

Konfigurera beroendegenomsökning

Beroendegenomsökning är ett pipelinebaserat genomsökningsverktyg. Resultaten aggregeras per lagringsplats. Vi rekommenderar att du lägger till beroendegenomsökningsaktiviteten i alla pipelines som du vill ska genomsökas.

Dricks

För de mest exakta genomsökningsresultaten måste du lägga till beroendegenomsökningsaktiviteten genom att följa stegen för att skapa och/eller paketåterställning i en pipeline som skapar den kod som du vill genomsöka.

Lägg till uppgiften Advanced Security Dependency Scanning task (AdvancedSecurity-Dependency-Scanning@1) direkt i YAML-pipelinefilen eller välj uppgiften Advanced Security Dependency Scanning från aktivitetsassistenten.

Skärmbild av konfigurationen av pipelinen för beroendegenomsökning för YAML.

Konfigurera kodgenomsökning

Kodgenomsökning är också ett pipelinebaserat genomsökningsverktyg där resultaten aggregeras per lagringsplats.

Dricks

Vi rekommenderar att du lägger till kodgenomsökningsaktiviteten i en separat klonad pipeline för din huvudsakliga produktionspipeline eller skapar en ny pipeline. Det beror på att kodgenomsökning kan vara en mer tidsintensiv bygguppgift.

Lägg till aktiviteterna i följande ordning:

  1. Avancerad säkerhet Initiera CodeQL (AdvancedSecurity-Codeql-Init@1)
  2. Dina anpassade byggsteg
  3. Advanced Security Utför CodeQL-analys (AdvancedSecurity-Codeql-Analyze@1)

Skärmbild av konfiguration av pipeline för kodgenomsökning för YAML.

Dessutom måste du ange vilka språk som du analyserar i uppgiften Initiera CodeQL. En kommaavgränsad lista kan användas för att analysera flera språk samtidigt. De språk som stöds är csharp, cpp, go, java, javascript, python, ruby, swift. Om du använder lokalt installerade agenter kan du också lägga till variabeln enableAutomaticCodeQLInstall: true för att automatiskt installera de senaste CodeQL-bitarna för din agent.

Här är ett exempel på en startpipeline:

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

Dricks

CodeQL-analys för Kotlin/Swift är för närvarande i betaversion. Under betaversionen blir analysen av dessa språk mindre omfattande än CodeQL-analys av andra. Använd java för att analysera kod som skrivits i Java, Kotlin eller båda. Använd javascript för att analysera kod som skrivits i JavaScript, TypeScript eller båda.

Om det angivna språket är cpp, java, csharp eller swift om anpassade byggsteg krävs.

Konfigurera anteckningar för pull-begäranden

För både beroendegenomsökning och kodgenomsökning konfigureras anteckningar automatiskt för pull-begäranden där en byggverifieringsprincip tillämpas med beroendegenomsökning och/eller kodgenomsökningsuppgifter som ingår i din pipeline. Mer information om hur du konfigurerar principer för byggvalidering finns i Skapa validering.

Pull-begärandeanteckningar kräver också en avancerad säkerhetsgenomsökning på standardgrenen och målgrenen innan du skannar källgrenen (pull-begäran). Mer information om hur du löser aviseringar för pull-begärandegrenar finns i Hantera beroendegenomsökningsaviseringar vid pull-begäranden och Hantera kodgenomsökningsaviseringar vid pull-begäranden.

Om du av någon anledning behöver inaktivera Avancerad säkerhet behålls eventuella aviseringar och status för aviseringar på fliken Avancerad säkerhet nästa gång du återaktiverar Avancerad säkerhet för lagringsplatsen.

Nästa steg