Exemples de politiques gérées par le client - AWS CodeCommit

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.

Exemples de politiques gérées par le client

Vous pouvez créer vos propres politiques IAM personnalisées pour autoriser les CodeCommit actions et les ressources. Vous pouvez attacher ces politiques personnalisées aux utilisateurs ou groupes IAM qui nécessitent ces autorisations. Vous pouvez également créer vos propres politiques IAM personnalisées pour l'intégration entre CodeCommit et d'autres AWS services.

Exemples de politiques d'identité gérées par le client

Les exemples de politiques IAM suivants accordent des autorisations pour diverses CodeCommit actions. Utilisez-les pour limiter CodeCommit l'accès à vos utilisateurs et rôles IAM. Ces stratégies contrôlent la possibilité de réaliser des actions avec la console CodeCommit , l'API, les kits SDK AWS ou l'AWS CLI.

Note

Tous les exemples utilisent la région USA Ouest (Oregon) (us-west-2) et contiennent des ID de compte fictifs.

Exemples

Exemple 1 : Autoriser un utilisateur à effectuer des CodeCommit opérations en une seule fois Région AWS

La politique d'autorisation suivante utilise un caractère générique ("codecommit:*") pour permettre aux utilisateurs d'effectuer toutes les CodeCommit actions dans la région us-east-2 et non depuis une autre région. Régions AWS

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codecommit:*", "Resource": "arn:aws:codecommit:us-east-2:111111111111:*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-2" } } }, { "Effect": "Allow", "Action": "codecommit:ListRepositories", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-2" } } } ] }

Exemple 2 : Autoriser un utilisateur à utiliser Git pour un seul dépôt

Dans CodeCommit, les autorisations de la politique GitPull IAM s'appliquent à toutes les commandes du client Git à partir desquelles les données sont extraites CodeCommit git fetchgit clone, y compris, etc. De même, les autorisations de la politique GitPush IAM s'appliquent à toutes les commandes du client Git auxquelles les données sont envoyées CodeCommit. Par exemple, si l'autorisation de politique GitPush IAM est définie surAllow, un utilisateur peut demander la suppression d'une branche à l'aide du protocole Git. Ce push n'est pas affecté par les autorisations appliquées à l'DeleteBranchopération pour cet utilisateur IAM. L'autorisation DeleteBranch s'applique aux actions effectuées avec la console, l'AWS CLI, les kits SDK et l'API, mais pas le protocole Git.

L'exemple suivant permet à l'utilisateur spécifié d'extraire du CodeCommit référentiel nommé et de le transférer vers celui-ci MyDemoRepo :

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codecommit:GitPull", "codecommit:GitPush" ], "Resource" : "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo" } ] }

Exemple 3 : autoriser un utilisateur se connectant à partir d'une plage d'adresses IP spécifiée à accéder à un référentiel

Vous pouvez créer une stratégie qui permet uniquement aux utilisateurs de se connecter à un référentiel CodeCommit si leur adresse IP se trouve dans une plage d'adresses IP spécifique. Il existe deux approches également valables. Vous pouvez créer une Deny politique qui interdit les CodeCommit opérations si l'adresse IP de l'utilisateur ne se trouve pas dans un bloc spécifique, ou vous pouvez créer une Allow politique qui autorise les CodeCommit opérations si l'adresse IP de l'utilisateur se trouve dans un bloc spécifique.

Vous pouvez créer une stratégie Deny qui refuse l'accès à tous les utilisateurs qui ne font pas partie d'une plage d'adresses IP spécifique. Par exemple, vous pouvez attacher la stratégie gérée AWSCodeCommitPowerUser et une stratégie gérée par le client à tous les utilisateurs qui ont besoin d'accéder à votre référentiel. L'exemple de politique suivant refuse toutes les CodeCommit autorisations aux utilisateurs dont les adresses IP ne se trouvent pas dans le bloc d'adresses IP 203.0.113.0/16 spécifié :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:*" ], "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "203.0.113.0/16" ] } } } ] }

L'exemple de politique suivant permet à l'utilisateur spécifié d'accéder à un CodeCommit référentiel nommé MyDemoRepo avec les autorisations équivalentes à celles de la politique AWSCodeCommitPowerUser gérée uniquement si son adresse IP se trouve dans le bloc d'adresses spécifié 203.0.113.0/16 :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:BatchGetRepositories", "codecommit:CreateBranch", "codecommit:CreateRepository", "codecommit:Get*", "codecommit:GitPull", "codecommit:GitPush", "codecommit:List*", "codecommit:Put*", "codecommit:Post*", "codecommit:Merge*", "codecommit:TagResource", "codecommit:Test*", "codecommit:UntagResource", "codecommit:Update*" ], "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "Condition": { "IpAddress": { "aws:SourceIp": [ "203.0.113.0/16" ] } } } ] }

Exemple 4 : refuser ou autoriser des actions sur les branches

Vous pouvez créer une stratégie qui refuse aux utilisateurs les autorisations pour les actions que vous spécifiez sur une ou plusieurs branches. Sinon, vous pouvez créer une stratégie qui autorise des actions sur une ou plusieurs branches qui n'auraient pas été possibles dans d'autres branches d'un référentiel. Vous pouvez utiliser ces stratégies avec les stratégies gérées appropriées (prédéfinies). Pour plus d'informations, consultez Limitez les pushs et les fusions vers les succursales AWS CodeCommit.

Par exemple, vous pouvez créer une Deny politique qui empêche les utilisateurs d'apporter des modifications à une branche nommée main, y compris de supprimer cette branche, dans un référentiel nommé MyDemoRepo. Vous pouvez utiliser cette stratégie avec la stratégie gérée AWSCodeCommitPowerUser. Les utilisateurs auxquels ces deux politiques sont appliquées pourraient créer et supprimer des branches, créer des pull requests et effectuer toutes les autres actions autorisées AWSCodeCommitPowerUser, mais ils ne seraient pas en mesure d'apporter des modifications à la branche nommée main, d'ajouter ou de modifier un fichier dans la branche principale de la CodeCommit console, ni de fusionner des branches ou une pull request dans la branche principale. Comme Deny est appliqué à GitPush, vous devez inclure une instruction Null dans la stratégie, afin d'autoriser l'analyse de validité des appels GitPush initiaux lorsque les utilisateurs effectuent des transmissions à partir de leurs référentiels locaux.

Astuce

Si vous souhaitez créer une politique qui s'applique à toutes les branches nommées main dans tous les référentiels de votre compte Amazon Web ServicesResource, spécifiez un astérisque (*) au lieu d'un ARN de référentiel.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:GitPush", "codecommit:DeleteBranch", "codecommit:PutFile", "codecommit:Merge*" ], "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "Condition": { "StringEqualsIfExists": { "codecommit:References": [ "refs/heads/main" ] }, "Null": { "codecommit:References": "false" } } } ] }

L'exemple de politique suivant permet à un utilisateur d'apporter des modifications à une branche nommée main dans tous les référentiels d'un compte Amazon Web Services. Il ne permet pas de modifier d'autres branches. Vous pouvez utiliser cette politique avec la politique AWSCodeCommitReadOnly gérée pour autoriser les transferts automatisés vers le référentiel de la branche principale. Comme Effect a la valeur Allow, cet exemple de stratégie ne fonctionne pas avec les stratégies gérées comme AWSCodeCommitPowerUser.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPush", "codecommit:Merge*" ], "Resource": "*", "Condition": { "StringEqualsIfExists": { "codecommit:References": [ "refs/heads/main" ] } } } ] }

Exemple 5 : refuser ou autoriser des actions sur des référentiels contenant des balises

Vous pouvez créer une politique qui autorise ou refuse les actions sur les référentiels en fonction des AWS balises associées à ces référentiels, puis appliquer ces politiques aux groupes IAM que vous configurez pour gérer les utilisateurs IAM. Par exemple, vous pouvez créer une politique qui refuse toute CodeCommit action sur les référentiels dotés de la clé de AWS balise Status et de la valeur clé Secret, puis appliquer cette politique au groupe IAM que vous avez créé pour les développeurs généraux (Developers). Vous devez ensuite vous assurer que les développeurs travaillant sur ces référentiels balisés ne sont pas membres de ce groupe général de développeurs, mais appartiennent plutôt à un autre groupe IAM auquel la politique restrictive n'est pas appliquée () SecretDevelopers.

L'exemple suivant refuse toutes les CodeCommit actions sur les référentiels marqués avec la clé Status et la valeur clé Secret :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codecommit:Associate*", "codecommit:Batch*", "codecommit:CancelUploadArchive", "codecommit:CreateBranch", "codecommit:CreateCommit", "codecommit:CreatePullRequest*", "codecommit:CreateRepository", "codecommit:CreateUnreferencedMergeCommit", "codecommit:DeleteBranch", "codecommit:DeleteCommentContent", "codecommit:DeleteFile", "codecommit:DeletePullRequest*", "codecommit:DeleteRepository", "codecommit:Describe*", "codecommit:DisassociateApprovalRuleTemplateFromRepository", "codecommit:EvaluatePullRequestApprovalRules", "codecommit:GetBlob", "codecommit:GetBranch", "codecommit:GetComment*", "codecommit:GetCommit", "codecommit:GetDifferences*", "codecommit:GetFile", "codecommit:GetFolder", "codecommit:GetMerge*", "codecommit:GetObjectIdentifier", "codecommit:GetPullRequest*", "codecommit:GetReferences", "codecommit:GetRepository*", "codecommit:GetTree", "codecommit:GetUploadArchiveStatus", "codecommit:Git*", "codecommit:ListAssociatedApprovalRuleTemplatesForRepository", "codecommit:ListBranches", "codecommit:ListPullRequests", "codecommit:ListTagsForResource", "codecommit:Merge*", "codecommit:OverridePullRequestApprovalRules", "codecommit:Post*", "codecommit:Put*", "codecommit:TagResource", "codecommit:TestRepositoryTriggers", "codecommit:UntagResource", "codecommit:UpdateComment", "codecommit:UpdateDefaultBranch", "codecommit:UpdatePullRequest*", "codecommit:UpdateRepository*", "codecommit:UploadArchive" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Status": "Secret" } } } ] }

Vous pouvez affiner davantage cette stratégie en spécifiant des référentiels spécifiques, plutôt que tous les référentiels, en tant que ressources. Vous pouvez également créer des politiques qui autorisent CodeCommit des actions sur tous les référentiels qui ne sont pas marqués par des balises spécifiques. Par exemple, la politique suivante autorise l'équivalent d'AWSCodeCommitPowerUserautorisations pour les CodeCommit actions, sauf qu'elle autorise uniquement les CodeCommit actions sur les référentiels non balisés avec les balises spécifiées :

Note

Cet exemple de stratégie inclut uniquement les actions pour CodeCommit. Il n'inclut pas les actions relatives AWS aux autres services inclus dans la politique AWSCodeCommitPowerUsergérée. Pour plus d'informations, consultez AWSpolitique gérée : AWSCodeCommitPowerUser..

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:Associate*", "codecommit:Batch*", "codecommit:CancelUploadArchive", "codecommit:CreateBranch", "codecommit:CreateCommit", "codecommit:CreatePullRequest*", "codecommit:CreateRepository", "codecommit:CreateUnreferencedMergeCommit", "codecommit:DeleteBranch", "codecommit:DeleteCommentContent", "codecommit:DeleteFile", "codecommit:DeletePullRequest*", "codecommit:Describe*", "codecommit:DisassociateApprovalRuleTemplateFromRepository", "codecommit:EvaluatePullRequestApprovalRules", "codecommit:GetBlob", "codecommit:GetBranch", "codecommit:GetComment*", "codecommit:GetCommit", "codecommit:GetDifferences*", "codecommit:GetFile", "codecommit:GetFolder", "codecommit:GetMerge*", "codecommit:GetObjectIdentifier", "codecommit:GetPullRequest*", "codecommit:GetReferences", "codecommit:GetRepository*", "codecommit:GetTree", "codecommit:GetUploadArchiveStatus", "codecommit:Git*", "codecommit:ListAssociatedApprovalRuleTemplatesForRepository", "codecommit:ListBranches", "codecommit:ListPullRequests", "codecommit:ListTagsForResource", "codecommit:Merge*", "codecommit:OverridePullRequestApprovalRules", "codecommit:Post*", "codecommit:Put*", "codecommit:TagResource", "codecommit:TestRepositoryTriggers", "codecommit:UntagResource", "codecommit:UpdateComment", "codecommit:UpdateDefaultBranch", "codecommit:UpdatePullRequest*", "codecommit:UpdateRepository*", "codecommit:UploadArchive" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceTag/Status": "Secret", "aws:ResourceTag/Team": "Saanvi" } } }, { "Effect": "Allow", "Action": [ "codecommit:CreateApprovalRuleTemplate", "codecommit:GetApprovalRuleTemplate", "codecommit:ListApprovalRuleTemplates", "codecommit:ListRepositories", "codecommit:ListRepositoriesForApprovalRuleTemplate", "codecommit:UpdateApprovalRuleTemplateContent", "codecommit:UpdateApprovalRuleTemplateDescription", "codecommit:UpdateApprovalRuleTemplateName" ], "Resource": "*" } ] }

Exemples de politiques d'intégration gérées par le client

Cette section fournit des exemples de politiques utilisateur gérées par le client qui accordent des autorisations pour les intégrations entre CodeCommit et d'autres services. AWS Pour obtenir des exemples spécifiques de stratégies qui permettent un accès entre comptes à un référentiel CodeCommit, consultez Configuration de l'accès entre comptes à un AWS CodeCommit référentiel à l'aide de rôles.

Note

Tous les exemples utilisent la région USA Ouest (Oregon) (us-west-2) lorsqu'un Région AWS est requis, et contiennent des identifiants de compte fictifs.

Exemples

Exemple 1 : créer une politique qui autorise l'accès entre comptes à une rubrique Amazon SNS

Vous pouvez configurer un CodeCommit référentiel de manière à ce que des poussées de code ou d'autres événements déclenchent des actions, telles que l'envoi d'une notification depuis Amazon Simple Notification Service (Amazon SNS). Si vous créez la rubrique Amazon SNS avec le même compte que celui utilisé pour créer le CodeCommit référentiel, vous n'avez pas besoin de configurer de politiques ou d'autorisations IAM supplémentaires. Vous pouvez créer la rubrique, puis créer le déclencheur pour le référentiel. Pour plus d'informations, consultez Création d'un déclencheur pour une rubrique Amazon SNS.

Toutefois, si vous souhaitez configurer votre déclencheur pour utiliser une rubrique Amazon SNS dans un autre compte Amazon Web Services, vous devez d'abord configurer cette rubrique avec une politique autorisant la publication sur cette rubrique. CodeCommit Depuis cet autre compte, ouvrez la console Amazon SNS, choisissez le sujet dans la liste, et pour Autres actions relatives au sujet, choisissez Modifier la politique du sujet. Dans l'onglet Avancé, modifiez la politique du sujet CodeCommit pour autoriser la publication dans ce sujet. Par exemple, s'il s'agit de la politique par défaut, vous devez la modifier comme suit, en modifiant les éléments en italique rouge pour qu'ils correspondent aux valeurs de votre référentiel, de votre rubrique Amazon SNS et de votre compte :

{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "sns:Subscribe", "sns:ListSubscriptionsByTopic", "sns:DeleteTopic", "sns:GetTopicAttributes", "sns:Publish", "sns:RemovePermission", "sns:AddPermission", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:us-east-2:111111111111:NotMySNSTopic", "Condition": { "StringEquals": { "AWS:SourceOwner": "111111111111" } } }, { "Sid": "CodeCommit-Policy_ID", "Effect": "Allow", "Principal": { "Service": "codecommit.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:111111111111:NotMySNSTopic", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "AWS:SourceAccount": "111111111111" } } } ] }

Exemple 2 : créer une politique de sujet Amazon Simple Notification Service (Amazon SNS) pour autoriser CloudWatch Amazon Events à CodeCommit publier des événements dans le sujet

Vous pouvez configurer CloudWatch des événements pour qu'ils soient publiés sur une rubrique Amazon SNS lorsque des événements se produisent, y compris CodeCommit des événements. Pour ce faire, vous devez vous assurer qu' CloudWatch Events est autorisé à publier des événements sur votre rubrique Amazon SNS en créant une politique pour le sujet ou en modifiant une politique existante pour le sujet, similaire à ce qui suit :

{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic", "Condition": { "StringEquals": { "AWS:SourceOwner": "123456789012" } } }, { "Sid": "Allow_Publish_Events", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }

Pour plus d'informations sur les CloudWatch événements CodeCommit et les événements, consultez la section Exemples d'CloudWatch événements provenant des services pris en charge. Pour plus d'informations sur l'IAM et le langage de stratégie, consultez Grammaire du langage de stratégie JSON IAM.

Exemple 3 : créer une politique d'AWS Lambdaintégration avec un CodeCommit déclencheur

Vous pouvez configurer un CodeCommit référentiel de manière à ce que des transferts de code ou d'autres événements déclenchent des actions, telles que l'appel d'une fonction dans. AWS Lambda Pour plus d'informations, consultez Création d'un déclencheur pour une fonction Lambda. Ces informations sont spécifiques aux déclencheurs et non CloudWatch aux événements.

Si vous souhaitez que votre déclencheur exécute directement une fonction Lambda (au lieu d'utiliser une rubrique Amazon SNS pour appeler la fonction Lambda) et que vous ne configurez pas le déclencheur dans la console Lambda, vous devez inclure une déclaration similaire à la suivante dans la politique basée sur les ressources de la fonction :

{ "Statement":{ "StatementId":"Id-1", "Action":"lambda:InvokeFunction", "Principal":"codecommit.amazonaws.com", "SourceArn":"arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "SourceAccount":"111111111111" } }

Lorsque vous configurez manuellement un CodeCommit déclencheur qui appelle une fonction Lambda, vous devez également utiliser la commande AddPermissionLambda CodeCommit pour autoriser l'appel de la fonction. Pour un exemple, consultez la section Pour autoriser CodeCommit l'exécution d'une fonction Lambda de Création d'un déclencheur pour une fonction Lambda existante.

Pour plus d'informations sur les politiques de ressources pour les fonctions Lambda, reportez-vous AddPermissionà la section The Pull/Push Event Models du manuel du développeur. AWS Lambda