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 pipelineAdvanced-Security-CodeQL@1
pour les pipelines YAML ou sélectionner la case à cocherEnable 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
- Accédez à vos Paramètres projet pour votre projet Azure DevOps.
- Select Référentiels>Repos.
- Sélectionnez le référentiel pour lequel vous souhaitez activer Advanced Security.
- 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é.
Intégration au niveau du projet
- Accédez à vos Paramètres projet pour votre projet Azure DevOps.
- Sélectionnez Repos.
- Sélectionnez l’onglet Paramètres.
- Sélectionnez Activer tout et vous verrez apparaître une estimation du nombre de contributeurs actifs pour votre projet.
- Sélectionnez Commencer la facturation pour activer la sécurité avancée pour chaque référentiel existant dans votre projet.
- 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.
Intégration au niveau de l'organisation
- Accédez aux paramètres de votre organisation pour votre organisation Azure DevOps.
- Sélectionnez Dépôts.
- Sélectionnez Activer tout et une estimation du nombre de contributeurs actifs pour votre organisation apparaîtra.
- Sélectionnez Commencer la facturation pour activer la sécurité avancée pour chaque référentiel existant dans chaque projet de votre organisation.
- 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.
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.
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.
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 :
- Advanced Security Initialize CodeQL (AdvancedSecurity-Codeql-Init@1)
- Vos étapes de génération personnalisées
- Sécurité avancée Effectuer une analyse CodeQL (AdvancedSecurity-Codeql-Analyze@1)
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
- Alertes d’analyse du code pour GitHub Advanced Security pour Azure DevOps
- Alertes d’analyse des dépendances pour GitHub Advanced Security pour Azure DevOps
- Alertes d’analyse des secrets pour GitHub Advanced Security pour Azure DevOps
- Autorisations pour GitHub Advanced Security pour Azure DevOps
- Facturation pour GitHub Advanced Security pour Azure DevOps