Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Sécurisez Azure Repos en combinant le contrôle d’accès, les stratégies de demande de tirage et les vérifications d’état sur vos branches les plus importantes. Cet article vous montre comment restreindre les modifications directes, exiger les réviseurs appropriés, appliquer les exigences d’élément de travail et de génération, et ajouter GitHub vérifications avancées de sécurité avant la fusion des demandes de tirage.
Tip
Vous pouvez utiliser l’IA pour vous aider à effectuer cette tâche plus loin dans cet article, ou voir Activer l’aide à l’IA avec Azure DevOps MCP Server pour commencer.
Menaces et contrôles
Utilisez les contrôles suivants ensemble pour réduire les risques de demande de tirage les plus courants.
| Menace | Risque | Contrôle recommandé |
|---|---|---|
| Envois directs vers des branches protégées | Révision et validation des modifications | Autorisations de branche plus stratégies de branche |
| Approbation à personne unique | La qualité de l’examen dépend d’une personne | Demander un nombre minimal de réviseurs |
| Révision d’experts manquante sur les fichiers sensibles | Fusion des modifications critiques de sécurité sans les réviseurs appropriés | Réviseurs inclus automatiquement |
| Modifications du code non suivi | Réduction de l’audit et de la traçabilité des modifications | Rechercher les éléments de travail liés |
| Code rompu ou non testé | Les régressions atteignent des branches partagées | Validation de build |
| Commentaires de révision non résolus | Problèmes connus de fusion sans réponse | Vérifier la résolution des commentaires |
| Nouvelles vulnérabilités élevées ou critiques | Régressions de sécurité fusionnent par le biais de demandes d’extraction | vérifications de l’état de GitHub Sécurité avancée |
Prerequisites
| Catégorie | Conditions requises |
|---|---|
| accès au projet | Membre d’un projet. |
| Permissions | - Afficher le code dans des projets privés : au moins un accès niveau de base. - Clonez ou contribuez au code dans des projets privés : membre du groupe de sécurité Contributeurs ou autorisations correspondantes dans le projet. - Définir des autorisations de branche ou de référentiel : Gérer les autorisations pour la branche ou le référentiel. - Définissez des stratégies de branche, des contrôles d’état ou modifiez la branche par défaut : autorisation Modifier les stratégies pour le référentiel ou la branche, ou appartenance au groupe de sécurité Administrateurs du projet. - Importez un référentiel : membre du groupe de sécurité Administrateurs de projet ou détenant l'autorisation Créer un référentiel au niveau du projet Git, réglée sur Autoriser. Pour plus d’informations, consultez Configurer les autorisations du dépôt Git. |
| Services | Dépôts activés. |
| Tools | Optional. Utilisez az repos : Azure DevOps CLI. |
| Catégorie | Conditions requises |
|---|---|
| accès au projet | Membre d’un projet. |
| Permissions | - Afficher le code : Au moins un accès de base. - Cloner ou contribuer au code : membre du groupe de sécurité Contributeurs ou autorisations correspondantes dans le projet. |
| Services | Dépôts activés. |
Avant de configurer une stratégie de branche :
- Vérifiez que le référentiel cible et la branche existent déjà.
- Déterminez quels groupes peuvent gérer les autorisations, contourner les stratégies et approuver les demandes de tirage.
- Si vous envisagez d’exiger la validation de build ou GitHub vérifications d’état Advanced Security, créez d’abord le pipeline de build.
Base de référence de sécurité pour la plupart des équipes
Pour une branche de production classique telle que main, commencez par cette ligne de base :
| Zone de contrôle | Base de référence recommandée | Pourquoi |
|---|---|---|
| Accès aux dépôts | Limiter l’accès en écriture aux contributeurs qui travaillent activement dans le dépôt | Réduit le nombre d’identités qui peuvent modifier le code source ou les paramètres de référentiel. |
| Autorisations de branche | Restreindre les stratégies de contournement lors de l’exécution des demandes de tirage et des stratégies de contournement lors de l’envoi (push ) vers un petit groupe d’administrateurs | Empêche les utilisateurs d’ignorer les révisions requises, la validation et d’autres protections de branche. |
| Passer en revue la stratégie | Exiger au moins deux réviseurs pour main |
Améliore la qualité de l’examen et réduit le risque d’une approbation erronée ou biaisée unique. |
| Fichiers sensibles | Inclure automatiquement des réviseurs pour les chemins sensibles à la sécurité, à l’infrastructure ou à la conformité | Veille à ce que les modifications apportées aux zones à haut risque soient examinées par les bonnes personnes ou équipes. |
| Traçabilité | Activer Vérifier les éléments de travail liés | Conserve une piste d’audit entre les modifications de code et le travail qui les a justifiés. |
| Validation | Ajouter la validation de build pour la branche pr | Intercepte les échecs de génération et de test avant la fusion du code dans une branche protégée. |
| Examen de la fin | Activer la vérification de la résolution des commentaires | Permet de s’assurer que les préoccupations des réviseurs sont traitées avant la fin. |
| Portes de vulnérabilité | Ajouter AdvancedSecurity/NewHighAndCritical une fois l’analyse avancée de la sécurité configurée |
Bloque les demandes de tirage qui introduisent de nouveaux résultats de sécurité élevés ou critiques. |
Étape 1 : Restreindre l’accès au référentiel et aux branches
Commencez par les autorisations. Les stratégies sont les plus efficaces quand seuls un petit ensemble d’utilisateurs peuvent les contourner.
Passer en revue les autorisations du référentiel
Utilisez des autorisations de référentiel pour contrôler qui peut lire, contribuer, administrer des paramètres ou contribuer aux demandes de tirage. Pour obtenir la référence d’autorisation détaillée, consultez Définir des autorisations de référentiel Git.
Utilisez le modèle suivant :
- Accordez aux contributeurs les autorisations dont ils ont besoin pour travailler dans les branches de fonctionnalités.
- Réservez l’administration du référentiel pour un petit groupe d’administration.
- Évitez les larges octrois d’autorisations de contournement de stratégie.
Limiter les autorisations de branche
Pour les branches protégées, passez en revue et limitez attentivement ces autorisations :
- Contourner les politiques lors de la finalisation des pull requests
- Contourner les stratégies lors du push
- Forcer le Push (réécrire l'historique, supprimer les branches et les balises)
- Modifier les stratégies
- Gérer les autorisations
Utilisez définir des autorisations de branche pour configurer ces paramètres.
Modèle recommandé pour main:
| Groupe | Autorisations de branche recommandées |
|---|---|
| Contributors | Autoriser une contribution régulière par le biais de demandes d’extraction, mais n’accordez pas d’autorisations de contournement |
| Administrateurs de projet | Autoriser les stratégies de modification et gérer les autorisations |
| Propriétaires de versions d’urgence | Accorder des autorisations de contournement uniquement si votre processus d’incident les nécessite |
Important
Conservez les stratégies de contournement lors de la fin des demandes de tirage et des stratégies de contournement lors de l’envoi (push ) limité à un petit ensemble d’administrateurs approuvés. Ces autorisations éliminent les protections créées par les réviseurs, la validation et les vérifications d’état requises.
Étape 2 : Exiger une révision de demande de tirage forte
Exiger un nombre minimal de réviseurs
Utilisez Exiger un nombre minimal de réviseurs sur des branches importantes telles que main les branches de mise en production.
Paramètres recommandés :
- Réviseurs minimaux :
2pour les branches partagées à valeur élevée - Exiger au moins une approbation sur la dernière itération
-
Autoriser les demandeurs à approuver leurs propres modifications :
Off -
Interdire aux pusher les plus récents d’approuver leurs propres modifications :
Onlorsque vous souhaitez une séparation plus forte des tâches
Configurer la stratégie de réviseur minimale
- Accédez à Project référentiels de paramètres>.
- Sélectionnez votre référentiel, puis sélectionnez la branche protégée.
- Sous Stratégies, activez Exiger un nombre minimal de réviseurs.
- Définissez les options du réviseur pour la branche.
Vérifiez le résultat :
- La liste des stratégies de branche affiche la stratégie de réviseur activée.
- Les demandes de tirage dans la branche ne peuvent pas se terminer tant que le nombre d’approbations requis n’est pas présent.
Pour plus d’informations sur la stratégie, consultez Stratégies et paramètres de branche.
Inclure automatiquement des réviseurs pour les fichiers sensibles
Utilisez automatiquement les réviseurs inclus lorsque certains fichiers ou dossiers nécessitent l’approbation d’une personne ou d’une équipe spécifique.
Les candidats parfaits sont :
- déploiement et code d’infrastructure
- code d’authentification et d’autorisation
- dossiers respectant la conformité
- modèles de pipeline partagé
Configurer la stratégie de réviseurs inclus automatiquement
- Accédez à Project référentiels de paramètres>.
- Ouvrez la branche cible sous Stratégies de branche.
- Ajoutez une stratégie de réviseurs inclus automatiquement .
- Ajoutez les personnes ou groupes requis.
- Choisissez si la stratégie est obligatoire ou facultative.
- Ajoutez des filtres de chemin pour les fichiers ou dossiers qui nécessitent leur révision.
- Disalow demandeurs d’approuver leurs propres modifications.
Vérifiez le résultat :
- Une demande de tirage qui modifie les fichiers correspondants ajoute automatiquement les réviseurs configurés.
- La demande de tirage ne peut pas se terminer tant que la stratégie de réviseur requise n’est pas satisfaite.
Pour plus d’informations, consultez Inclure automatiquement les réviseurs de code.
Étape 3 : Appliquer la traçabilité et la validation
Rechercher les éléments de travail liés
Activez l’activation de la vérification des éléments de travail liés lorsque votre équipe a besoin de modifier la traçabilité entre les demandes de tirage et le suivi du travail.
Configurer la stratégie d’éléments de travail liés
- Accédez à Project référentiels de paramètres>.
- Ouvrez la branche cible sous Stratégies de branche.
- Activez l’activation de la vérification des éléments de travail liés.
- Choisissez Obligatoire si les demandes de tirage doivent avoir des éléments de travail liés avant la fin.
Vérifiez le résultat : les demandes de tirage sans éléments de travail liés affichent la stratégie comme non satisfaite.
Pour plus d’informations, consultez Rechercher les éléments de travail liés.
Validation de la build
Utilisez la validation de build pour exiger une exécution de pipeline réussie pour les demandes de tirage avant la fusion.
Important
Avant de configurer la validation de build, créez le pipeline de build qui doit valider la demande de tirage.
Paramètres recommandés pour les branches protégées :
- Déclencheur : automatique
-
Exigence de stratégie :
Required - Expiration de la génération : choisissez une valeur qui correspond à la fréquence à laquelle la branche protégée change
Configurer la stratégie de validation de build
- Ouvrez la branche cible sous Stratégies de branche.
- Ajoutez une stratégie de validation de build .
- Sélectionnez le pipeline de build.
- Choisissez si la stratégie est requise.
- Enregistrez la stratégie.
Vérifiez le résultat :
- L’ouverture ou la mise à jour d’une demande de tirage (pull request) met en file d’attente la build de validation configurée.
- La demande de tirage ne peut pas se terminer tant que la build requise n’est pas terminée.
Pour plus d’informations, consultez Validation de build.
Vérifier la résolution des commentaires
Utilisez La vérification de la résolution des commentaires pour vous assurer que les threads de révision sont résolus avant la fin de la demande de tirage.
Configurer la stratégie de résolution de commentaires
- Ouvrez la branche cible sous Stratégies de branche.
- Activez La vérification de la résolution des commentaires.
- Choisissez Obligatoire si les commentaires non résolus doivent bloquer l’achèvement.
Vérifiez le résultat : les demandes de tirage avec des commentaires non résolus restent bloquées jusqu’à ce que les réviseurs ou les auteurs résolvent les threads.
Pour plus d’informations, consultez Rechercher la résolution des commentaires.
Limiter les types de fusion
Utilisez Limiter les types de fusion en tant que paramètre de gouvernance de l’historique des référentiels. Cette stratégie permet de normaliser la façon dont les validations de demande de tirage s’affichent après la fusion, mais ce n’est pas un contrôle de sécurité direct.
Choisissez une stratégie de fusion basée sur la façon dont votre équipe passe en revue, traces et historique des audits.
Exemple d’utilisation :
- Exiger des fusions de courge pour le travail de fonctionnalité de courte durée.
- Interdire la rebase ou la courge sur les branches où votre processus d’audit attend des validations de fusion.
Considérations relatives à l’audit et à la traçabilité :
- Squash crée un historique de branche cible plus propre, mais réduit plusieurs validations sources en une seule validation au moment de la fusion.
- Si votre modèle d’audit dépend de la conservation de la séquence de validation exacte d’une branche de fonctionnalité, préférez les stratégies de validation de fusion par rapport à la courge.
- Gardez votre stratégie cohérente avec la façon dont les développeurs inspectent et déboguent l’historique dans les demandes d’extraction et dans la branche cible.
exemple d’interface CLI Azure DevOps :
az repos policy merge-strategy create \
--blocking true \
--branch main \
--enabled true \
--repository-id <repository-id> \
--allow-no-fast-forward true \
--allow-rebase false \
--allow-rebase-merge false \
--allow-squash false
Pour plus d’informations, consultez Limiter les types de fusion.
Étape 4 : Ajouter GitHub vérifications d’état de sécurité avancée
GitHub vérifications d’état advanced security permettent d’empêcher la fusion des demandes de tirage lorsque de nouvelles vulnérabilités critiques ou de gravité élevée sont introduites.
Important
GitHub Advanced Security for Azure DevOps est disponible uniquement pour les Azure DevOps Services et uniquement pour les référentiels Git de code.
Avant d’ajouter la stratégie de vérification d’état :
- Activez GitHub Advanced Security sur le référentiel.
- Configurez les tâches de pipeline Advanced Security requises.
- Ajoutez une stratégie de validation de build pour la branche de demande d’extraction.
-
Wait for Processing: trueActivez les tâches avancées de sécurité documentées. - Exécutez le pipeline avec succès au moins une fois afin que la vérification de l’état s’affiche dans la liste d’état à vérifier .
Commencez par AdvancedSecurity/NewHighAndCritical si le référentiel a déjà des alertes non résolues. Après avoir réduit le backlog, envisagez de passer à AdvancedSecurity/AllHighAndCritical.
Chemin d’accès du navigateur :
- Ouvrez la branche cible sous Stratégies de branche.
- Sous Vérifications d’état, sélectionnez +.
- Définissez l’état sur
AdvancedSecurity/NewHighAndCritical. - Laissez les options avancées à leurs valeurs par défaut.
- Enregistrez la stratégie.
Les vérifications d’état avancées de sécurité sont configurées à partir des vérifications d’état dans le navigateur après avoir activé l’analyse avancée de la sécurité et la validation de build pour le référentiel. Pour la configuration requise, consultez Configurer les vérifications d’état des demandes de tirage.
Vérifiez le résultat :
- Les demandes de tirage avec de nouveaux résultats élevés ou critiques montrent que la vérification de l’état a échoué.
- La stratégie de branche bloque l’achèvement jusqu’à ce que les résultats soient résolus ou que la stratégie soit rendue facultative.
Pour plus d’informations sur l’installation, consultez :
- Configurer les vérifications d’état des demandes de tirage (pull request)
- Vérifications de statut disponibles pour les pull requests
Exemples de plans de déploiement
Base de référence du référentiel à sensibilité inférieure
Si le référentiel a une sensibilité inférieure et que vous souhaitez un point de départ gérable :
- Restreindre les autorisations de contournement de branche sur
main. - Exiger au moins un ou deux réviseurs.
- Activez les éléments de travail liés.
- Ajoutez la validation de build.
- Activez la résolution des commentaires.
Référentiel à haut niveau de confidentialité
Si le référentiel contient des ressources stratégiques de déploiement, d’identité ou de conformité :
- Limitez les autorisations de contournement de stratégie aux administrateurs.
- Exiger deux réviseurs sur
main. - Ajoutez automatiquement des réviseurs pour les chemins protégés.
- Exiger des éléments de travail liés.
- Ajoutez la validation de build.
- Ajoutez GitHub vérifications d'état Advanced Security si vous utilisez Azure DevOps Services.
Facultatif : Utiliser l’assistance IA pour passer en revue la configuration de la stratégie de branche
L’assistance ia est facultative. Vos autorisations de branche, stratégies et vérifications d’état appliquent des protections de référentiel que vous utilisiez ou non l’IA.
Vous pouvez utiliser ces invites pour passer en revue la configuration de la stratégie, identifier les lacunes et obtenir des recommandations de référence plus rapidement. Si vous configurez Azure DevOps serveur MCP, l’Assistant peut utiliser votre contexte Azure DevOps pour améliorer les réponses. Pour obtenir des conseils d’installation, consultez Activer l’assistance ia avec Azure DevOps serveur MCP.
Utilisez des invites comme suit pour commencer :
| Objectif | Exemple d’invite |
|---|---|
| Passer en revue les protections de branche | Summarize the branch policies on main and explain which ones are required. |
| Identifier les risques de contournement | Find users or groups that can bypass branch policies on the main branch. |
| Vérifier la couverture de révision | List the reviewer and comment-resolution policies configured for this repository. |
| Vérifier le suivi du travail | Check whether pull requests into main require linked work items. |
| Inspecter les portes de validation | Show the build validation policy for main and explain what pipeline it uses. |
| Examiner les vérifications d’état de sécurité | List the status checks configured for main and tell me whether GitHub Advanced Security is one of them. |
| Planifier une base de référence plus sûre | Recommend a secure branch policy baseline for this repository based on its current settings. |
Validez toujours les commandes et recommandations générées par rapport aux autorisations de votre référentiel, aux paramètres de branche et à la documentation actuelle Azure DevOps avant de les appliquer.
Conseils de dépannage
| Problème | Cause la plus probable | Action recommandée |
|---|---|---|
| Une option de stratégie de branche n’apparaît pas | Vous n’avez pas l’autorisation Modifier les stratégies ou la branche n’a pas été sélectionnée | Confirmer l’accès aux branches et les autorisations de stratégie |
| Les demandes de tirage peuvent toujours fusionner sans stratégie de réunion | Un utilisateur dispose d’autorisations de contournement | Passez en revue les stratégies de contournement lors de l’exécution des demandes de tirage (pull request ) et de la déviation des stratégies lors de l’envoi (push) |
| Les réviseurs requis ne sont pas ajoutés | Le filtre de chemin d’accès de stratégie du réviseur ne correspond pas aux fichiers modifiés | Revérifier les filtres de chemin d’accès et les identités de réviseur |
| La vérification de l’état avancée de la sécurité n’est pas disponible | Le référentiel n’a pas terminé une exécution d’analyse réussie avec les tâches requises | Vérifier la validation de build, les tâches de pipeline et Wait for Processing les paramètres |
| Une stratégie d’élément de travail lié ne bloque pas | La stratégie est facultative au lieu d’être obligatoire | Rouvrir la stratégie de branche et confirmer le niveau d’exigence |