Partager via


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 DevOps 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 n’est également disponible que pour les référentiels de code Git.

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 Pour que les organisations utilisant le domaine dev.azure.com accèdent à leur instance DevOps
https://dev.azure.com Pour que les organisations utilisant le domaine dev.azure.com accèdent à leur instance DevOps
https://advsec.dev.azure.com 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 8.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.

  • Assurez-vous que le bundle CodeQL est installé dans le cache d’outils de l’agent sur votre agent. Vous pouvez utiliser la variable enableAutomaticCodeQLInstall: true avec la tâche de pipeline Advanced-Security-CodeQL@1 pour les pipelines YAML ou sélectionner la case à cocher Enable automatic CodeQL detection and installation pour les pipelines classiques. Sinon, pour les instructions d’installation manuelle, veuillez consulter la section Analyse de code pour GitHub Advanced Security pour Azure DevOps.

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é.

Capture d’écran de l’activation de 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 contributeurs 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.

Capture d'écran de l'activation au niveau du projet pour la sécurité avancée.

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 une estimation du nombre de contributeurs actifs pour votre organisation apparaîtra.
  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.

Capture d'écran de l'activation au niveau de l'organisation pour la sécurité avancée.

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.

Capture d'écran de l'activation de la protection push.

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 à la suite des étapes de construction et/ou de restauration des packages d'un pipeline qui construit 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.

Capture d'écran de la configuration du pipeline d'analyse des dépendances pour 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)

Capture d'écran de la configuration du pipeline d'analyse de code pour YAML.

De plus, vous devez spécifier quelle(s) langue(s) vous analysez dans la tâche Initialize 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. Si vous utilisez des agents auto-hébergés, vous pouvez également ajouter la variable enableAutomaticCodeQLInstall: true pour installer automatiquement les dernières versions de CodeQL pour votre agent.

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
      # 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

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 des étapes de build personnalisées sont requises.

Configurer les annotations de pull request

Pour l’analyse des dépendances et l’analyse de code, les annotations sont automatiquement configurées pour les pull requests où une stratégie de validation de build s’applique avec des tâches d’analyse de dépendances et/ou d’analyse de code incluses dans votre pipeline. Pour plus d’informations sur la configuration des stratégies de validation de build, consultez Validation de build.

Les annotations de demande de tirage nécessitent également une analyse Advanced Security sur votre branche branche par défaut et cible avant d’analyser votre branche source (demande de tirage). Pour plus d’informations sur la résolution des alertes pour les branches de pull request, consultez Gestion des alertes d’analyse de dépendances sur les pull requests et Gestion des alertes d’analyse de code sur les pull requests.

Si, pour quelque raison que ce soit, vous devez désactiver la sécurité avancée, toutes les alertes et leur état seront conservés dans l’onglet Sécurité avancée pour la prochaine fois que vous réactiverez la sécurité avancée pour votre référentiel.

Étapes suivantes