GitHub Advanced Security voor Azure DevOps configureren

GitHub Advanced Security voor Azure DevOps voegt de suite met beveiligingsfuncties van GitHub Advanced Security toe aan Azure-opslagplaatsen.

GitHub Advanced Security for Azure omvat:

  • Beveiliging tegen het scannen van geheimen: controleer of codepushes doorvoeringen bevatten waarmee geheimen, zoals referenties, worden weergegeven
  • Scannen van geheime opslagplaatsen: scan uw opslagplaats en zoek naar blootgestelde geheimen die per ongeluk zijn doorgevoerd
  • Afhankelijkheid scannen: zoeken naar bekende beveiligingsproblemen in opensource-afhankelijkheden (direct en transitief)
  • Codescan: gebruik de engine voor statische analyse van CodeQL om beveiligingsproblemen op toepassingsniveau op codeniveau te identificeren, zoals SQL-injectie en verificatie-bypass

Op dit moment is GitHub Advanced Security voor Azure DevOps alleen beschikbaar voor Azure DevOps Services en zijn er geen plannen om dit product naar Azure DevOps Server te brengen.

GitHub Advanced Security voor Azure DevOps werkt met Azure-opslagplaatsen. Als u GitHub Advanced Security wilt gebruiken met GitHub-opslagplaatsen, raadpleegt u GitHub Advanced Security.

Vereisten

U moet machtigingen hebben die zijn toegewezen als lid van de groep Projectverzameling Beheer istrators. Zie Machtigingen op projectverzamelingsniveau wijzigen voor meer informatie over het toevoegen van leden aan de groep Berheerders van projectverzamelingen of om een machtiging op projectverzamelingsniveau te wijzigen.

Extra vereisten voor zelf-hostende agents

Als uw organisatie zelf-hostende agents gebruikt, zijn er meer vereisten:

  • Voeg deze URL's toe aan de acceptatielijst om de taak voor het scannen van afhankelijkheden toe te staan om adviesgegevens over beveiligingsproblemen op te halen. Meer informatie over toegestane IP-adressen en domein-URL's.
Domein-URL Beschrijving
https://governance.dev.azure.com/{organization_name} Organisaties die het dev.azure.com-domein gebruiken om toegang te krijgen tot hun DevOps-exemplaar
https://dev.azure.com/{organization_name} Organisaties die het dev.azure.com-domein gebruiken om toegang te krijgen tot hun DevOps-exemplaar
https://advsec.dev.azure.com/{organization_name} Organisaties die het dev.azure.com-domein gebruiken om toegang te krijgen tot hun DevOps-exemplaar
https://{organization_name}.governance.visualstudio.com/ Organisaties die het domein {organization_name}.visualstudio.com gebruiken voor toegang tot hun DevOps-exemplaar
https://{organization_name}.visualstudio.com  Organisaties die het domein {organization_name}.visualstudio.com gebruiken voor toegang tot hun DevOps-exemplaar
https://{organization_name}.advsec.visualstudio.com/ Organisaties die het domein {organization_name}.visualstudio.com gebruiken voor toegang tot hun DevOps-exemplaar
  • Voer een compatibele versie van de .NET-runtime uit (momenteel .NET 6.0.x). Als er geen compatibele versie aanwezig is op de agent, downloadt de build-taak voor het scannen van afhankelijkheden .NET.

  • Installeer de CodeQL-bundel in de cache van het agenthulpprogramma door gebruik te maken van het installatiescript voor uw architectuur, dat beschikbaar is op GitHub. Voor deze scripts moet de $AGENT_TOOLSDIRECTORY omgevingsvariabele worden ingesteld op de locatie van de map agenthulpprogramma's op de agent, bijvoorbeeld C:/agent/_work/_tool. U kunt ook handmatig de volgende stappen implementeren:

    1. Kies de nieuwste CodeQL-releasebundel van GitHub.
    2. Download en pak de bundel uit naar de volgende map in de map van het agenthulpprogramma, meestal onder_work/_tool: ./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/ Met behulp van de huidige release van v2.16.0, wordt de mapnaam een ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/titel. Meer informatie over de map met agenthulpprogramma's.
    3. Maak een leeg bestand met x64.complete de titel in de ./CodeQL/0.0.0-[codeql-release-bundle-tag] map. In het vorige voorbeeld moet het pad naar het eindbestand naar het x64.complete bestand zijn ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete.

Geavanceerde beveiliging van GitHub inschakelen

U kunt Advanced Security inschakelen op organisatie-, project- of opslagplaatsniveau. Als u toegang wilt krijgen tot elk van de scanhulpprogramma's en resultaten, moet u eerst Advanced Security inschakelen. Zodra u Geavanceerde beveiliging hebt ingeschakeld, worden toekomstige pushes die geheimen bevatten naar een opslagplaats waarvoor dit beleid is ingeschakeld, geblokkeerd en wordt het scannen van opslagplaatsgeheimen op de achtergrond uitgevoerd.

Onboarding op opslagplaatsniveau

  1. Ga naar uw Project-instellingen voor uw Azure DevOps-project.
  2. Selecteer Opslagplaatsen voor opslagplaatsen>.
  3. Selecteer de opslagplaats waarvoor u Advanced Security wilt inschakelen.
  4. Selecteer Inschakelen en Facturering starten om Advanced Security te activeren. Er wordt nu een schildpictogram weergegeven in de opslagplaatsweergave voor elke opslagplaats waarvoor Geavanceerde beveiliging is ingeschakeld.

Screenshot of enabling GitHub Advanced Security.

Onboarding op projectniveau

  1. Ga naar uw Project-instellingen voor uw Azure DevOps-project.
  2. Selecteer Opslagplaatsen.
  3. Selecteer het tabblad Instellingen.
  4. Selecteer Alles inschakelen en u ziet een schatting voor het aantal actieve doorvoerers voor uw project.
  5. Selecteer Facturering starten om Advanced Security te activeren voor elke bestaande opslagplaats in uw project.
  6. Selecteer desgewenst Automatisch geavanceerde beveiliging inschakelen voor nieuwe opslagplaatsen, zodat nieuwe opslagplaatsen Advanced Security zijn ingeschakeld bij het maken.

Screenshot of project-level enablement for Advanced Security.

Onboarding op organisatieniveau

  1. Ga naar de organisatie-instellingen voor uw Azure DevOps-organisatie.
  2. Selecteer Opslagplaatsen.
  3. Selecteer Alles inschakelen en u ziet een schatting voor het aantal actieve doorvoerers voor uw organisatie.
  4. Selecteer Facturering starten om Advanced Security te activeren voor elke bestaande opslagplaats in elk project in uw organisatie.
  5. Selecteer desgewenst Automatisch geavanceerde beveiliging inschakelen voor nieuwe opslagplaatsen, zodat nieuwe projecten Advanced Security zijn ingeschakeld bij het maken.

Screenshot of org-level enablement for Advanced Security.

Geheimen scannen configureren

Scannen van geheimen voor pushbeveiliging en scannen van opslagplaatsen wordt automatisch ingeschakeld wanneer u Geavanceerde beveiliging inschakelt. U kunt geheime pushbeveiliging in- of uitschakelen vanaf de pagina met instellingen van de opslagplaats.

Screenshot of enabling push protection.

Zoals vermeld, wordt scannen van geheime opslagplaatsen automatisch gestart bij het inschakelen van Geavanceerde beveiliging voor een geselecteerde opslagplaats.

Scannen op afhankelijkheden instellen

Afhankelijkheid scannen is een hulpprogramma voor scannen op basis van pijplijnen. De resultaten worden geaggregeerd per opslagplaats. Het is raadzaam om de scantaak voor afhankelijkheden toe te voegen aan alle pijplijnen die u wilt scannen.

Tip

Voor de meest nauwkeurige scanresultaten moet u de scantaak voor afhankelijkheden toevoegen volgens de buildstappen van een pijplijn waarmee de code wordt gebouwd die u wilt scannen.

Voeg de taak Advanced Security Dependency Scanning (AdvancedSecurity-Dependency-Scanning@1) rechtstreeks toe aan uw YAML-pijplijnbestand of selecteer de taak Advanced Security Dependency Scanning in de taakassistent.

Screenshot of dependency scanning pipeline setup for YAML.

Scannen van code instellen

Codescans zijn ook een hulpprogramma voor scannen op basis van pijplijnen waarbij de resultaten per opslagplaats worden samengevoegd.

Tip

Het is raadzaam om de codescantaak toe te voegen aan een afzonderlijke, gekloonde pijplijn van uw hoofdproductiepijplijn of om een nieuwe pijplijn te maken. Dit komt doordat codescans een tijdrovendere buildtaak kunnen zijn.

Voeg de taken in de volgende volgorde toe:

  1. Advanced Security Initialize CodeQL (AdvancedSecurity-Codeql-Init@1)
  2. Uw aangepaste buildstappen
  3. Advanced Security Perform CodeQL Analysis (AdvancedSecurity-Codeql-Analyze@1)

Screenshot of code scanning pipeline setup for YAML.

Daarnaast moet u opgeven welke taal(en) u analyseert in de Initialize CodeQL-taak. Een door komma's gescheiden lijst kan worden gebruikt om meerdere talen tegelijk te analyseren. De ondersteunde talen zijn csharp, cpp, go, java, javascript, python, ruby, swift.

Hier volgt een voorbeeld van een starterspijplijn:

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. 

# 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

Tip

CodeQL-analyse voor Kotlin/Swift is momenteel bèta. Tijdens de bètaversie is analyse van deze talen minder uitgebreid dan CodeQL-analyse van andere talen. Gebruik java deze functie om code te analyseren die is geschreven in Java, Kotlin of beide. Gebruik javascript dit om code te analyseren die is geschreven in JavaScript, TypeScript of beide.

Als de opgegeven taal is cpp, java, csharp of aangepaste of AutoBuildswift buildstappen zijn vereist. Als autobuild in andere talen is opgenomen, wordt de stap voltooid zonder actie uit te voeren.

Als u om welke reden dan ook Geavanceerde beveiliging moet uitschakelen, worden waarschuwingen en status van waarschuwingen bewaard voor de volgende keer dat u Advanced Security voor uw opslagplaats opnieuw inschakelt.

Volgende stappen