

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.

# Utilisation de politiques basées sur l'identité (politiques IAM) pour CodeCommit
<a name="auth-and-access-control-iam-identity-based-access-control"></a>

Les exemples suivants de politiques basées sur l'identité montrent comment un administrateur de compte peut associer des politiques d'autorisation aux identités IAM (utilisateurs, groupes et rôles) afin d'accorder des autorisations pour effectuer des opérations sur les ressources. CodeCommit 

**Important**  
Nous vous recommandons de consulter d'abord les rubriques d'introduction qui expliquent les concepts de base et les options disponibles pour gérer l'accès à vos CodeCommit ressources. Pour de plus amples informations, veuillez consulter [Vue d'ensemble de la gestion des autorisations d'accès à vos CodeCommit ressources](auth-and-access-control.md#auth-and-access-control-iam-access-control-identity-based).

**Topics**
+ [

## Autorisations requises pour utiliser la CodeCommit console
](#console-permissions)
+ [

## Affichage des ressources dans la console
](#console-resources)
+ [

# AWS politiques gérées pour CodeCommit
](security-iam-awsmanpol.md)
+ [

# Exemples de politiques gérées par le client
](customer-managed-policies.md)

Un exemple de stratégie d'autorisation basée sur l'identité est présenté ci-dessous : 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "codecommit:BatchGetRepositories"
      ],
      "Resource" : [
        "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo",
        "arn:aws:codecommit:us-east-2:111122223333:MyDemo*"
      ]
    }
  ]
}
```

------

Cette politique comporte une déclaration qui permet à un utilisateur d'obtenir des informations sur le CodeCommit référentiel nommé `MyDestinationRepo` et sur tous les CodeCommit référentiels commençant par ce nom `MyDemo` dans la **us-east-2** région. 

## Autorisations requises pour utiliser la CodeCommit console
<a name="console-permissions"></a>

Pour connaître les autorisations requises pour chaque opération CodeCommit d'API et pour plus d'informations sur CodeCommit les opérations, consultez[CodeCommit référence aux autorisations](auth-and-access-control-permissions-reference.md).

Pour autoriser les utilisateurs à utiliser la CodeCommit console, l'administrateur doit leur accorder des autorisations pour les CodeCommit actions. Par exemple, vous pouvez associer la politique [AWSCodeCommitPowerUser](security-iam-awsmanpol.md#managed-policies-poweruser)gérée ou son équivalent à un utilisateur ou à un groupe.

Outre les autorisations accordées aux utilisateurs par les politiques basées sur l'identité, CodeCommit nécessite des autorisations pour les actions AWS Key Management Service (AWS KMS). Un utilisateur IAM n'a pas besoin d'`Allow`autorisations explicites pour ces actions, mais aucune politique ne doit lui être attachée définissant les autorisations suivantes sur `Deny` :

```
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:DescribeKey"
```

Pour plus d'informations sur le chiffrement et CodeCommit, voir[AWS KMS et chiffrement](encryption.md).

## Affichage des ressources dans la console
<a name="console-resources"></a>

La CodeCommit console nécessite l'`ListRepositories`autorisation d'afficher une liste de référentiels pour votre compte Amazon Web Services dans le site Région AWS auquel vous êtes connecté. La console comprend également une fonction **Go to resource (Accéder aux ressources)** qui permet d'effectuer rapidement une recherche de ressources sensible à la casse. Cette recherche est effectuée dans votre compte Amazon Web Services dans Région AWS lequel vous êtes connecté. Les ressources suivantes sont affichées pour les services suivants :
+ AWS CodeBuild : Projets de génération
+ AWS CodeCommit : Référentiels
+ AWS CodeDeploy : Applications
+ AWS CodePipeline : Pipelines

Pour effectuer cette recherche pour les ressources dans tous les services, vous devez disposer des autorisations suivantes :
+ CodeBuild: `ListProjects`
+ CodeCommit: `ListRepositories`
+ CodeDeploy: `ListApplications`
+ CodePipeline: `ListPipelines`

Les résultats ne sont pas renvoyés pour les ressources d'un service si vous ne disposez pas d'autorisations pour ce service. Même si vous êtes autorisé à afficher des ressources, des ressources spécifiques ne sont pas renvoyées si une valeur `Deny` explicite est définie pour l'affichage de ces ressources.

# AWS politiques gérées pour CodeCommit
<a name="security-iam-awsmanpol"></a>

Pour ajouter des autorisations aux utilisateurs, aux groupes et aux rôles, il est plus facile d'utiliser des politiques AWS gérées que de les rédiger vous-même. Il faut du temps et de l’expertise pour [créer des politiques gérées par le client IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) qui ne fournissent à votre équipe que les autorisations dont elle a besoin. Pour démarrer rapidement, vous pouvez utiliser nos politiques AWS gérées. Ces politiques couvrent des cas d’utilisation courants et sont disponibles dans votre Compte AWS. Pour plus d'informations sur les politiques AWS gérées, voir les [politiques AWS gérées](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) dans le *guide de l'utilisateur IAM*.

AWS les services maintiennent et mettent à jour les politiques AWS gérées. Vous ne pouvez pas modifier les autorisations dans les politiques AWS gérées. Les services ajoutent occasionnellement des autorisations à une politique gérée par AWS pour prendre en charge de nouvelles fonctionnalités. Ce type de mise à jour affecte toutes les identités (utilisateurs, groupes et rôles) auxquelles la politique est attachée. Les services sont très susceptibles de mettre à jour une politique gérée par AWS quand une nouvelle fonctionnalité est lancée ou quand de nouvelles opérations sont disponibles. Les services ne suppriment pas les autorisations d'une politique AWS gérée. Les mises à jour des politiques n'endommageront donc pas vos autorisations existantes.

En outre, AWS prend en charge les politiques gérées pour les fonctions professionnelles qui couvrent plusieurs services. Par exemple, la politique **ReadOnlyAccess** AWS gérée fournit un accès en lecture seule à tous les AWS services et ressources. Lorsqu'un service lance une nouvelle fonctionnalité, il AWS ajoute des autorisations en lecture seule pour les nouvelles opérations et ressources. Pour obtenir la liste des politiques de fonctions professionnelles et leurs descriptions, consultez la page [politiques gérées par AWS pour les fonctions de tâche](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) dans le *Guide de l’utilisateur IAM*.

AWS répond à de nombreux cas d'utilisation courants en fournissant des politiques IAM autonomes créées et administrées par. AWS Ces politiques AWS gérées accordent les autorisations requises pour les cas d'utilisation courants. Les politiques gérées fournissent CodeCommit également des autorisations pour effectuer des opérations dans d'autres services, tels que IAM, Amazon SNS et CloudWatch Amazon Events, conformément aux responsabilités des utilisateurs auxquels la politique en question a été accordée. Par exemple, il s'agit d'une AWSCode CommitFullAccess politique utilisateur de niveau administratif qui permet aux utilisateurs dotés de cette politique de créer et de gérer des règles relatives aux CloudWatch événements pour les référentiels (règles dont le nom est préfixé par) et des rubriques `codecommit` Amazon SNS pour les notifications relatives aux événements liés aux référentiels (sujets dont le nom est préfixé par), ainsi que d'administrer les référentiels dans. `codecommit` CodeCommit 

Les politiques AWS gérées suivantes, que vous pouvez associer aux utilisateurs de votre compte, sont spécifiques à CodeCommit.

**Topics**
+ [

## AWS politique gérée : AWSCode CommitFullAccess
](#managed-policies-full)
+ [

## AWS politique gérée : AWSCode CommitPowerUser
](#managed-policies-poweruser)
+ [

## AWS politique gérée : AWSCode CommitReadOnly
](#managed-policies-read)
+ [

## CodeCommit politiques et notifications gérées
](#notifications-permissions)
+ [

## AWS CodeCommit politiques gérées et Amazon CodeGuru Reviewer
](#codeguru-permissions)
+ [

## CodeCommit mises à jour des politiques AWS gérées
](#security-iam-awsmanpol-updates)

## AWS politique gérée : AWSCode CommitFullAccess
<a name="managed-policies-full"></a>

Vous pouvez associer la politique `AWSCodeCommitFullAccess` à vos identités IAM. Cette politique accorde un accès complet à CodeCommit. Appliquez cette politique uniquement aux utilisateurs de niveau administratif auxquels vous souhaitez accorder un contrôle total sur les CodeCommit référentiels et les ressources associées de votre compte Amazon Web Services, y compris la possibilité de supprimer des référentiels.

La AWSCode CommitFullAccess politique contient la déclaration de politique suivante :

------
#### [ JSON ]

****  

```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "codecommit:*"
          ],
          "Resource": "*"
        },
        {
          "Sid": "CloudWatchEventsCodeCommitRulesAccess",
          "Effect": "Allow",
          "Action": [
            "events:DeleteRule",
            "events:DescribeRule",
            "events:DisableRule",
            "events:EnableRule",
            "events:PutRule",
            "events:PutTargets",
            "events:RemoveTargets",
            "events:ListTargetsByRule"
          ],
          "Resource": "arn:aws:events:*:*:rule/codecommit*"
        },
        {
          "Sid": "SNSTopicAndSubscriptionAccess",
          "Effect": "Allow",
          "Action": [
            "sns:CreateTopic",
            "sns:DeleteTopic",
            "sns:Subscribe",
            "sns:Unsubscribe",
            "sns:SetTopicAttributes"
          ],
          "Resource": "arn:aws:sns:*:*:codecommit*"
        },
        {
          "Sid": "SNSTopicAndSubscriptionReadAccess",
          "Effect": "Allow",
          "Action": [
            "sns:ListTopics",
            "sns:ListSubscriptionsByTopic",
            "sns:GetTopicAttributes"
          ],
          "Resource": "*"
        },
        {
          "Sid": "LambdaReadOnlyListAccess",
          "Effect": "Allow",
          "Action": [
            "lambda:ListFunctions"
          ],
          "Resource": "*"
        },
        {
          "Sid": "IAMReadOnlyListAccess",
          "Effect": "Allow",
          "Action": [
            "iam:ListUsers"
          ],
          "Resource": "*"
        },
        {
          "Sid": "IAMReadOnlyConsoleAccess",
          "Effect": "Allow",
          "Action": [
            "iam:ListAccessKeys",
            "iam:ListSSHPublicKeys",
            "iam:ListServiceSpecificCredentials"
          ],
          "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
          "Sid": "IAMUserSSHKeys",
          "Effect": "Allow",
          "Action": [
            "iam:DeleteSSHPublicKey",
            "iam:GetSSHPublicKey",
            "iam:ListSSHPublicKeys",
            "iam:UpdateSSHPublicKey",
            "iam:UploadSSHPublicKey"
          ],
          "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
          "Sid": "IAMSelfManageServiceSpecificCredentials",
          "Effect": "Allow",
          "Action": [
            "iam:CreateServiceSpecificCredential",
            "iam:UpdateServiceSpecificCredential",
            "iam:DeleteServiceSpecificCredential",
            "iam:ResetServiceSpecificCredential"
          ],
          "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
          "Sid": "CodeStarNotificationsReadWriteAccess",
          "Effect": "Allow",
          "Action": [
            "codestar-notifications:CreateNotificationRule",
            "codestar-notifications:DescribeNotificationRule",
            "codestar-notifications:UpdateNotificationRule",
            "codestar-notifications:DeleteNotificationRule",
            "codestar-notifications:Subscribe",
            "codestar-notifications:Unsubscribe"
          ],
          "Resource": "*",
          "Condition": {
            "ArnLike": {
              "codestar-notifications:NotificationsForResource": "arn:aws:iam::*:role/Service*"
            }
          }
        },
        {
          "Sid": "CodeStarNotificationsListAccess",
          "Effect": "Allow",
          "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListTargets",
            "codestar-notifications:ListTagsforResource",
            "codestar-notifications:ListEventTypes"
          ],
          "Resource": "*"
        },
        {
          "Sid": "CodeStarNotificationsSNSTopicCreateAccess",
          "Effect": "Allow",
          "Action": [
            "sns:CreateTopic",
            "sns:SetTopicAttributes"
          ],
          "Resource": "arn:aws:sns:*:*:codestar-notifications*"
        },
        {
          "Sid": "AmazonCodeGuruReviewerFullAccess",
          "Effect": "Allow",
          "Action": [
            "codeguru-reviewer:AssociateRepository",
            "codeguru-reviewer:DescribeRepositoryAssociation",
            "codeguru-reviewer:ListRepositoryAssociations",
            "codeguru-reviewer:DisassociateRepository",
            "codeguru-reviewer:DescribeCodeReview",
            "codeguru-reviewer:ListCodeReviews"
          ],
          "Resource": "*"
        },
        {
          "Sid": "AmazonCodeGuruReviewerSLRCreation",
          "Action": "iam:CreateServiceLinkedRole",
          "Effect": "Allow",
          "Resource": "arn:aws:iam::*:role/aws-service-role/codeguru-reviewer.amazonaws.com/AWSServiceRoleForAmazonCodeGuruReviewer",
          "Condition": {
            "StringLike": {
              "iam:AWSServiceName": "codeguru-reviewer.amazonaws.com"
            }
          }
        },
        {
          "Sid": "CloudWatchEventsManagedRules",
          "Effect": "Allow",
          "Action": [
            "events:PutRule",
            "events:PutTargets",
            "events:DeleteRule",
            "events:RemoveTargets"
          ],
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "events:ManagedBy": "codeguru-reviewer.amazonaws.com"
            }
          }
        },
        {
          "Sid": "CodeStarNotificationsChatbotAccess",
          "Effect": "Allow",
          "Action": [
            "chatbot:DescribeSlackChannelConfigurations",
            "chatbot:ListMicrosoftTeamsChannelConfigurations"
          ],
          "Resource": "*"
        },
        {
            "Sid": "CodeStarConnectionsReadOnlyAccess",
            "Effect": "Allow",
            "Action": [
                "codestar-connections:ListConnections",
                "codestar-connections:GetConnection"
            ],
            "Resource": "arn:aws:codestar-connections:*:*:connection/*"
        }
      ]
    }
```

------

## AWS politique gérée : AWSCode CommitPowerUser
<a name="managed-policies-poweruser"></a>

Vous pouvez associer la politique `AWSCodeCommitPowerUser` à vos identités IAM. Cette politique permet aux utilisateurs d'accéder à toutes les fonctionnalités CodeCommit et aux ressources liées au référentiel, sauf qu'elle ne les autorise pas à supprimer des CodeCommit référentiels ou à créer ou supprimer des ressources liées au référentiel dans d'autres services, tels qu'Amazon Events. AWS CloudWatch Nous vous recommandons d'appliquer cette stratégie à la plupart des utilisateurs.

La AWSCode CommitPowerUser politique contient la déclaration de politique suivante :

------
#### [ JSON ]

****  

```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "codecommit:AssociateApprovalRuleTemplateWithRepository",
            "codecommit:BatchAssociateApprovalRuleTemplateWithRepositories",
            "codecommit:BatchDisassociateApprovalRuleTemplateFromRepositories",
            "codecommit:BatchGet*",
            "codecommit:BatchDescribe*",
            "codecommit:Create*",
            "codecommit:DeleteBranch",
            "codecommit:DeleteFile",
            "codecommit:Describe*",
            "codecommit:DisassociateApprovalRuleTemplateFromRepository",
            "codecommit:EvaluatePullRequestApprovalRules",
            "codecommit:Get*",
            "codecommit:List*",
            "codecommit:Merge*",
            "codecommit:OverridePullRequestApprovalRules",
            "codecommit:Put*",
            "codecommit:Post*",
            "codecommit:TagResource",
            "codecommit:Test*",
            "codecommit:UntagResource",
            "codecommit:Update*",
            "codecommit:GitPull",
            "codecommit:GitPush"
          ],
          "Resource": "*"
        },
        {
          "Sid": "CloudWatchEventsCodeCommitRulesAccess",
          "Effect": "Allow",
          "Action": [
            "events:DeleteRule",
            "events:DescribeRule",
            "events:DisableRule",
            "events:EnableRule",
            "events:PutRule",
            "events:PutTargets",
            "events:RemoveTargets",
            "events:ListTargetsByRule"
          ],
          "Resource": "arn:aws:events:*:*:rule/codecommit*"
        },
        {
          "Sid": "SNSTopicAndSubscriptionAccess",
          "Effect": "Allow",
          "Action": [
            "sns:Subscribe",
            "sns:Unsubscribe"
          ],
          "Resource": "arn:aws:sns:*:*:codecommit*"
        },
        {
          "Sid": "SNSTopicAndSubscriptionReadAccess",
          "Effect": "Allow",
          "Action": [
            "sns:ListTopics",
            "sns:ListSubscriptionsByTopic",
            "sns:GetTopicAttributes"
          ],
          "Resource": "*"
        },
        {
          "Sid": "LambdaReadOnlyListAccess",
          "Effect": "Allow",
          "Action": [
            "lambda:ListFunctions"
          ],
          "Resource": "*"
        },
        {
          "Sid": "IAMReadOnlyListAccess",
          "Effect": "Allow",
          "Action": [
            "iam:ListUsers"
          ],
          "Resource": "*"
        },
        {
          "Sid": "IAMReadOnlyConsoleAccess",
          "Effect": "Allow",
          "Action": [
            "iam:ListAccessKeys",
            "iam:ListSSHPublicKeys",
            "iam:ListServiceSpecificCredentials"
          ],
          "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
          "Sid": "IAMUserSSHKeys",
          "Effect": "Allow",
          "Action": [
            "iam:DeleteSSHPublicKey",
            "iam:GetSSHPublicKey",
            "iam:ListSSHPublicKeys",
            "iam:UpdateSSHPublicKey",
            "iam:UploadSSHPublicKey"
          ],
          "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
          "Sid": "IAMSelfManageServiceSpecificCredentials",
          "Effect": "Allow",
          "Action": [
            "iam:CreateServiceSpecificCredential",
            "iam:UpdateServiceSpecificCredential",
            "iam:DeleteServiceSpecificCredential",
            "iam:ResetServiceSpecificCredential"
          ],
          "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
          "Sid": "CodeStarNotificationsReadWriteAccess",
          "Effect": "Allow",
          "Action": [
            "codestar-notifications:CreateNotificationRule",
            "codestar-notifications:DescribeNotificationRule",
            "codestar-notifications:UpdateNotificationRule",
            "codestar-notifications:Subscribe",
            "codestar-notifications:Unsubscribe"
          ],
          "Resource": "*",
          "Condition": {
            "ArnLike": {
              "codestar-notifications:NotificationsForResource": "arn:aws:iam::*:role/Service*"
            }
          }
        },
        {
          "Sid": "CodeStarNotificationsListAccess",
          "Effect": "Allow",
          "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListTargets",
            "codestar-notifications:ListTagsforResource",
            "codestar-notifications:ListEventTypes"
          ],
          "Resource": "*"
        },
        {
          "Sid": "AmazonCodeGuruReviewerFullAccess",
          "Effect": "Allow",
          "Action": [
            "codeguru-reviewer:AssociateRepository",
            "codeguru-reviewer:DescribeRepositoryAssociation",
            "codeguru-reviewer:ListRepositoryAssociations",
            "codeguru-reviewer:DisassociateRepository",
            "codeguru-reviewer:DescribeCodeReview",
            "codeguru-reviewer:ListCodeReviews"
          ],
          "Resource": "*"
        },
        {
          "Sid": "AmazonCodeGuruReviewerSLRCreation",
          "Action": "iam:CreateServiceLinkedRole",
          "Effect": "Allow",
          "Resource": "arn:aws:iam::*:role/aws-service-role/codeguru-reviewer.amazonaws.com/AWSServiceRoleForAmazonCodeGuruReviewer",
          "Condition": {
            "StringLike": {
              "iam:AWSServiceName": "codeguru-reviewer.amazonaws.com"
            }
          }
        },
        {
          "Sid": "CloudWatchEventsManagedRules",
          "Effect": "Allow",
          "Action": [
            "events:PutRule",
            "events:PutTargets",
            "events:DeleteRule",
            "events:RemoveTargets"
          ],
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "events:ManagedBy": "codeguru-reviewer.amazonaws.com"
            }
          }
        },
        {
          "Sid": "CodeStarNotificationsChatbotAccess",
          "Effect": "Allow",
          "Action": [
            "chatbot:DescribeSlackChannelConfigurations",
            "chatbot:ListMicrosoftTeamsChannelConfigurations"
          ],
          "Resource": "*"
        },
        {
            "Sid": "CodeStarConnectionsReadOnlyAccess",
            "Effect": "Allow",
            "Action": [
                "codestar-connections:ListConnections",
                "codestar-connections:GetConnection"
            ],
            "Resource": "arn:aws:codestar-connections:*:*:connection/*"
        }
      ]
    }
```

------

## AWS politique gérée : AWSCode CommitReadOnly
<a name="managed-policies-read"></a>

Vous pouvez associer la politique `AWSCodeCommitReadOnly` à vos identités IAM. Cette politique accorde un accès en lecture seule aux CodeCommit ressources associées au référentiel dans d'autres AWS services, ainsi que la possibilité de créer et de gérer leurs propres CodeCommit ressources associées (telles que les informations d'identification Git et les clés SSH que les utilisateurs IAM peuvent utiliser pour accéder aux référentiels). Attribuez cette stratégie aux utilisateurs auxquels vous souhaitez accorder la possibilité de lire le contenu d'un référentiel, mais pas de le modifier.

La AWSCode CommitReadOnly politique contient la déclaration de politique suivante :

------
#### [ JSON ]

****  

```
    { 
       "Version":"2012-10-17",		 	 	 
       "Statement":[ 
          { 
             "Effect":"Allow",
             "Action":[ 
                "codecommit:BatchGet*",
                "codecommit:BatchDescribe*",
                "codecommit:Describe*",
                "codecommit:EvaluatePullRequestApprovalRules",
                "codecommit:Get*",
                "codecommit:List*",
                "codecommit:GitPull"
             ],
             "Resource":"*"
          },
          { 
             "Sid":"CloudWatchEventsCodeCommitRulesReadOnlyAccess",
             "Effect":"Allow",
             "Action":[ 
                "events:DescribeRule",
                "events:ListTargetsByRule"
             ],
             "Resource":"arn:aws:events:*:*:rule/codecommit*"
          },
          { 
             "Sid":"SNSSubscriptionAccess",
             "Effect":"Allow",
             "Action":[ 
                "sns:ListTopics",
                "sns:ListSubscriptionsByTopic",
                "sns:GetTopicAttributes"
             ],
             "Resource":"*"
          },
          { 
             "Sid":"LambdaReadOnlyListAccess",
             "Effect":"Allow",
             "Action":[ 
                "lambda:ListFunctions"
             ],
             "Resource":"*"
          },
          { 
             "Sid":"IAMReadOnlyListAccess",
             "Effect":"Allow",
             "Action":[ 
                "iam:ListUsers"
             ],
             "Resource":"*"
          },
          { 
             "Sid":"IAMReadOnlyConsoleAccess",
             "Effect":"Allow",
             "Action":[ 
                "iam:ListAccessKeys",
                "iam:ListSSHPublicKeys",
                "iam:ListServiceSpecificCredentials",
                "iam:GetSSHPublicKey"
             ],
             "Resource":"arn:aws:iam::*:user/${aws:username}"
          },
          { 
             "Sid":"CodeStarNotificationsReadOnlyAccess",
             "Effect":"Allow",
             "Action":[ 
                "codestar-notifications:DescribeNotificationRule"
             ],
             "Resource":"*",
             "Condition":{ 
                "ArnLike":{ 
                   "codestar-notifications:NotificationsForResource":"arn:aws:codecommit:us-east-2:111122223333:*"
                }
             }
          },
          { 
             "Sid":"CodeStarNotificationsListAccess",
             "Effect":"Allow",
             "Action":[ 
                "codestar-notifications:ListNotificationRules",
                "codestar-notifications:ListEventTypes",
                "codestar-notifications:ListTargets"
             ],
             "Resource":"*"
          },
          {
             "Sid": "AmazonCodeGuruReviewerReadOnlyAccess",
             "Effect": "Allow",
             "Action": [
                "codeguru-reviewer:DescribeRepositoryAssociation",
                "codeguru-reviewer:ListRepositoryAssociations",
                "codeguru-reviewer:DescribeCodeReview",
                "codeguru-reviewer:ListCodeReviews"
             ],
             "Resource": "*"
          },
          {
            "Sid": "CodeStarConnectionsReadOnlyAccess",
            "Effect": "Allow",
            "Action": [
                "codestar-connections:ListConnections",
                "codestar-connections:GetConnection"
            ],
            "Resource": "arn:aws:codestar-connections:*:*:connection/*"
        }
    ]
}
```

------

## CodeCommit politiques et notifications gérées
<a name="notifications-permissions"></a>

AWS CodeCommit prend en charge les notifications, qui peuvent informer les utilisateurs des modifications importantes apportées aux référentiels. Les politiques gérées CodeCommit incluent des déclarations de politique relatives à la fonctionnalité de notification. Pour plus d'informations, consultez [En quoi consistent les notifications ?](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/welcome.html)

### Autorisations liées aux notifications dans les stratégies gérées d'accès complet
<a name="notifications-fullaccess"></a>

La stratégie gérée `AWSCodeCommitFullAccess` inclut les déclarations suivantes pour permettre un accès complet aux notifications. Les utilisateurs auxquels cette politique gérée est appliquée peuvent également créer et gérer des sujets Amazon SNS pour les notifications, abonner et désinscrire des utilisateurs à des sujets, répertorier les sujets à choisir comme cibles pour les règles de notification et répertorier Amazon Q Developer dans les applications de chat clientes configurées pour Slack.

```
    {
        "Sid": "CodeStarNotificationsReadWriteAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:CreateNotificationRule",
            "codestar-notifications:DescribeNotificationRule",
            "codestar-notifications:UpdateNotificationRule",
            "codestar-notifications:DeleteNotificationRule",
            "codestar-notifications:Subscribe",
            "codestar-notifications:Unsubscribe"
        ],
        "Resource": "*",
        "Condition" : {
            "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codecommit:*"} 
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListTargets",
            "codestar-notifications:ListTagsforResource,"
            "codestar-notifications:ListEventTypes"
        ],
        "Resource": "*"
    },
    {
        "Sid": "CodeStarNotificationsSNSTopicCreateAccess",
        "Effect": "Allow",
        "Action": [
            "sns:CreateTopic",
            "sns:SetTopicAttributes"
        ],
        "Resource": "arn:aws:sns:*:*:codestar-notifications*"
    },
    {
        "Sid": "CodeStarNotificationsChatbotAccess",
        "Effect": "Allow",
        "Action": [
            "chatbot:DescribeSlackChannelConfigurations",
            "chatbot:ListMicrosoftTeamsChannelConfigurations"
          ],
       "Resource": "*"
    }
```

### Autorisations liées aux notifications dans les stratégies gérées en lecture seule
<a name="notifications-readonly"></a>

La stratégie gérée `AWSCodeCommitReadOnlyAccess` inclut les déclarations suivantes pour autoriser l'accès en lecture seule aux notifications. Les utilisateurs auxquels s’applique cette stratégie gérée peuvent voir des notifications pour les ressources, mais ne peuvent ni les créer, ni les gérer ni s'y abonner. 

```
   {
        "Sid": "CodeStarNotificationsPowerUserAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:DescribeNotificationRule"
        ],
        "Resource": "*",
        "Condition" : {
            "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codecommit:*"} 
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListEventTypes",
            "codestar-notifications:ListTargets"
        ],
        "Resource": "*"
    }
```

### Autorisations liées aux notifications dans d'autres stratégies gérées
<a name="notifications-otheraccess"></a>

La stratégie gérée `AWSCodeCommitPowerUser` inclut les déclarations suivantes pour autoriser les utilisateurs à créer et modifier des notifications, et s'y abonner. Les utilisateurs ne peuvent pas supprimer les règles de notification ni gérer les balises pour les ressources.

```
    {
        "Sid": "CodeStarNotificationsReadWriteAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:CreateNotificationRule",
            "codestar-notifications:DescribeNotificationRule",
            "codestar-notifications:UpdateNotificationRule",
            "codestar-notifications:DeleteNotificationRule",
            "codestar-notifications:Subscribe",
            "codestar-notifications:Unsubscribe"
        ],
        "Resource": "*",
        "Condition" : {
            "StringLike" : {"codestar-notifications:NotificationsForResource" : "arn:aws:codecommit*"} 
        }
    },    
    {
        "Sid": "CodeStarNotificationsListAccess",
        "Effect": "Allow",
        "Action": [
            "codestar-notifications:ListNotificationRules",
            "codestar-notifications:ListTargets",
            "codestar-notifications:ListTagsforResource",
            "codestar-notifications:ListEventTypes"
        ],
        "Resource": "*"
    },
    {
        "Sid": "SNSTopicListAccess",
        "Effect": "Allow",
        "Action": [
            "sns:ListTopics"
        ],
        "Resource": "*"
    },
    {
        "Sid": "CodeStarNotificationsChatbotAccess",
        "Effect": "Allow",
        "Action": [
            "chatbot:DescribeSlackChannelConfigurations",
            "chatbot:ListMicrosoftTeamsChannelConfigurations"
          ],
       "Resource": "*"
    }
```

Pour plus d'informations sur l'IAM et les notifications, consultez [Identity and Access Management for AWS CodeStar Notifications](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/security-iam.html).

## AWS CodeCommit politiques gérées et Amazon CodeGuru Reviewer
<a name="codeguru-permissions"></a>

CodeCommit prend en charge Amazon CodeGuru Reviewer, un service de révision de code automatique qui utilise l'analyse de programmes et l'apprentissage automatique pour détecter les problèmes courants et recommander des correctifs dans votre code Java ou Python. Politiques gérées pour CodeCommit inclure des déclarations de politique pour la fonctionnalité CodeGuru Reviewer. Pour plus d'informations, consultez [What Is Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html).

### Autorisations liées au CodeGuru réviseur dans AWSCode CommitFullAccess
<a name="codeguru-fullaccess"></a>

La politique `AWSCodeCommitFullAccess` gérée inclut les instructions suivantes pour permettre à CodeGuru Reviewer d'être associé et dissocié des CodeCommit référentiels. Les utilisateurs auxquels cette politique gérée est appliquée peuvent également consulter l'état de l'association entre les CodeCommit référentiels et CodeGuru Reviewer et consulter l'état des tâches de révision pour les pull requests.

```
    {
      "Sid": "AmazonCodeGuruReviewerFullAccess",
      "Effect": "Allow",
      "Action": [
        "codeguru-reviewer:AssociateRepository",
        "codeguru-reviewer:DescribeRepositoryAssociation",
        "codeguru-reviewer:ListRepositoryAssociations",
        "codeguru-reviewer:DisassociateRepository",
        "codeguru-reviewer:DescribeCodeReview",
        "codeguru-reviewer:ListCodeReviews"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AmazonCodeGuruReviewerSLRCreation",
      "Action": "iam:CreateServiceLinkedRole",
      "Effect": "Allow",
      "Resource": "arn:aws:iam::*:role/aws-service-role/codeguru-reviewer.amazonaws.com/AWSServiceRoleForAmazonCodeGuruReviewer",
      "Condition": {
        "StringLike": {
          "iam:AWSServiceName": "codeguru-reviewer.amazonaws.com"
        }
      }
    },
    {
      "Sid": "CloudWatchEventsManagedRules",
      "Effect": "Allow",
      "Action": [
        "events:PutRule",
        "events:PutTargets",
        "events:DeleteRule",
        "events:RemoveTargets"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "events:ManagedBy": "codeguru-reviewer.amazonaws.com"
        }
      }
    }
```

### Autorisations liées au CodeGuru réviseur dans AWSCode CommitPowerUser
<a name="codeguru-poweruser"></a>

La politique `AWSCodeCommitPowerUser` gérée inclut les instructions suivantes pour permettre aux utilisateurs d'associer et de dissocier les référentiels à CodeGuru Reviewer, de consulter le statut de l'association et de consulter le statut des tâches de révision pour les pull requests.

```
    {
      "Sid": "AmazonCodeGuruReviewerFullAccess",
      "Effect": "Allow",
      "Action": [
        "codeguru-reviewer:AssociateRepository",
        "codeguru-reviewer:DescribeRepositoryAssociation",
        "codeguru-reviewer:ListRepositoryAssociations",
        "codeguru-reviewer:DisassociateRepository",
        "codeguru-reviewer:DescribeCodeReview",
        "codeguru-reviewer:ListCodeReviews"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AmazonCodeGuruReviewerSLRCreation",
      "Action": "iam:CreateServiceLinkedRole",
      "Effect": "Allow",
      "Resource": "arn:aws:iam::*:role/aws-service-role/codeguru-reviewer.amazonaws.com/AWSServiceRoleForAmazonCodeGuruReviewer",
      "Condition": {
        "StringLike": {
          "iam:AWSServiceName": "codeguru-reviewer.amazonaws.com"
        }
      }
    },
    {
      "Sid": "CloudWatchEventsManagedRules",
      "Effect": "Allow",
      "Action": [
        "events:PutRule",
        "events:PutTargets",
        "events:DeleteRule",
        "events:RemoveTargets"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "events:ManagedBy": "codeguru-reviewer.amazonaws.com"
        }
      }
    }
```

### Autorisations liées au CodeGuru réviseur dans AWSCode CommitReadOnly
<a name="codeguru-readonly"></a>

La politique `AWSCodeCommitReadOnlyAccess` gérée inclut les instructions suivantes pour autoriser l'accès en lecture seule au statut d'association des CodeGuru réviseurs et pour afficher le statut des tâches de révision pour les pull requests. Les utilisateurs pour lesquels cette stratégie gérée est appliquée ne peuvent pas associer ou dissocier des référentiels. 

```
     {
      "Sid": "AmazonCodeGuruReviewerReadOnlyAccess",
      "Effect": "Allow",
      "Action": [
            "codeguru-reviewer:DescribeRepositoryAssociation",
            "codeguru-reviewer:ListRepositoryAssociations",
            "codeguru-reviewer:DescribeCodeReview",
            "codeguru-reviewer:ListCodeReviews"
      ],
      "Resource": "*"
    }
```

### Rôle lié au service Amazon CodeGuru Reviewer
<a name="codeguru-slr"></a>

Lorsque vous associez un dépôt à CodeGuru Reviewer, un rôle lié à un service est créé afin que CodeGuru Reviewer puisse détecter les problèmes et recommander des correctifs pour le code Java ou Python dans les pull requests. Le rôle lié à un service se nomme AWSServiceRoleForAmazonCodeGuruReviewer. Pour plus d'informations, consultez la section [Utilisation des rôles liés à un service pour Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/using-service-linked-roles.html).

Pour plus d’informations, consultez [Politiques gérées par AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) dans le *Guide de l’utilisateur IAM*.

## CodeCommit mises à jour des politiques AWS gérées
<a name="security-iam-awsmanpol-updates"></a>



Consultez les détails des mises à jour des politiques AWS gérées CodeCommit depuis que ce service a commencé à suivre ces modifications. Pour recevoir des alertes automatiques concernant les modifications apportées à cette page, abonnez-vous au fil RSS sur[AWS CodeCommit Historique du document du guide de l'utilisateur](history.md).




| Modifier | Description | Date | 
| --- | --- | --- | 
|  [AWS politique gérée : AWSCode CommitFullAccess](#managed-policies-full)et [AWS politique gérée : AWSCode CommitPowerUser](#managed-policies-poweruser) — Mise à jour des politiques existantes  |  CodeCommit a ajouté une autorisation à ces politiques pour prendre en charge un type de notification supplémentaire utilisant Amazon Q Developer dans les applications de chat. Les AWSCode CommitFullAccess politiques AWSCode CommitPowerUser et ont été modifiées pour ajouter une autorisation,`chatbot:ListMicrosoftTeamsChannelConfigurations`.  | 16 mai 2023 | 
|  [AWS politique gérée : AWSCode CommitReadOnly](#managed-policies-read) : mise à jour d’une politique existante  |  CodeCommit a supprimé une autorisation dupliquée de la politique. Le AWSCode CommitReadOnly a été modifié pour supprimer une autorisation dupliquée,`"iam:ListAccessKeys"`.  | 18 août 2021 | 
|  CodeCommit a commencé à suivre les modifications  |  CodeCommit a commencé à suivre les modifications apportées AWS à ses politiques gérées.  | 18 août 2021 | 

# Exemples de politiques gérées par le client
<a name="customer-managed-policies"></a>

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 les services CodeCommit et d'autres AWS services.

**Topics**
+ [

## Exemples de politiques d'identité gérées par le client
](#customer-managed-policies-identity)

## Exemples de politiques d'identité gérées par le client
<a name="customer-managed-policies-identity"></a>

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 politiques contrôlent la capacité à effectuer des actions avec la CodeCommit console AWS SDKs, l'API ou le AWS CLI.



**Note**  
Tous les exemples utilisent la région de l'Ouest des États-Unis (Oregon) (us-west-2) et contiennent un récit fictif. IDs

 **Exemples**
+ [Exemple 1 : Autoriser un utilisateur à effectuer des CodeCommit opérations en une seule fois Région AWS](#identity-based-policies-example-1)
+ [Exemple 2 : autoriser un utilisateur à utiliser Git pour un seul dépôt](#identity-based-policies-example-2)
+ [Exemple 3 : autoriser un utilisateur se connectant à partir d'une plage d'adresses IP spécifiée à accéder à un référentiel](#identity-based-policies-example-3)
+ [Exemple 4 : refuser ou autoriser des actions sur les branches](#identity-based-policies-example-4)
+ [Exemple 5 : refuser ou autoriser des actions sur des référentiels contenant des balises](#identity-based-policies-example-5)

### Exemple 1 : Autoriser un utilisateur à effectuer des CodeCommit opérations en une seule fois Région AWS
<a name="identity-based-policies-example-1"></a>

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

------
#### [ JSON ]

****  

```
{
    "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
<a name="identity-based-policies-example-2"></a>

Dans CodeCommit, les autorisations de la politique `GitPull` IAM s'appliquent à toutes les commandes du client Git depuis lesquelles les données sont extraites CodeCommit **git fetch****git 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 sur`Allow`, 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'`DeleteBranch`opération pour cet utilisateur IAM. L'`DeleteBranch`autorisation s'applique aux actions effectuées avec la console, le AWS CLI SDKs, et l'API, mais pas avec 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` :

------
#### [ JSON ]

****  

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

------

### Exemple 3 : autoriser un utilisateur se connectant à partir d'une plage d'adresses IP spécifiée à accéder à un référentiel
<a name="identity-based-policies-example-3"></a>

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

------
#### [ JSON ]

****  

```
{
   "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 AWSCode CommitPowerUser gérée uniquement si son adresse IP se trouve dans le bloc d'adresses spécifié 203.0.113.0/16 :

------
#### [ JSON ]

****  

```
{
   "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:111122223333:MyDemoRepo",
         "Condition": {
            "IpAddress": {
               "aws:SourceIp": [
                  "203.0.113.0/16"
               ]
            }
         }
      }
   ]
}
```

------



### Exemple 4 : refuser ou autoriser des actions sur les branches
<a name="identity-based-policies-example-4"></a>

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 de plus amples informations, veuillez consulter [Limitez les pushs et les fusions vers les succursales de AWS CodeCommit](how-to-conditional-branch.md).

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 Services`Resource`, spécifiez un astérisque (`*`) au lieu d'un ARN de référentiel.

------
#### [ JSON ]

****  

```
{
    "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 AWSCode CommitReadOnly 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.

------
#### [ JSON ]

****  

```
{
    "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
<a name="identity-based-policies-example-5"></a>

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 *Developers* groupe général, 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* :

------
#### [ JSON ]

****  

```
{
  "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'**AWSCodeCommitPowerUser**autorisations 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 **AWSCodeCommitPowerUser**gérée. Pour plus d'informations, consultez. [AWS politique gérée : AWSCode CommitPowerUser](security-iam-awsmanpol.md#managed-policies-poweruser).

------
#### [ JSON ]

****  

```
{
  "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": "*"
    }
  ]
}
```

------