Limitez les pushs et les fusions vers les succursales de AWS CodeCommit - AWS CodeCommit

AWS CodeCommit n'est plus disponible pour les nouveaux clients. Les clients existants de AWS CodeCommit peuvent continuer à utiliser le service normalement. En savoir plus »

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Limitez les pushs et les fusions vers les succursales de AWS CodeCommit

Par défaut, tout utilisateur CodeCommit du référentiel disposant des autorisations suffisantes pour envoyer du code au référentiel peut contribuer à n'importe quelle branche de ce référentiel. Cela est vrai quelle que soit la façon dont vous ajoutiez une branche dans le référentiel : à l'aide de la console, de l'interface de ligne de commande ou de Git. Cependant, vous pouvez vouloir configurer une branche de telle sorte que seuls certains utilisateurs du référentiel puissent transmettre ou fusionner le code sur cette branche. Par exemple, vous pouvez configurer une branche utilisée pour le code de production afin que seul un sous-ensemble des développeurs séniors puissent transmettre ou fusionner les modifications apportées à cette branche. D'autres développeurs peuvent continuer à extraire à partir de la branche, créer leurs propres branches et créer des demandes d'extraction, mais ils ne peuvent pas transmettre ou fusionner les modifications apportées à cette branche. Vous pouvez configurer cet accès en créant une politique conditionnelle qui utilise une clé de contexte pour une ou plusieurs branches deIAM.

Note

Pour effectuer certaines des procédures décrites dans cette rubrique, vous devez vous connecter avec un utilisateur administratif disposant des autorisations suffisantes pour configurer et appliquer des politiques. IAM Pour plus d'informations, voir Création d'un utilisateur et d'un groupe d'IAMadministrateurs.

Configurer une IAM politique pour limiter les transferts et les fusions vers une succursale

Vous pouvez créer une politique IAM qui empêche les utilisateurs de mettre à jour une branche, notamment en transférant des validations vers une branche et en fusionnant des pull requests vers une branche. Pour ce faire, votre stratégie utilise une instruction conditionnelle, de telle sorte que l'effet de l'instruction Deny s'applique uniquement si la condition est respectée. Les APIs informations que vous incluez dans la Deny déclaration déterminent quelles actions ne sont pas autorisées. Vous pouvez configurer cette politique pour qu'elle s'applique à une seule branche d'un référentiel, à un certain nombre de branches d'un référentiel ou à toutes les branches répondant aux critères de tous les référentiels d'un compte Amazon Web Services.

Pour créer une stratégie conditionnelle pour les branches
  1. Connectez-vous à la IAM console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le panneau de navigation, choisissez Politiques.

  3. Sélectionnez Create policy (Créer une politique).

  4. Choisissez JSON, puis collez l'exemple de politique suivant. Remplacez la valeur Resource de par le ARN du référentiel qui contient la branche dont vous souhaitez restreindre l'accès. Remplacez la valeur de codecommit:References par une référence à la branche ou aux branches auxquelles vous voulez limiter l'accès. Par exemple, cette politique interdit d'envoyer des validations, de fusionner des branches, de supprimer des branches, de supprimer des fichiers, de fusionner des pull requests et d'ajouter des fichiers à une branche nommée principal et une branche nommée prod dans un dépôt nommé MyDemoRepo :

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:GitPush", "codecommit:DeleteBranch", "codecommit:DeleteFile", "codecommit:PutFile", "codecommit:MergeBranchesByFastForward", "codecommit:MergeBranchesBySquash", "codecommit:MergeBranchesByThreeWay", "codecommit:MergePullRequestByFastForward", "codecommit:MergePullRequestBySquash", "codecommit:MergePullRequestByThreeWay" ], "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "Condition": { "StringEqualsIfExists": { "codecommit:References": [ "refs/heads/main", "refs/heads/prod" ] }, "Null": { "codecommit:References": "false" } } } ] }

    Dans Git, les branches sont simplement des pointeurs (références) vers la valeur SHA -1 du commit principal, c'est pourquoi la condition utiliseReferences. L'instruction Null est requise dans n'importe quelle stratégie dont l'effet est Deny et où GitPush est l'une des actions. Cela est nécessaire en raison de la façon dont Git et Git git-receive-pack fonctionnent lorsque vous transférez des modifications d'un dépôt local vers CodeCommit.

    Astuce

    Pour créer une politique qui s'applique à toutes les branches nommées main dans tous les référentiels d'un compte Amazon Web Services, remplacez la valeur de Resource from a repository ARN par un astérisque ()*.

  5. Choisissez Review policy (Examiner une politique). Corrigez les erreurs de votre déclaration de stratégie, puis passez à Create policy (Créer une stratégie).

  6. Lorsque le JSON est validé, la page Créer une politique s'affiche. Un avertissement s'affiche dans la section Résumé, vous informant que cette stratégie n'accorde pas d'autorisations. Ceci est normal.

    • Dans le champ Name (Nom), saisissez un nom pour cette stratégie, tel que DenyChangesToMain.

    • Dans Description, saisissez une description de l'objectif de la stratégie. Cette action est facultative, mais recommandée.

    • Choisissez Create Policy (Créer une politique).

Appliquer la IAM politique à un IAM groupe ou à un rôle

Vous avez créé une politique qui limite les push et les fusions à une branche, mais elle n'a aucun effet tant que vous ne l'appliquez pas à un IAM utilisateur, à un groupe ou à un rôle. La meilleure pratique consiste à appliquer la politique à un IAM groupe ou à un rôle. L'application de politiques à des IAM utilisateurs individuels n'est pas une solution adaptée.

Pour appliquer la stratégie conditionnelle à un groupe ou un rôle
  1. Connectez-vous à la IAM console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le volet de navigation, si vous souhaitez appliquer la politique à un IAM groupe, choisissez Groups. Si vous souhaitez appliquer la politique à un rôle assumé par les utilisateurs, choisissez Rôle. Choisissez le nom du groupe ou du rôle.

  3. Sous l'onglet Permissions, choisissez Attach Policy.

  4. Sélectionnez la stratégie conditionnelle que vous avez créée à partir de la liste des stratégies, puis choisissez Attach policy (Attacher la stratégie).

Pour plus d'informations, consultez la section Politiques de fixation et de détachement. IAM

Testez la politique

Vous devez tester les effets de la stratégie que vous avez appliquée sur le groupe ou le rôle pour vous assurer qu'elle fonctionne comme prévu. Il y a plusieurs manières de le faire. Par exemple, pour tester une stratégie similaire à celle indiquée ci-dessus, vous pouvez :

  • Connectez-vous à la CodeCommit console avec un IAM utilisateur qui est membre d'un IAM groupe auquel la politique est appliquée ou qui assume un rôle auquel la politique est appliquée. Dans la console, ajoutez un fichier sur la branche où les restrictions s'appliquent. Vous devez voir un message d'erreur lorsque vous tentez d'enregistrer ou de charger un fichier sur cette branche. Ajoutez un fichier à une autre branche. L'opération doit réussir.

  • Connectez-vous à la CodeCommit console avec un IAM utilisateur qui est membre d'un IAM groupe auquel la politique est appliquée ou qui assume un rôle auquel la politique est appliquée. Créez une demande d'extraction qui doit être fusionnée avec la branche où les restrictions s'appliquent. Vous devez être en mesure de créer la demande d'extraction, mais que vous obtenez une erreur si vous essayez de fusionner.

  • À partir du terminal ou de la ligne de commande, créez un commit sur la branche où les restrictions s'appliquent, puis transférez ce commit vers le CodeCommit référentiel. Vous devez voir un message d'erreur. Les validations et transmissions effectuées à partir d'autres branches devraient fonctionner comme d'habitude.