Configurer GitHub Advanced Security pour Azure DevOps

GitHub Advanced Security pour Azure DevOps ajoute la suite de fonctionnalités de sécurité de GitHub Advanced Security à Azure Repos.

GitHub Advanced Security pour Azure inclut :

  • Protection push de l’analyse des secrets : vérifiez si le code push inclut des commits qui exposent des secrets tels que des informations d’identification
  • Analyse du référentiel d’analyse des secrets : analysez votre référentiel et recherchez les secrets exposés qui ont été validés accidentellement
  • Analyse des dépendances : recherchez les vulnérabilités connues dans les dépendances open source (directes et transitives)
  • Analyse du code : utilisez le moteur d’analyse statique CodeQL pour identifier les vulnérabilités d’application au niveau du code, telles que l’injection SQL et le contournement de l’authentification

Pour le moment, GitHub Advanced Security for Azure DevOps n’est disponible que pour Azure DevOps Services et il n’est pas prévu d’introduire ce produit sur Azure DevOps Server.

GitHub Advanced Security pour Azure DevOps fonctionne avec Azure Repos. Si vous souhaitez utiliser GitHub Advanced Security avec des référentiels GitHub, consultez GitHub Advanced Security.

Prérequis

Vous devez disposer d’autorisations allouées en tant que membre du groupe Administrateurs de la collection Project. Pour ajouter des membres au groupe Administrateurs de collection de projets ou modifier une autorisation au niveau de la collection de projets, consultez Modifier les autorisationsau niveau de la collection de projets.

Prérequis supplémentaires pour les agents auto-hébergés

Si votre organisation utilise des agents auto-hébergés, il existe d’autres exigences :

  • Ajoutez ces URL à votre liste d’autorisations pour permettre à la tâche d’analyse des dépendances d’extraire des données d’avis sur les vulnérabilités. En savoir plus sur les adresses IP autorisées et lesURL de domaine.
URL du domaine Description
https://governance.dev.azure.com/{organization_name} Pour que les organisations utilisant le domaine dev.azure.com accèdent à leur instance DevOps
https://dev.azure.com/{organization_name} Pour que les organisations utilisant le domaine dev.azure.com accèdent à leur instance DevOps
https://advsec.dev.azure.com/{organization_name} Pour que les organisations utilisant le domaine dev.azure.com accèdent à leur instance DevOps
https://{organization_name}.governance.visualstudio.com/ Pour les organisations utilisant le domaine {organization_name}.visualstudio.com accèdent à leur instance DevOps
https://{organization_name}.visualstudio.com  Pour les organisations utilisant le domaine {organization_name}.visualstudio.com accèdent à leur instance DevOps
https://{organization_name}.advsec.visualstudio.com/ Pour les organisations utilisant le domaine {organization_name}.visualstudio.com accèdent à leur instance DevOps
  • Exécutez une version compatible du runtime .NET (actuellement .NET 6.0.x). Si une version compatible n’est pas présente sur l’agent, la tâche de génération d’analyse des dépendances télécharge .NET.

  • Installez le bundle CodeQL dans le cache d’outils de l’agent en utilisant le script d’installation de votre architecture, disponible sur GitHub. Ces scripts nécessitent que la variable d’environnement $AGENT_TOOLSDIRECTORY soit définie sur l’emplacement du répertoire des outils d’agent sur l’agent, par exemple C:/agent/_work/_tool. Vous pouvez également implémenter manuellement les étapes suivantes :

    1. Choisissez la dernière offre groupée de publication CodeQL à partir de GitHub.
    2. Téléchargez et décompressez le bundle dans le répertoire suivant dans le répertoire de l'outil de l'agent, généralement situé sous _work/_tool : ./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/. À l’aide de la version actuelle de v2.16.0, le nom du dossier est intitulé ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/. En savoir plus sur le répertoire des outils d'agent.
    3. Créez un fichier vide intitulé x64.complete dans le dossier ./CodeQL/0.0.0-[codeql-release-bundle-tag]. D'après l’exemple précédent, le chemin d’accès à votre fichier x64.complete doit être ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete.

Activer GitHub Advanced Security

Vous pouvez activer la sécurité avancée au niveau de l'organisation, du projet ou du référentiel. Pour accéder à chacun des outils et résultats d'analyse, vous devez d'abord activer la sécurité avancée. Une fois que vous avez activé Advanced Security, les futurs envois contenant des secrets vers un référentiel avec cette stratégie activée sont bloqués et l’analyse des secrets du référentiel se produit en arrière-plan.

Intégration au niveau du référentiel

  1. Accédez à vos Paramètres projet pour votre projet Azure DevOps.
  2. Select Référentiels>Repos.
  3. Sélectionnez le référentiel pour lequel vous souhaitez activer Advanced Security.
  4. Sélectionnez Activer et commencer la facturation pour activer Advanced Security. Une icône de bouclier s’affiche désormais dans l’affichage référentiel pour n’importe quel référentiels avec Advanced Security activé.

Screenshot of enabling GitHub Advanced Security.

Intégration au niveau du projet

  1. Accédez à vos Paramètres projet pour votre projet Azure DevOps.
  2. Sélectionnez Repos.
  3. Sélectionnez l’onglet Paramètres.
  4. Sélectionnez Activer tout et vous verrez apparaître une estimation du nombre de commettants actifs pour votre projet.
  5. Sélectionnez Commencer la facturation pour activer la sécurité avancée pour chaque référentiel existant dans votre projet.
  6. Vous pouvez éventuellement sélectionner Activer automatiquement la sécurité avancée pour les nouveaux référentiels afin que la sécurité avancée soit activée lors de la création de tous les référentiels nouvellement créés.

Screenshot of project-level enablement for Advanced Security.

Intégration au niveau de l'organisation

  1. Accédez aux paramètres de votre organisation pour votre organisation Azure DevOps.
  2. Sélectionnez Dépôts.
  3. Sélectionnez Activer tout et vous verrez apparaître une estimation du nombre de contributeurs actifs pour votre organisation.
  4. Sélectionnez Commencer la facturation pour activer la sécurité avancée pour chaque référentiel existant dans chaque projet de votre organisation.
  5. Vous pouvez éventuellement sélectionner Activer automatiquement la sécurité avancée pour les nouveaux référentiels afin que la sécurité avancée soit activée lors de la création de tous les projets nouvellement créés.

Screenshot of org-level enablement for Advanced Security.

Configurer l’analyse des secrets

La protection push de l’analyse des secrets et l’analyse des référentiels sont automatiquement activées lorsque vous activez Advanced Security. Vous pouvez activer ou désactiver la protection push de secrets à partir de la page des paramètres du référentiel.

Screenshot of enabling push protection.

Comme mentionné, l’analyse du référentiel d’analyse des secrets est automatiquement lancée lors de l’activation d’Advanced Security pour un référentiel sélectionné.

Configurer l’analyse des dépendances

L’analyse des dépendances est un outil d’analyse basé sur un pipeline. Les résultats sont agrégés par référentiel. Il est recommandé d’ajouter la tâche d’analyse des dépendances à tous les pipelines que vous souhaitez analyser.

Conseil

Pour obtenir les résultats d’analyse les plus précis, veillez à ajouter la tâche d’analyse des dépendances en suivant les étapes de génération d’un pipeline qui génère le code que vous souhaitez analyser.

Ajoutez la tâche Analyse avancée des dépendances de sécurité (AdvancedSecurity-Dependency-Scanning@1) directement à votre fichier de pipeline YAML ou sélectionnez la tâche Analyse avancée des dépendances de sécurité dans l'assistant de tâches.

Screenshot of dependency scanning pipeline setup for YAML.

Configurer l’analyse du code

L’analyse du code est également un outil d’analyse basé sur un pipeline où les résultats sont agrégés par référentiel.

Conseil

Il est recommandé d’ajouter la tâche d’analyse du code à un pipeline distinct, cloné de votre pipeline de production principal ou de créer un pipeline. Cela est dû au fait que l’analyse du code peut être une tâche build plus longue.

Ajoutez les tâches dans l’ordre suivant :

  1. Advanced Security Initialize CodeQL (AdvancedSecurity-Codeql-Init@1)
  2. Vos étapes de génération personnalisées
  3. Sécurité avancée Effectuer une analyse CodeQL (AdvancedSecurity-Codeql-Analyze@1)

Screenshot of code scanning pipeline setup for YAML.

De plus, vous devrez spécifier la ou les langues que vous analysez dans la tâche Initialiser CodeQL. Une liste séparée par des virgules peut être utilisée pour analyser plusieurs langues à la fois. Les langues prises en charge sont csharp, cpp, go, java, javascript, python, ruby, swift.

Voici un exemple de pipeline de démarrage :

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

Conseil

L’analyse CodeQL pour Kotlin/Swift est actuellement en version bêta. Dans la version bêta, l’analyse de ces langues sera moins complète que l’analyse d’autres langages par CodeQL. Utilisez java pour analyser le code écrit en Java, Kotlin ou les deux. Utilisez javascript pour analyser le code écrit en JavaScript, TypeScript ou les deux.

Si la langue spécifiée est cpp, java, csharp ou swift que les étapes personnalisées ou AutoBuild de build sont requises. Pour d’autres langages, si AutoBuild est inclus, l’étape se termine correctement sans effectuer d’action.

Si, pour une raison quelconque, vous devez désactiver Advanced Security, toutes les alertes et l’état des alertes seront conservés pour la prochaine fois que vous réactivez Advanced Security pour votre référentiel.

Étapes suivantes