

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usando políticas baseadas em identidade (políticas do IAM) para CodeCommit
<a name="auth-and-access-control-iam-identity-based-access-control"></a>

Os exemplos a seguir de políticas baseadas em identidade demonstram como um administrador de conta pode anexar políticas de permissões às identidades do IAM (usuários, grupos e funções) para conceder permissões para realizar operações em recursos. CodeCommit 

**Importante**  
Recomendamos que você primeiro analise os tópicos introdutórios que explicam os conceitos básicos e as opções disponíveis para gerenciar o acesso aos seus CodeCommit recursos. Para obter mais informações, consulte [Visão geral do gerenciamento de permissões de acesso aos seus CodeCommit recursos](auth-and-access-control.md#auth-and-access-control-iam-access-control-identity-based).

**Topics**
+ [Permissões necessárias para usar o CodeCommit console](#console-permissions)
+ [Visualizar recursos no console](#console-resources)
+ [AWS políticas gerenciadas para CodeCommit](security-iam-awsmanpol.md)
+ [Exemplos de política gerenciada pelo cliente](customer-managed-policies.md)

O seguinte é um exemplo de uma política de permissões com base em identidade: 

------
#### [ 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*"
      ]
    }
  ]
}
```

------

Essa política tem uma declaração que permite ao usuário obter informações sobre o CodeCommit repositório nomeado `MyDestinationRepo` e todos os CodeCommit repositórios que começam com o nome `MyDemo` na Região. **us-east-2** 

## Permissões necessárias para usar o CodeCommit console
<a name="console-permissions"></a>

Para ver as permissões necessárias para cada operação de CodeCommit API e para obter mais informações sobre CodeCommit operações, consulte[CodeCommit referência de permissões](auth-and-access-control-permissions-reference.md).

Para permitir que os usuários usem o CodeCommit console, o administrador deve conceder a eles permissões para CodeCommit ações. Por exemplo, você pode anexar a política [AWSCodeCommitPowerUser](security-iam-awsmanpol.md#managed-policies-poweruser)gerenciada ou equivalente a um usuário ou grupo.

Além das permissões concedidas aos usuários por políticas baseadas em identidade, CodeCommit requer permissões para ações AWS Key Management Service (AWS KMS). Um usuário do IAM não precisa de permissões `Allow` explícitas para essas ações, mas não deve ter uma política anexada que defina as seguintes permissões como `Deny`:

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

Para obter mais informações sobre criptografia e CodeCommit, consulte[AWS KMS e criptografia](encryption.md).

## Visualizar recursos no console
<a name="console-resources"></a>

O CodeCommit console exige a `ListRepositories` permissão para exibir uma lista de repositórios para sua conta da Amazon Web Services no Região da AWS local em que você está conectado. O console também inclui uma função **Go to resource (Acessar recurso)** para realizar uma pesquisa por recursos que diferencia letras maiúsculas de minúsculas. Essa pesquisa é realizada na sua conta da Amazon Web Services no Região da AWS local em que você está conectado. Os seguintes recursos são exibidos nos seguintes serviços:
+ AWS CodeBuild: projetos de compilação
+ AWS CodeCommit: repositórios
+ AWS CodeDeploy: aplicativos
+ AWS CodePipeline: pipelines

Para realizar essa pesquisa nos recursos em todos os serviços, você deve ter as seguintes permissões:
+ CodeBuild: `ListProjects`
+ CodeCommit: `ListRepositories`
+ CodeDeploy: `ListApplications`
+ CodePipeline: `ListPipelines`

Os resultados não serão retornados para os recursos de um serviço se você não tiver permissões para esse serviço. Mesmo se você tiver permissões para visualizar recursos, recursos específicos não serão retornados se houver um `Deny` explícito para visualizar esses recursos.

# AWS políticas gerenciadas para CodeCommit
<a name="security-iam-awsmanpol"></a>

Para adicionar permissões a usuários, grupos e funções, é mais fácil usar políticas AWS gerenciadas do que escrever políticas você mesmo. É necessário tempo e experiência para criar [políticas gerenciadas pelo cliente do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) que fornecem à sua equipe apenas as permissões de que precisam. Para começar rapidamente, você pode usar nossas políticas AWS gerenciadas. Essas políticas abrangem casos de uso comuns e estão disponíveis na sua Conta da AWS. Para obter mais informações sobre políticas AWS gerenciadas, consulte [políticas AWS gerenciadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) no *Guia do usuário do IAM*.

AWS os serviços mantêm e atualizam as políticas AWS gerenciadas. Você não pode alterar as permissões nas políticas AWS gerenciadas. Os serviços ocasionalmente acrescentam permissões adicionais a uma política gerenciada pela AWS para oferecer suporte a novos recursos. Esse tipo de atualização afeta todas as identidades (usuários, grupos e funções) em que a política está anexada. É mais provável que os serviços atualizem uma política gerenciada pela AWS quando um novo recurso for iniciado ou novas operações se tornarem disponíveis. Os serviços não removem as permissões de uma política AWS gerenciada, portanto, as atualizações de políticas não violarão suas permissões existentes.

Além disso, AWS oferece suporte a políticas gerenciadas para funções de trabalho que abrangem vários serviços. Por exemplo, a política **ReadOnlyAccess** AWS gerenciada fornece acesso somente de leitura a todos os AWS serviços e recursos. Quando um serviço lança um novo recurso, AWS adiciona permissões somente de leitura para novas operações e recursos. Para obter uma lista e descrições das políticas de perfis de trabalho, consulte [Políticas gerenciadas pela AWS para perfis de trabalho](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) no *Guia do usuário do IAM*.

AWS aborda muitos casos de uso comuns fornecendo políticas autônomas do IAM que são criadas e administradas pela AWS. Essas políticas AWS gerenciadas concedem as permissões necessárias para casos de uso comuns. As políticas gerenciadas CodeCommit também fornecem permissões para realizar operações em outros serviços, como IAM, Amazon SNS e Amazon CloudWatch Events, conforme exigido pelas responsabilidades dos usuários que receberam a política em questão. Por exemplo, a AWSCode CommitFullAccess política é uma política de usuário de nível administrativo que permite aos usuários com essa política criar e gerenciar regras de CloudWatch eventos para repositórios (regras cujos nomes são prefixados com) e tópicos do `codecommit` Amazon SNS para notificações sobre eventos relacionados ao repositório (tópicos cujos nomes são prefixados com), bem como administrar repositórios em. `codecommit` CodeCommit 

As políticas AWS gerenciadas a seguir, que você pode anexar aos usuários em sua conta, são específicas de CodeCommit.

**Topics**
+ [AWS política gerenciada: AWSCode CommitFullAccess](#managed-policies-full)
+ [AWS política gerenciada: AWSCode CommitPowerUser](#managed-policies-poweruser)
+ [AWS política gerenciada: AWSCode CommitReadOnly](#managed-policies-read)
+ [CodeCommit políticas e notificações gerenciadas](#notifications-permissions)
+ [AWS CodeCommit políticas gerenciadas e Amazon CodeGuru Reviewer](#codeguru-permissions)
+ [CodeCommit atualizações nas políticas AWS gerenciadas](#security-iam-awsmanpol-updates)

## AWS política gerenciada: AWSCode CommitFullAccess
<a name="managed-policies-full"></a>

É possível anexar a política `AWSCodeCommitFullAccess` às suas identidades do IAM. Esta política concede acesso total CodeCommit a. Aplique essa política somente aos usuários de nível administrativo aos quais você deseja conceder controle total sobre CodeCommit repositórios e recursos relacionados em sua conta da Amazon Web Services, incluindo a capacidade de excluir repositórios.

A AWSCode CommitFullAccess política contém a seguinte declaração de política:

------
#### [ 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 política gerenciada: AWSCode CommitPowerUser
<a name="managed-policies-poweruser"></a>

É possível anexar a política `AWSCodeCommitPowerUser` às suas identidades do IAM. Essa política permite que os usuários acessem todas as funcionalidades CodeCommit e recursos relacionados ao repositório, exceto que não permite que eles excluam CodeCommit repositórios nem criem ou excluam recursos relacionados ao repositório em outros serviços AWS , como o Amazon Events. CloudWatch Recomendamos que você aplique essa política à maioria dos usuários.

A AWSCode CommitPowerUser política contém a seguinte declaração de política:

------
#### [ 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 política gerenciada: AWSCode CommitReadOnly
<a name="managed-policies-read"></a>

É possível anexar a política `AWSCodeCommitReadOnly` às suas identidades do IAM. Essa política concede acesso somente para leitura CodeCommit e recursos relacionados ao repositório em outros AWS serviços, bem como a capacidade de criar e gerenciar seus próprios recursos CodeCommit relacionados (como credenciais Git e chaves SSH para o usuário do IAM usar ao acessar repositórios). Aplique essa política aos usuários a quem você deseja conceder a capacidade de ler o conteúdo de um repositório, mas não de fazer alterações a seus conteúdos.

A AWSCode CommitReadOnly política contém a seguinte declaração de política:

------
#### [ 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 políticas e notificações gerenciadas
<a name="notifications-permissions"></a>

AWS CodeCommit suporta notificações, que podem notificar os usuários sobre mudanças importantes nos repositórios. Políticas gerenciadas para CodeCommit incluir declarações de política para funcionalidade de notificação. Para obter mais informações, consulte [O que são notificações?](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/welcome.html).

### Permissões relacionadas a notificações em políticas gerenciadas de acesso total
<a name="notifications-fullaccess"></a>

A política gerenciada `AWSCodeCommitFullAccess` inclui as declarações a seguir para permitir acesso total às notificações. Os usuários com essa política gerenciada aplicada também podem criar e gerenciar tópicos do Amazon SNS para notificações, assinar e cancelar a assinatura de usuários dos tópicos, listar tópicos a serem escolhidos como destinos para regras de notificação e listar clientes do Amazon Q Developer configurados no 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": "*"
    }
```

### Permissões relacionadas a notificações em políticas gerenciadas somente leitura
<a name="notifications-readonly"></a>

A política gerenciada `AWSCodeCommitReadOnlyAccess` inclui as instruções a seguir para permitir acesso somente leitura às notificações. Os usuários com essa política gerenciada aplicada podem visualizar notificações de recursos, mas não podem criá-los, gerenciá-los ou assiná-los. 

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

### Permissões relacionadas a notificações em outras políticas gerenciadas
<a name="notifications-otheraccess"></a>

A política gerenciada `AWSCodeCommitPowerUser` inclui as instruções a seguir para permitir que os usuários criem, editem e assinem notificações. Os usuários não podem excluir regras de notificação nem gerenciar tags de recursos.

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

Para obter mais informações sobre o IAM e as notificações, consulte [Identity and Access Management para Notificações do AWS CodeStar](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/security-iam.html).

## AWS CodeCommit políticas gerenciadas e Amazon CodeGuru Reviewer
<a name="codeguru-permissions"></a>

CodeCommit oferece suporte ao Amazon CodeGuru Reviewer, um serviço automatizado de revisão de código que usa análise de programas e aprendizado de máquina para detectar problemas comuns e recomendar correções em seu código Java ou Python. Políticas gerenciadas para CodeCommit incluir declarações de política para a funcionalidade CodeGuru Reviewer. Para obter mais informações, consulte [O que é o Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html).

### Permissões relacionadas ao CodeGuru revisor em AWSCode CommitFullAccess
<a name="codeguru-fullaccess"></a>

A política `AWSCodeCommitFullAccess` gerenciada inclui as seguintes declarações para permitir que o CodeGuru revisor seja associado e desassociado CodeCommit dos repositórios. Os usuários com essa política gerenciada aplicada também podem visualizar o status da associação entre os CodeCommit repositórios e o CodeGuru Reviewer e visualizar o status dos trabalhos de revisão para 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"
        }
      }
    }
```

### Permissões relacionadas ao CodeGuru revisor em AWSCode CommitPowerUser
<a name="codeguru-poweruser"></a>

A política `AWSCodeCommitPowerUser` gerenciada inclui as seguintes declarações para permitir que os usuários associem e desassociem repositórios com o CodeGuru Reviewer, visualizem o status da associação e visualizem o status dos trabalhos de revisão para 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"
        }
      }
    }
```

### Permissões relacionadas ao CodeGuru revisor em AWSCode CommitReadOnly
<a name="codeguru-readonly"></a>

A política `AWSCodeCommitReadOnlyAccess` gerenciada inclui as seguintes declarações para permitir acesso somente para leitura ao status da associação de CodeGuru revisores e visualizar o status dos trabalhos de revisão para pull requests. Os usuários com essa política gerenciada aplicada não podem associar ou desassociar repositórios. 

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

### Função vinculada ao serviço Amazon CodeGuru Reviewer
<a name="codeguru-slr"></a>

Quando você associa um repositório ao CodeGuru Reviewer, uma função vinculada ao serviço é criada para que o CodeGuru Reviewer possa detectar problemas e recomendar correções para o código Java ou Python em pull requests. A função vinculada ao serviço é chamada de AWSServiceRoleForAmazonCodeGuruReviewer. Para obter mais informações, consulte [Usando funções vinculadas ao serviço para o Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/using-service-linked-roles.html).

Para obter mais informações, consulte [Políticas gerenciadas pela AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) no *Guia do usuário do IAM*.

## CodeCommit atualizações nas políticas AWS gerenciadas
<a name="security-iam-awsmanpol-updates"></a>



Veja detalhes sobre as atualizações das políticas AWS gerenciadas CodeCommit desde que esse serviço começou a rastrear essas alterações. Para obter alertas automáticos sobre alterações feitas nesta página, assine o feed RSS em [AWS CodeCommit Histórico do documento do Guia do Usuário](history.md).




| Alteração | Descrição | Data | 
| --- | --- | --- | 
|  [AWS política gerenciada: AWSCode CommitFullAccess](#managed-policies-full) e [AWS política gerenciada: AWSCode CommitPowerUser](#managed-policies-poweruser): atualização em políticas existentes  |  CodeCommit adicionou uma permissão a essas políticas para oferecer suporte a um tipo adicional de notificação usando o Amazon Q Developer em aplicativos de bate-papo. As AWSCode CommitFullAccess políticas AWSCode CommitPowerUser e foram alteradas para adicionar uma permissão,`chatbot:ListMicrosoftTeamsChannelConfigurations`.  | 16 de maio de 2023 | 
|  [AWS política gerenciada: AWSCode CommitReadOnly](#managed-policies-read) – atualização para uma política existente  |  CodeCommit removeu uma permissão duplicada da política.  AWSCodeCommitReadOnly Foi alterado para remover uma permissão duplicada,`"iam:ListAccessKeys"`.  | 18 de agosto de 2021 | 
|  CodeCommit começou a rastrear alterações  |  CodeCommit começou a rastrear as mudanças em suas políticas AWS gerenciadas.  | 18 de agosto de 2021 | 

# Exemplos de política gerenciada pelo cliente
<a name="customer-managed-policies"></a>

Você pode criar suas próprias políticas personalizadas do IAM para permitir permissões para CodeCommit ações e recursos. Você pode anexar essas políticas personalizadas a usuários ou grupos do IAM que exijam essas permissões. Você também pode criar suas próprias políticas personalizadas de IAM para integração CodeCommit entre outros AWS serviços.

**Topics**
+ [Exemplos de políticas de identidade gerenciadas pelo cliente](#customer-managed-policies-identity)

## Exemplos de políticas de identidade gerenciadas pelo cliente
<a name="customer-managed-policies-identity"></a>

O exemplo a seguir de políticas do IAM concede permissões para várias CodeCommit ações. Use-os para limitar o CodeCommit acesso de seus usuários e funções do IAM. Essas políticas controlam a capacidade de realizar ações com o CodeCommit console AWS SDKs, a API ou AWS CLI o.



**nota**  
Todos os exemplos usam a região Oeste dos EUA (Oregon) (us-west-2) e contêm uma conta fictícia. IDs

 **Exemplos**
+ [Exemplo 1: Permitir que um usuário realize CodeCommit operações em uma única Região da AWS](#identity-based-policies-example-1)
+ [Exemplo 2: permitir que um usuário use o Git para um único repositório](#identity-based-policies-example-2)
+ [Exemplo 3: permitir que um usuário conectado a partir de um intervalo de endereços IP especificado acesse um repositório](#identity-based-policies-example-3)
+ [Exemplo 4: negar ou permitir ações em ramificações](#identity-based-policies-example-4)
+ [Exemplo 5: negar ou permitir ações em repositórios com tags](#identity-based-policies-example-5)

### Exemplo 1: Permitir que um usuário realize CodeCommit operações em uma única Região da AWS
<a name="identity-based-policies-example-1"></a>

A política de permissões a seguir usa um caractere curinga (`"codecommit:*"`) para permitir que os usuários realizem todas as CodeCommit ações na região us-east-2 e não em outra. Regiões da 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"
                }
            }
        }
    ]
}
```

------

### Exemplo 2: permitir que um usuário use o Git para um único repositório
<a name="identity-based-policies-example-2"></a>

Em CodeCommit, as permissões da política `GitPull` do IAM se aplicam a qualquer comando do cliente Git do qual os dados são recuperados CodeCommit, incluindo **git fetch****git clone**, e assim por diante. Da mesma forma, as permissões da política `GitPush` do IAM se aplicam a qualquer comando do cliente Git para o qual os dados são enviados. CodeCommit Por exemplo, se a permissão da política `GitPush` do IAM estiver definida como `Allow`, um usuário poderá enviar via push a exclusão de uma ramificação usando o protocolo Git. Esse envio via push não é afetado por qualquer permissão aplicada à operação `DeleteBranch` para esse usuário do IAM. A `DeleteBranch` permissão se aplica às ações realizadas com o console, o AWS CLI SDKs, o e a API, mas não com o protocolo Git. 

O exemplo a seguir permite que o usuário especificado extraia e envie para o CodeCommit repositório chamado`MyDemoRepo`:

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

****  

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

------

### Exemplo 3: permitir que um usuário conectado a partir de um intervalo de endereços IP especificado acesse um repositório
<a name="identity-based-policies-example-3"></a>

Você pode criar uma política que só permite que os usuários se conectem a um repositório do CodeCommit se o endereço IP deles estiver dentro de determinado intervalo de endereços IP. Existem duas abordagens igualmente válidas para isso. Você pode criar uma `Deny` política que CodeCommit proíba operações se o endereço IP do usuário não estiver dentro de um bloco específico ou criar uma `Allow` política que permita CodeCommit operações se o endereço IP do usuário estiver dentro de um bloco específico.

Você pode criar uma política `Deny` que nega o acesso a todos os usuários que não estão dentro de um determinado intervalo de IPs. Por exemplo, você pode anexar a política gerenciada AWSCodeCommitPowerUser e uma política gerenciada pelo cliente a todos os usuários que necessitam de acesso ao seu repositório. O exemplo de política a seguir nega todas as CodeCommit permissões aos usuários cujos endereços IP não estejam dentro do bloco de endereços IP especificado de 203.0.113.0/16:

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

****  

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

------

O exemplo de política a seguir permite que o usuário especificado acesse um CodeCommit repositório nomeado MyDemoRepo com as permissões equivalentes da política AWSCode CommitPowerUser gerenciada somente se o endereço IP estiver dentro do bloco de endereços especificado de 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"
               ]
            }
         }
      }
   ]
}
```

------



### Exemplo 4: negar ou permitir ações em ramificações
<a name="identity-based-policies-example-4"></a>

Você pode criar uma política que nega aos usuários permissões para as ações que você especificar em uma ou mais ramificações. Como alternativa, você pode criar uma política que permita ações em uma ou mais ramificações que, de outra forma, elas não teriam em outras ramificações de um repositório. Você pode usar essas políticas com as políticas gerenciadas adequadas (predefinidas). Para obter mais informações, consulte [Limite os envios e fusões às ramificações em AWS CodeCommit](how-to-conditional-branch.md).

Por exemplo, você pode criar uma `Deny` política que negue aos usuários a capacidade de fazer alterações em uma ramificação chamada main, incluindo a exclusão dessa ramificação, em um repositório chamado. *MyDemoRepo* Você pode usar essa política com a política gerenciada **AWSCodeCommitPowerUser**. Os usuários com essas duas políticas aplicadas poderiam criar e excluir ramificações, criar pull requests e todas as outras ações conforme permitido **AWSCodeCommitPowerUser**, mas não conseguiriam enviar alterações para a ramificação chamada *main*, adicionar ou editar um arquivo na ramificação *principal* no CodeCommit console ou mesclar ramificações ou uma pull request na ramificação *principal*. Como `Deny` é aplicado ao `GitPush`, você deve incluir uma instrução `Null` à política para permitir que as chamadas `GitPush` iniciais sejam analisadas para validação quando os usuários fizerem envios por push de seus repositórios locais.

**dica**  
Se desejar criar uma política que se aplica a todas as ramificações chamadas *master* em todos os repositórios da sua conta da Amazon Web Services, em `Resource`, especifique um asterisco ( `*` ) em vez de um ARN de repositório.

------
#### [ 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"
                }
            }
        }
    ]
}
```

------

O exemplo de política a seguir permite ao usuário fazer alterações em uma ramificação chamada master em todos os repositórios de uma conta da Amazon Web Services. Ele não permitirá alterações em nenhuma outra ramificação. Você pode usar essa política com a política AWSCode CommitReadOnly gerenciada para permitir envios automatizados para o repositório na ramificação principal. Como o efeito é `Allow`, este exemplo de política não funciona com políticas gerenciadas, como a AWSCodeCommitPowerUser.

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

****  

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

------



### Exemplo 5: negar ou permitir ações em repositórios com tags
<a name="identity-based-policies-example-5"></a>

Você pode criar uma política que permita ou negue ações em repositórios com base nas AWS tags associadas a esses repositórios e, em seguida, aplicar essas políticas aos grupos do IAM que você configura para gerenciar usuários do IAM. Por exemplo, você pode criar uma política que negue todas as CodeCommit ações em qualquer repositório com a AWS tag *Status* da chave e o valor da chave *Secret* e, em seguida, aplicar essa política ao grupo do IAM que você criou para desenvolvedores gerais ()*Developers*. Em seguida, você precisa garantir que os desenvolvedores que trabalham nesses repositórios marcados não sejam membros desse *Developers* grupo geral, mas pertençam a um grupo diferente do IAM que não tenha a política restritiva aplicada () *SecretDevelopers*.

*O exemplo a seguir nega todas as CodeCommit ações em repositórios marcados com o *status* da chave e o valor da chave 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"
        }
      }
    }
  ]
}
```

------

Você pode refinar ainda mais essa estratégia, fornecendo repositórios específicos, em vez de todos os repositórios, como recursos. Você também pode criar políticas que permitam CodeCommit ações em todos os repositórios que não estejam marcados com tags específicas. Por exemplo, a política a seguir permite o equivalente a **AWSCodeCommitPowerUser**permissões para CodeCommit ações, exceto que ela só permite CodeCommit ações em repositórios não marcados com as tags especificadas:

**nota**  
Este exemplo de política inclui somente ações para CodeCommit. Ela não inclui ações para outros AWS serviços incluídos na política **AWSCodeCommitPowerUser**gerenciada. Para obter mais informações, consulte [AWS política gerenciada: 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": "*"
    }
  ]
}
```

------