

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 的身份验证和访问控制 AWS CodeCommit
<a name="auth-and-access-control"></a>

访问 AWS CodeCommit 需要凭证。这些证书必须具有访问 AWS 资源（例如 CodeCommit 存储库）和您的 IAM 用户的权限，您使用这些资源来管理您的 Git 证书或用于建立 Git 连接的 SSH 公钥。以下各节详细介绍了如何使用 [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 以及 CodeCommit 如何帮助保护对资源的访问：
+ [身份验证](#authentication)
+ [访问控制](#access-control)

## 身份验证
<a name="authentication"></a>

由于 CodeCommit 存储库基于 Git 且支持 Git 的基本功能，包括 Git 证书，因此我们建议您在使用时使用 IAM 用户。 CodeCommit您可以使用其他身份类型 CodeCommit 进行访问，但其他身份类型会受到限制，如下所述。

身份类型：
+ **IAM 用户**：[IAM 用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)是您的 Amazon Web Services 中具有特定自定义权限的身份。例如，IAM 用户可以有权创建和管理用于访问 CodeCommit 存储库的 Git 证书。**这是推荐使用的用户类型 CodeCommit。**您可以使用 IAM 用户名和密码登录安全 AWS 网页 [AWS 管理控制台](https://console.aws.amazon.com/)，例如[AWS 讨论论坛](https://forums.aws.amazon.com/)或[AWS 支持 中心](https://console.aws.amazon.com/support/home#/)。

  您可以生成 Git 凭证或将 SSH 公有密钥与 IAM 用户关联，也可以安装和配置 **git-remote-codecommit**。这些是设置 Git 以使用 CodeCommit 仓库的最简单方法。您可以使用 [Git 凭证](setting-up-gc.md)在 IAM 中生成静态用户名和密码。然后在使用 Git 的 HTTPS 连接和支持 Git 用户名及密码身份验证的任何第三方工具中使用这些凭证。通过 SSH 连接，您可以在本地计算机上创建公钥和私钥文件，Git 将其 CodeCommit 用于 SSH 身份验证。将公有密钥与 IAM 用户关联，然后将私有密钥存储在本地计算机上。**[git-remote-codecommit](setting-up-git-remote-codecommit.md)** 扩展 Git 本身，不要求为用户设置 Git 凭证。

  此外，还可以为每个用户生成[访问密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)。当您以编程方式访问 AWS 服务时，请使用访问密钥，可以[是通过其中一个](https://aws.amazon.com/tools/)访问密钥 AWS SDKs或使用 [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/)。软件开发工具包和 CLI 工具使用访问密钥对您的请求进行加密签名。如果您不使用这些 AWS 工具，则必须自己签署请求。 CodeCommit 支持*签名版本 4*，这是一种用于对入站 API 请求进行身份验证的协议。有关验证请求的更多信息，请参阅《AWS 一般参考》** 中的[签名版本 4 签名流程](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。
+ **Amazon Web Services 账户根用户** — 注册时 AWS，您需要提供与您的亚马逊云科技账户关联的电子邮件地址和密码。这些是您的*根凭证*，它们提供对您所有 AWS 资源的完全访问权限。某些 CodeCommit 功能不适用于根账户用户。此外，将 Git 与 root 帐户一起使用 Git 的唯一方法是安装和配置**git-remote-codecommit**（推荐），或者配置包含在中的 AWS 凭证助手。 AWS CLI您不能对根账户用户使用 Git 凭证或 SSH 公有-私有密钥对。出于这些原因，我们不建议在与之交互时使用您的根账户用户 CodeCommit。
**重要**  
出于安全考虑，我们建议您仅使用根凭证创建*管理员用户*，该用户是对您的 AWS 账户具有完全访问权的 *IAM 用户*。随后，您可以使用此管理员用户来创建具有有限权限的其他 IAM 用户和角色。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#create-iam-users)和[创建管理员用户和组](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html)。
+ **IAM Identity Center 和 IAM Identity Center 中的用户** — AWS IAM Identity Center 扩展了的功能，提供了一个集中管理用户 AWS 账户 及其对云应用程序的访问权限的集中场所。 AWS Identity and Access Management 虽然 IAM Identity Center 是建议大多数用户使用 AWS的最佳实践，但目前并未提供针对 Git 凭证或 SSH 密钥对的机制。这些用户可以安装和配置**git-remote-codecommit**到本地克隆 CodeCommit存储库，但并非所有集成开发环境 (IDEs) 都支持克隆、推送或拉取**git-remote-codecommit**。

  作为最佳实践，要求人类用户使用与身份提供商的联合身份验证才能 AWS 服务 使用临时证书进行访问。

  *联合身份是指*来自您的企业目录、Web 身份提供商的用户 Directory Service ，或者 AWS 服务 使用来自身份源的凭据进行访问的用户。联合身份代入可提供临时凭证的角色。

  要集中管理访问权限，建议使用。 AWS IAM Identity Center有关更多信息，请参阅《AWS IAM Identity Center 用户指南》**中的[什么是 IAM Identity Center？](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。
+ **IAM 角色**：与 IAM 用户类似，[IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)是可在账户中创建以授予特定权限的 IAM 身份。

  *[IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)*是具有特定权限的身份，可提供临时凭证。您可以通过[从用户切换到 IAM 角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)或调用 AWS CLI 或 AWS API 操作来代入角色。有关更多信息，请参阅《IAM 用户指南》**中的[担任角色的方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)。

  IAM 角色对于联合用户访问、临时 IAM 用户权限、跨账户访问、跨服务访问以及在 Amazon EC2 上运行的应用程序非常有用。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的跨账户资源访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。
**注意**  
 您不能对联合身份用户使用 Git 凭证或 SSH 公有-私有密钥对。此外，用户偏好对于联合身份用户不可用。有关如何使用联合访问设置连接的信息，请参阅[使用的 HTTPS 连接 AWS CodeCommit 的设置步骤 git-remote-codecommit](setting-up-git-remote-codecommit.md)。

## 访问控制
<a name="access-control"></a>

您可以拥有有效的凭证来验证您的请求，但是除非您拥有权限，否则您无法创建或访问 CodeCommit 资源。例如，您必须拥有权限才能查看存储库、推送代码、创建和管理 Git 凭证等。

以下各节介绍如何管理的权限 CodeCommit。我们建议您先阅读概述。
+ [管理 CodeCommit 资源访问权限概述](#auth-and-access-control-iam-access-control-identity-based)
+ [使用基于身份的策略（IAM 策略） CodeCommit](auth-and-access-control-iam-identity-based-access-control.md)
+ [CodeCommit 权限参考](auth-and-access-control-permissions-reference.md)

## 管理 CodeCommit 资源访问权限概述
<a name="auth-and-access-control-iam-access-control-identity-based"></a>

每个 AWS 资源都归亚马逊云科技账户所有。创建或访问资源的权限由权限策略进行管理。账户管理员可以向 IAM 身份（即：用户、组和角色）附加权限策略。某些服务（例如） AWS Lambda还支持为资源附加权限策略。

**注意**  
*账户管理员*（或管理员用户）是具有管理员权限的用户。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 最佳实操](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

在授予权限时，您确定谁获得权限、获得对哪些资源的权限以及允许对这些资源执行的具体操作。

**Topics**
+ [CodeCommit 资源和运营](#arn-formats)
+ [了解资源所有权](#understanding-resource-ownership)
+ [管理对 资源的访问](#managing-access-resources)
+ [资源范围界定在 CodeCommit](#resource-scoping)
+ [指定策略元素：资源、操作、效果和委托方](#actions-effects-principals)
+ [在策略中指定条件](#policy-conditions)

### CodeCommit 资源和运营
<a name="arn-formats"></a>

在中 CodeCommit，主要资源是存储库。每种资源均有相关联的唯一 Amazon 资源名称（ARN）。在策略中，您可以使用 Amazon 资源名称（ARN）标识策略应用到的资源。有关更多信息 ARNs，请参阅中的 [Amazon 资源名称 (ARN) 和 AWS 服务命名空间](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)。*Amazon Web Services 一般参考* CodeCommit 目前不支持其他资源类型，这些资源类型被称为子资源。

下表描述了如何指定 CodeCommit 资源。


| 资源类型 | ARN 格式 | 
| --- | --- | 
| Repository |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  所有 CodeCommit 存储库  |  arn:aws:codecommit:\$1  | 
|  指定账户拥有的所有 CodeCommit 存储库 AWS 区域  |  arn: aws: codecommit::: \$1 *region* *account-id*  | 

**注意**  
大多数 AWS 服务都将冒号 (:) 或正斜杠 (/) ARNs 视为同一个字符。但是， CodeCommit 要求资源模式和规则完全匹配。在创建事件模式时，请务必使用正确的 ARN 字符，以使其与资源中的 ARN 语法匹配。

例如，您可以使用特定存储库 (*MyDemoRepo*) 的 ARN 在语句中指定它，如下所示：

```
"Resource": "arn:aws:codecommit:us-west-2:111111111111:MyDemoRepo"
```

要指定属于某一特定账户的所有存储库，请使用通配符 (\$1)，如下所示：

```
"Resource": "arn:aws:codecommit:us-west-2:111111111111:*"
```

要指定所有资源，或者如果特定 API 操作不支持 ARNs，请在`Resource`元素中使用通配符 (\$1)，如下所示：

```
"Resource": "*"
```

您还可以使用通配符（\$1）指定与某一存储库名称部分匹配的所有资源。例如，以下 ARN 指定了以该名称开头`MyDemo`且注册到 Amazon Web Services 账户`111111111111`的所有 CodeCommit存储库：`us-east-2` AWS 区域

```
arn:aws:codecommit:us-east-2:111111111111:MyDemo*
```

 有关与 CodeCommit 资源配合使用的可用操作的列表，请参阅[CodeCommit 权限参考](auth-and-access-control-permissions-reference.md)。

### 了解资源所有权
<a name="understanding-resource-ownership"></a>

Amazon Web Services 账户拥有在该账户中创建的资源，无论这些资源由谁创建。具体来说，资源所有者是验证资源创建请求的[主体实体](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html)（即根账户、IAM 用户或 IAM 角色）的 Amazon Web Services 账户。以下示例说明了它的工作原理：
+ 如果您在您的 Amazon Web Services 账户中创建 IAM 用户并向该用户授予创建 CodeCommit 资源的权限，则该用户可以创建 CodeCommit 资源。但是，用户所属的亚马逊 Web Services 账户拥有这些 CodeCommit 资源。
+ 如果您使用亚马逊云科技账户的根账户凭证来创建规则，则您的亚马逊云科技账户就是该 CodeCommit 资源的所有者。
+ 如果您在您的 Amazon Web Services 账户中创建具有创建 CodeCommit 资源权限的 IAM 角色，则任何能够担任该角色的人都可以创建 CodeCommit 资源。该角色所属的您的亚马逊 Web Services 账户拥有这些 CodeCommit 资源。

### 管理对 资源的访问
<a name="managing-access-resources"></a>

要管理对 AWS 资源的访问权限，您可以使用权限策略。*权限*策略规定谁可以访问哪些内容。下一节介绍权限策略创建选项。

**注意**  
本节讨论在的上下文中使用 IAM CodeCommit。这里不提供有关 IAM 服务的详细信息。有关 IAM 的更多信息，请参阅《IAM 用户指南》**中的[什么是 IAM？](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)。有关 IAM 策略语法和说明的信息，请参阅《IAM 用户指南》**中的 [IAM 策略参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)。

附加到 IAM 身份的权限策略称作基于身份的策略（IAM policy）。附加到资源的权限策略称作基于资源的策略。目前，仅 CodeCommit支持基于身份的策略（IAM 策略）。

**Topics**
+ [基于身份的策略（IAM 策略）](#identity-based-policies)
+ [基于资源的策略](#resource-based-policies-overview)

#### 基于身份的策略（IAM 策略）
<a name="identity-based-policies"></a>

要管理对 AWS 资源的访问权限，您需要向 IAM 身份附加权限策略。在中 CodeCommit，您可以使用基于身份的策略来控制对存储库的访问权限。例如，您可以执行以下操作：
+ 将@@ **权限策略附加到您账户中的用户或群组**-要授予用户在 CodeCommit 控制台中查看 CodeCommit 资源的权限，请将基于身份的权限策略附加到该用户所属的用户或群组。
+ **将权限策略附加到角色（授予跨账户权限）**：委托（例如，要授予跨账户存取权限时）需要在拥有资源的账户（信任账户）与包含需要访问资源的用户的账户（可信账户）之间建立信任。权限策略授予角色用户对资源执行预期任务所需的权限。信任策略指定允许哪些可信账户授予其用户代入角色的权限。有关更多信息，请参阅 [IAM 术语和概念](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html)。

  要授予跨账户权限，可将基于身份的权限策略附加到 IAM 角色。例如，账户 A 中的管理员可以创建一个角色来向另一个 Amazon Web Services 账户（例如账户 B）或一项 AWS 服务授予跨账户权限，如下所示：

  1. 账户 A 管理员可以创建一个 IAM 角色，然后向该角色附加授予其访问账户 A 中资源的权限策略。

  1. 账户 A 管理员可以把信任策略附加至用来标识账户 B 的角色，账户 B 由此可以作为主体代入该角色。

  1. 然后，账户 B 管理员可以将代入该角色的权限委托给账户 B 中的任何用户。这样，账户 B 中的用户就可以创建或访问账户 A 中的资源。如果您想授予担任该角色的 AWS 服务权限，则信任策略中的委托人也可以是 AWS 服务委托人。有关更多信息，请参阅 [IAM 术语和概念](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html)中的“委托”。

  有关使用 IAM 委托权限的更多信息，请参阅《IAM 用户指南》**中的[访问权限管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)。



以下示例策略允许用户在名为 *MyDemoRepo* 的存储库中创建一个分支：

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

****  

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

------

要限制账户中的用户有权访问的调用和资源，可以创建特定的 IAM policy，然后将这些策略附加到 IAM 用户。有关如何创建 IAM 角色以及浏览的 IAM 策略声明示例 CodeCommit，请参阅[客户管理型身份策略示例](customer-managed-policies.md#customer-managed-policies-identity)。

#### 基于资源的策略
<a name="resource-based-policies-overview"></a>

一些服务（如 Amazon S3）支持基于资源的权限策略。例如，您可以将基于资源的策略附加到 S3 存储桶，以管理对该存储桶的访问权限。 CodeCommit 不支持基于资源的策略，但您可以使用标签来识别资源，然后可以在 IAM 策略中使用这些资源。有关基于标签的策略示例，请参阅[基于身份的策略（IAM 策略）](#identity-based-policies)。

### 资源范围界定在 CodeCommit
<a name="resource-scoping"></a>

在中 CodeCommit，您可以将基于身份的策略和权限限定为资源的范围，如中所述。[CodeCommit 资源和运营](#arn-formats)但是，不能将 `ListRepositories` 权限的范围限定为某一资源，而必须将其范围设置为所有资源 (使用通配符 `*`)。否则，该操作将会失败。

所有其他 CodeCommit 权限都可以限定为资源。

### 指定策略元素：资源、操作、效果和委托方
<a name="actions-effects-principals"></a>

您可以创建策略来允许或拒绝用户访问资源，或者允许或拒绝用户对这些资源采取特定操作。 CodeCommit 定义了一组公共 API 操作，用于定义用户如何使用服务，无论是通过 CodeCommit 控制台、 SDKs、还是直接调用这些操作 APIs。 AWS CLI要授予这些 API 操作的权限，请 CodeCommit 定义一组可在策略中指定的操作。

某些 API 操作可能需要执行多个操作的权限。有关资源和 API 操作的更多信息，请参阅 [CodeCommit 资源和运营](#arn-formats) 和 [CodeCommit 权限参考](auth-and-access-control-permissions-reference.md)。

下面是基本的策略元素：
+ **资源**：要标识策略所适用的资源，可以使用 Amazon 资源名称 (ARN)。有关更多信息，请参阅 [CodeCommit 资源和运营](#arn-formats)。
+ **操作**：要标识要允许或拒绝的资源操作，可以使用操作关键字。例如，根据指定的权限`Effect`，该`codecommit:GetBranch`权限允许或拒绝用户执行`GetBranch`操作，从而获取有关 CodeCommit 存储库中分支的详细信息。
+ **效果**：您可以指定当用户请求特定操作时的效果（允许或拒绝）。如果没有显式授予（允许）对资源的访问权限，则隐式拒绝访问。也可显式拒绝对资源的访问，这样即使有其他策略授予了访问权限，也可确保用户无法访问该资源。
+ **委托人** — 在基于身份的策略（IAM 策略）（唯一 CodeCommit 支持的策略类型）中，策略所关联的用户是隐式委托人。

有关 IAM policy 语法的更多信息，请参阅《IAM 用户指南》**中的 [IAM policy 参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)。

有关显示所有 CodeCommit API 操作及其适用的资源的表格，请参阅[CodeCommit 权限参考](auth-and-access-control-permissions-reference.md)。

### 在策略中指定条件
<a name="policy-conditions"></a>

授予权限时，可以使用 IAM 的访问策略语言指定策略生效的条件。例如，您可能希望策略仅在特定日期后应用。有关使用策略语言指定条件的更多信息，请参阅《IAM 用户指南》**中的[条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Condition)和[策略语法](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html)。

要表示条件，您可以使用预定义的条件键。没有特定于 CodeCommit 的条件键。但是，您可以根据需要使用 AWS范围内的条件键。有关 AWS范围密钥的完整列表，请参阅 *IAM 用户指南*中的[条件可用密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys)。

# 使用基于身份的策略（IAM 策略） CodeCommit
<a name="auth-and-access-control-iam-identity-based-access-control"></a>

以下基于身份的策略示例演示了账户管理员如何向 IAM 身份（用户、群组和角色）附加权限策略，以授予对资源执行操作的权限。 CodeCommit 

**重要**  
我们建议您先阅读介绍性主题，这些主题解释了管理 CodeCommit 资源访问权限的基本概念和选项。有关更多信息，请参阅 [管理 CodeCommit 资源访问权限概述](auth-and-access-control.md#auth-and-access-control-iam-access-control-identity-based)。

**Topics**
+ [使用 CodeCommit 控制台所需的权限](#console-permissions)
+ [在控制台中查看资源](#console-resources)
+ [AWS 的托管策略 CodeCommit](security-iam-awsmanpol.md)
+ [客户管理型策略示例](customer-managed-policies.md)

下面是基于身份的权限策略的示例：

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

------

该政策有一条声明，允许用户获取有关名为的 CodeCommit存储库`MyDestinationRepo`以及该**us-east-2**区域`MyDemo`中所有以该名称开头的 CodeCommit 存储库的信息。

## 使用 CodeCommit 控制台所需的权限
<a name="console-permissions"></a>

要查看每个 CodeCommit API 操作所需的权限以及有关 CodeCommit 操作的更多信息，请参阅[CodeCommit 权限参考](auth-and-access-control-permissions-reference.md)。

要允许用户使用 CodeCommit 控制台，管理员必须向他们授予 CodeCommit 操作权限。例如，您可以将[AWSCodeCommitPowerUser](security-iam-awsmanpol.md#managed-policies-poweruser)托管策略或其等效策略附加到用户或组。

除了通过基于身份的策略向用户授予的权限外，还 CodeCommit需要 AWS Key Management Service (AWS KMS) 操作的权限。IAM 用户不需要这些操作的显式 `Allow` 权限，但该用户不能附加有任何将以下权限设为 `Deny` 的策略：

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

有关加密和的更多信息 CodeCommit，请参阅[AWS KMS 和加密](encryption.md)。

## 在控制台中查看资源
<a name="console-resources"></a>

 CodeCommit 控制台需要`ListRepositories`获得在您登录时显示您的 Amazon Web Services 账户的 AWS 区域 存储库列表的权限。该控制台还包括一个**转到资源**功能，可对资源快速执行不区分大小写的搜索。此搜索是在您登录的亚马逊 Web S AWS 区域 ervices 账户中执行的。将显示以下服务中的以下资源：
+ AWS CodeBuild：构建项目
+ AWS CodeCommit：存储库
+ AWS CodeDeploy：应用程序
+ AWS CodePipeline：管道

要在所有服务中跨资源执行此搜索，您必须具有如下权限：
+ CodeBuild: `ListProjects`
+ CodeCommit: `ListRepositories`
+ CodeDeploy: `ListApplications`
+ CodePipeline: `ListPipelines`

如果您没有针对某个服务的权限，搜索将不会针对该服务的资源返回结果。即使您有权限查看资源，但如果特定资源明确 `Deny` 查看，搜索也不会返回这些资源。

# AWS 的托管策略 CodeCommit
<a name="security-iam-awsmanpol"></a>

要向用户、群组和角色添加权限，使用 AWS 托管策略比自己编写策略要容易得多。创建仅为团队提供所需权限的 [IAM 客户管理型策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)需要时间和专业知识。要快速入门，您可以使用我们的 AWS 托管策略。这些策略涵盖常见使用案例，可在您的 AWS 账户中使用。有关 AWS 托管策略的更多信息，请参阅 *IAM 用户指南*中的[AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

AWS 服务维护和更新 AWS 托管策略。您无法更改 AWS 托管策略中的权限。服务偶尔会向 AWS 托管式策略添加额外权限以支持新特征。此类更新会影响附加策略的所有身份（用户、组和角色）。当启动新特征或新操作可用时，服务最有可能会更新 AWS 托管式策略。服务不会从 AWS 托管策略中移除权限，因此策略更新不会破坏您的现有权限。

此外，还 AWS 支持跨多个服务的工作职能的托管策略。例如，**ReadOnlyAccess** AWS 托管策略提供对所有 AWS 服务和资源的只读访问权限。当服务启动一项新功能时， AWS 会为新操作和资源添加只读权限。有关工作职能策略的列表和说明，请参阅 *IAM 用户指南*中的[适用于工作职能的AWS 托管式策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。

AWS 通过提供由创建和管理的独立 IAM 策略来解决许多常见用例 AWS。这些 AWS 托管策略授予常见用例所需的权限。的托管策略 CodeCommit 还为获得相关政策的用户提供了在其他服务（例如 IAM、Amazon SNS 和 Amazon Ev CloudWatch ents）中执行操作的权限，以履行其责任。例如，该 AWSCodeCommitFullAccess 策略是一项管理级别的用户策略，允许拥有此策略的用户创建和管理存储库的事件规则（名称前缀为的规则），以及创建和管理存储库相关 CloudWatch 事件（名称前缀`codecommit`为的主题）通知的 Amazon SNS 主题，以及管理中的存储库。`codecommit` CodeCommit

以下 AWS 托管策略是特定的，您可以将其附加到账户中的用户 CodeCommit。

**Topics**
+ [AWS 托管策略： AWSCodeCommitFullAccess](#managed-policies-full)
+ [AWS 托管策略： AWSCodeCommitPowerUser](#managed-policies-poweruser)
+ [AWS 托管策略： AWSCodeCommitReadOnly](#managed-policies-read)
+ [CodeCommit 托管策略和通知](#notifications-permissions)
+ [AWS CodeCommit 托管政策和 Amazon CodeGuru Reviewer](#codeguru-permissions)
+ [CodeCommit AWS 托管策略的更新](#security-iam-awsmanpol-updates)

## AWS 托管策略： AWSCodeCommitFullAccess
<a name="managed-policies-full"></a>

您可以将 `AWSCodeCommitFullAccess` 策略附加到 IAM 身份。此政策授予对的完全访问权限 CodeCommit。此政策仅适用于您希望授予其对 Amazon Web Services 账户中 CodeCommit 存储库和相关资源的完全控制权（包括删除存储库的权限）的管理员级用户。

该 AWSCodeCommitFullAccess 政策包含以下政策声明：

------
#### [ 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 托管策略： AWSCodeCommitPowerUser
<a name="managed-policies-poweruser"></a>

您可以将 `AWSCodeCommitPowerUser` 策略附加到 IAM 身份。该政策允许用户访问存储库相关资源的所有功能，但不允许他们在其他服务 AWS （例如 Amazon Events）中删除 CodeCommit 存储库或创建或删除与存储库相关的资源。 CodeCommit CloudWatch 建议对大多数用户应用此策略。

该 AWSCodeCommitPowerUser 政策包含以下政策声明：

------
#### [ 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 托管策略： AWSCodeCommitReadOnly
<a name="managed-policies-read"></a>

您可以将 `AWSCodeCommitReadOnly` 策略附加到 IAM 身份。此政策授予对其他 AWS 服务中 CodeCommit 与仓库相关的资源的只读访问权限，以及创建和管理自己的 CodeCommit相关资源（例如供其 IAM 用户在访问存储库时使用的 Git 证书和 SSH 密钥）的权限。针对希望向其授予读取存储库内容的能力但不能对内容进行任何更改的用户，应用此策略。

该 AWSCodeCommitReadOnly 政策包含以下政策声明：

------
#### [ 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 托管策略和通知
<a name="notifications-permissions"></a>

AWS CodeCommit 支持通知，它可以将仓库的重要更改通知用户。的托管策略 CodeCommit 包括通知功能的策略声明。有关更多信息，请参阅[什么是通知？](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/welcome.html)。

### 完全访问托管策略中的通知的相关权限
<a name="notifications-fullaccess"></a>

`AWSCodeCommitFullAccess` 托管策略包含以下语句，以允许对通知进行完全访问。应用此托管策略的用户还可以创建和管理用于通知的 Amazon SNS 主题、为用户订阅和取消订阅主题、列出要选择作为通知规则目标的主题，以及列出在聊天应用程序客户端中为 Slack 配置的 Amazon Q 开发者版。

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

### 只读托管策略中的通知的相关权限
<a name="notifications-readonly"></a>

`AWSCodeCommitReadOnlyAccess` 托管策略包含以下语句，以允许对通知进行只读访问。应用此托管策略的用户可以查看资源的通知，但无法创建、管理或订阅这些通知。

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

### 其他托管策略中的通知的相关权限
<a name="notifications-otheraccess"></a>

`AWSCodeCommitPowerUser` 托管策略包含以下语句，以允许用户创建、编辑和订阅通知。用户无法删除通知规则或管理资源的标签。

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

有关 IAM 和通知的更多信息，请参阅 [AWS CodeStar 通知的身份和访问管理](https://docs.aws.amazon.com/codestar-notifications/latest/userguide/security-iam.html)。

## AWS CodeCommit 托管政策和 Amazon CodeGuru Reviewer
<a name="codeguru-permissions"></a>

CodeCommit 支持 Amazon CodeGuru Reviewer，这是一项自动代码审查服务，它使用程序分析和机器学习来检测 Java 或 Python 代码中的常见问题并推荐修复方法。的托管策略 CodeCommit 包括 CodeGuru Reviewer 功能的策略声明。有关更多信息，请参阅[什么是 Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html)。

### 中与 CodeGuru 审阅者相关的权限 AWSCode CommitFullAccess
<a name="codeguru-fullaccess"></a>

`AWSCodeCommitFullAccess`托管策略包括以下语句，用于允许 CodeGuru Reviewer 与存储库关联和取消关联。 CodeCommit 应用了此托管策略的用户还可以查看 CodeCommit存储库与 CodeGuru Reviewer 之间的关联状态，并查看拉取请求的审阅作业的状态。

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

### 中与 CodeGuru 审阅者相关的权限 AWSCode CommitPowerUser
<a name="codeguru-poweruser"></a>

`AWSCodeCommitPowerUser`托管策略包括以下语句，允许用户将存储库与 CodeGuru Reviewer 关联和取消关联、查看关联状态以及查看拉取请求的审核任务状态。

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

### 中与 CodeGuru 审阅者相关的权限 AWSCode CommitReadOnly
<a name="codeguru-readonly"></a>

`AWSCodeCommitReadOnlyAccess`托管策略包括以下语句，允许对 CodeGuru Reviewer 关联状态进行只读访问并查看拉取请求的审阅作业状态。应用了此托管策略的用户无法关联或取消关联存储库。

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

### Amazon CodeGuru Reviewer 服务相关角色
<a name="codeguru-slr"></a>

当您将存储库与 CodeGuru Reviewer 关联时，系统会创建一个与服务相关的角色，这样 CodeGuru Reviewer 就可以检测问题并推荐拉取请求中的 Java 或 Python 代码的修复方法。服务相关角色命名为 AWSServiceRoleForAmazonCodeGuruReviewer。有关更多信息，请参阅[使用适用于 Amazon CodeGuru Reviewer 的服务相关角色](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/using-service-linked-roles.html)。

有关更多信息，请参阅《IAM 用户指南》**中的 [AWS 托管式策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

## CodeCommit AWS 托管策略的更新
<a name="security-iam-awsmanpol-updates"></a>



查看 CodeCommit 自该服务开始跟踪这些更改以来 AWS 托管策略更新的详细信息。要获得有关此页面更改的自动提示，请订阅 [AWS CodeCommit 用户指南文档历史记录](history.md) 的 RSS 源。




| 更改 | 描述 | 日期 | 
| --- | --- | --- | 
|  [AWS 托管策略： AWSCodeCommitFullAccess](#managed-policies-full) 和 [AWS 托管策略： AWSCodeCommitPowerUser](#managed-policies-poweruser) – 现有策略的更新  |  CodeCommit 在这些政策中添加了支持在聊天应用程序中使用 Amazon Q Developer 的额外通知类型的权限。  AWSCodeCommitPowerUser 和 AWSCodeCommitFullAccess 策略已更改为添加权限`chatbot:ListMicrosoftTeamsChannelConfigurations`。  | 2023 年 5 月 16 日 | 
|  [AWS 托管策略： AWSCodeCommitReadOnly](#managed-policies-read)：对现有策略的更新  |  CodeCommit 已从策略中移除重复的权限。  AWSCodeCommitReadOnly 已更改为删除重复权限`"iam:ListAccessKeys"`。  | 2021 年 8 月 18 日 | 
|  CodeCommit 开始跟踪更改  |  CodeCommit 开始跟踪其 AWS 托管策略的更改。  | 2021 年 8 月 18 日 | 

# 客户管理型策略示例
<a name="customer-managed-policies"></a>

您可以创建自己的自定义 IAM 策略以授予 CodeCommit 操作和资源的权限。您可以将这些自定义策略附加到需要这些权限的 IAM 用户或组。您还可以创建自己的自定义 IAM 策略，以便在与其他 AWS 服务 CodeCommit 之间进行集成。

**Topics**
+ [客户管理型身份策略示例](#customer-managed-policies-identity)

## 客户管理型身份策略示例
<a name="customer-managed-policies-identity"></a>

以下示例 IAM 策略授予各种 CodeCommit 操作的权限。使用它们来限制您的 IAM 用户和角色的 CodeCommit 访问权限。这些策略控制使用控制 CodeCommit 台 AWS SDKs、API 或执行操作的能力 AWS CLI。



**注意**  
所有示例都使用美国西部（俄勒冈）区域 (us-west-2)，并包含虚构账户。 IDs

 **示例**
+ [示例 1：允许用户在单个中执行 CodeCommit 操作 AWS 区域](#identity-based-policies-example-1)
+ [示例 2：允许用户对单个存储库使用 Git](#identity-based-policies-example-2)
+ [示例 3：允许从指定 IP 地址范围连接的用户访问存储库](#identity-based-policies-example-3)
+ [示例 4：拒绝或允许对分支执行操作](#identity-based-policies-example-4)
+ [示例 5：使用标签拒绝或允许对存储库执行操作](#identity-based-policies-example-5)

### 示例 1：允许用户在单个中执行 CodeCommit 操作 AWS 区域
<a name="identity-based-policies-example-1"></a>

以下权限策略使用通配符 (`"codecommit:*"`)，允许用户在 us-east-2 区域执行所有 CodeCommit操作，而不是从其他区域执行所有操作。 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"
                }
            }
        }
    ]
}
```

------

### 示例 2：允许用户对单个存储库使用 Git
<a name="identity-based-policies-example-2"></a>

在中 CodeCommit，`GitPull`IAM 策略权限适用于从中检索数据的任何 Git 客户端命令，包括 CodeCommit**git fetch****git clone**、等。同样，`GitPush`IAM 策略权限适用于向其发送数据的任何 Git 客户端命令 CodeCommit。例如，如果 `GitPush` IAM policy 权限设置为 `Allow`，则用户可以使用 Git 协议推送分支删除。针对该 IAM 用户的 `DeleteBranch` 操作应用的任何权限都不会影响该推送。该`DeleteBranch`权限适用于使用控制台、、和 API 执行的 AWS CLI操作 SDKs，但不适用于使用 Git 协议执行的操作。

以下示例允许指定用户从名为的存储库中提取和推送到该 CodeCommit 存储库`MyDemoRepo`：

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

****  

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

------

### 示例 3：允许从指定 IP 地址范围连接的用户访问存储库
<a name="identity-based-policies-example-3"></a>

您可以创建策略来只允许其 IP 地址位于特定 IP 地址范围内的用户连接 CodeCommit 存储库。可通过两种等效方法来实现此目的。您可以创建一个`Deny`在用户的 IP 地址不在特定区块内时禁止 CodeCommit 操作的`Allow`策略，也可以创建允许在用户的 IP 地址位于特定区块内时进行 CodeCommit 操作的策略。

您可以创建 `Deny` 策略，拒绝在特定 IP 范围之外的所有用户的访问。例如，您可以向需要访问存储库的所有用户附加 AWSCodeCommitPowerUser 托管策略和客户托管策略。以下示例策略拒绝其 IP 地址不在指定 IP 地址块 203.0.113.0/16 内的用户的所有 CodeCommit 权限：

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

****  

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

------

以下示例策略仅允许指定用户的 IP 地址在指定的地址块 203.0.113.0/16 内时访问 MyDemoRepo 具有 AWSCodeCommitPowerUser 托管策略等效权限的 CodeCommit存储库：

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

------



### 示例 4：拒绝或允许对分支执行操作
<a name="identity-based-policies-example-4"></a>

您可以创建一条策略，拒绝用户在一个或多个分支上执行指定操作的权限。或者，您可以创建一条策略，允许在一个或多个分支上执行某些操作，但在该存储库的其他分支上则不允许执行这些操作。这些策略可与相应的托管 (预定义) 策略结合使用。有关更多信息，请参阅 [限制推送和合并到中的分支 AWS CodeCommit](how-to-conditional-branch.md)。

例如，您可以创建一个`Deny`策略，拒绝用户在名为的存储库中对名为 main 的分支进行更改，包括删除该分支*MyDemoRepo*。此策略可与 **AWSCodeCommitPowerUser** 托管策略结合使用。应用了这两个策略的用户将能够创建和删除分支、创建拉取请求以及允许的所有其他操作 **AWSCodeCommitPowerUser**，但他们无法将更改推送到名为 *main 的分支，也无法在 CodeCommit 控制台*的主**分支中添加或编辑文件，也无法将分支或拉取请求合并到*主*分支中。由于 `Deny` 应用于 `GitPush`，您必须在该策略中包含 `Null` 语句，当用户从本地存储库进行推送时，分析初始 `GitPush` 调用是否有效。

**提示**  
如果您希望创建一个策略，应用于您的 Amazon Web Services 账户的所有存储库中名为 *main* 的所有分支，对于 `Resource`，请指定星号 (`*`) 而不是存储库 ARN。

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

------

以下示例策略允许用户对 Amazon Web Services 账户的所有存储库中名为 main 的分支进行更改。它不允许更改任何其他分支。您可以将此策略与 AWSCodeCommitReadOnly 托管策略一起使用，以允许自动推送到主分支中的存储库。由于效果为 `Allow`，所以此示例策略无法与 AWSCodeCommitPowerUser 这样的托管策略结合使用。

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

****  

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

------



### 示例 5：使用标签拒绝或允许对存储库执行操作
<a name="identity-based-policies-example-5"></a>

您可以根据与存储库关联的 AWS 标签创建允许或拒绝对存储库执行操作的策略，然后将这些策略应用于您为管理 IAM 用户而配置的 IAM 群组。例如，您可以创建一个策略，拒绝对 AWS 标签密钥为 *Stat* us 且*密*钥值为 Secret 的任何存储库 CodeCommit 执行所有操作，然后将该策略应用于您为普通开发者创建的 IAM 群组 (*Developers*)。然后，您需要确保在这些标记存储库上工作的开发人员不是该普通*Developers*群组的成员，而是属于未应用限制性策略的其他 IAM 群组 (*SecretDevelopers*)。

以下示例拒绝对标有 *Stat* us 密钥和密钥值为 S *ecret* 的存储库 CodeCommit 执行所有操作：

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

------

您可以通过指定特定存储库（而不是所有存储库）作为资源以进一步优化该策略。您还可以创建策略，允许对所有未使用特定标签标记的存储库 CodeCommit 执行操作。例如，以下策略仅允许对未使用指定标签标记的**AWSCodeCommitPowerUser**存储库 CodeCommit 执行操作，不同之处在于它只允许对未使用指定标签标记的存储库 CodeCommit 执行操作：

**注意**  
此策略示例仅包括针对的操作 CodeCommit。它不包括对**AWSCodeCommitPowerUser**托管策略中包含的其他 AWS 服务的操作。有关更多信息，请参阅[AWS 托管策略： AWSCodeCommitPowerUser](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": "*"
    }
  ]
}
```

------

# CodeCommit 权限参考
<a name="auth-and-access-control-permissions-reference"></a>

下表列出了每个 CodeCommit API 操作、您可以为其授予权限的相应操作以及用于授予权限的资源 ARN 的格式。根据该 API 允许的操作范围将 CodeCommit APIs 它们分成表格。在设置[访问控制](auth-and-access-control.md#access-control)和编写可附加到 IAM 身份的权限策略（基于身份的策略）时，请参考此表。

在创建权限策略时，可以在策略的 `Action` 字段中指定操作。在策略的 `Resource` 字段中以 ARN 的形式指定资源值，可以使用或不使用通配符 (\$1)。

要在 CodeCommit 策略中表达条件，请使用 AWS-wide 条件密钥。有关 AWS范围密钥的完整列表，请参阅 *IAM 用户指南*中的[可用密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys)。有关 IAM 策略 CodeCommit 中的操作、资源和条件键的完整信息，请参阅的[操作、资源和条件密钥 AWS CodeCommit](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscodecommit.html)。

**注意**  
要指定操作，请在 API 操作名称之前使用 `codecommit:` 前缀 (例如，`codecommit:GetRepository` 或 `codecommit:CreateRepository`)。

**使用通配符**

要指定多个操作或资源，可以在 ARN 中使用通配符 (\$1)。例如，`codecommit:*`指定所有 CodeCommit 动作并`codecommit:Get*`指定以单词开头的所有 CodeCommit 动作`Get`。以下示例授予对以 `MyDemo` 名称开头的所有存储库的访问权限。

```
arn:aws:codecommit:us-west-2:111111111111:MyDemo*
```

只能对下表中列出的*repository-name*资源使用通配符。不能在*region*或*account-id*资源中使用通配符。有关通配符的更多信息，请参阅《IAM 用户指南》**中的 [IAM 标识符](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html)。



**Topics**
+ [Git 客户端命令所需的权限](#aa-git)
+ [分支操作权限](#aa-branches)
+ [针对合并的操作所需的权限](#aa-merges)
+ [针对拉取请求的操作所需的权限](#aa-pr)
+ [针对审批规则模板的操作所需的权限](#aa-art)
+ [针对单个文件的操作所需的权限](#aa-files)
+ [针对评论的操作所需的权限](#aa-comments)
+ [针对已提交代码的操作所需的权限](#aa-code)
+ [针对存储库的操作所需的权限](#aa-repositories)
+ [针对标签的操作所需的权限](#aa-tags)
+ [针对触发器的操作所需的权限](#aa-triggers)
+ [CodePipeline 集成操作权限](#aa-acp)

## Git 客户端命令所需的权限
<a name="aa-git"></a>

在中 CodeCommit，`GitPull`IAM 策略权限适用于从中检索数据的任何 Git 客户端命令，包括 CodeCommit**git fetch****git clone**、等。同样，`GitPush`IAM 策略权限适用于向其发送数据的任何 Git 客户端命令 CodeCommit。例如，如果 `GitPush` IAM policy 权限设置为 `Allow`，则用户可以使用 Git 协议推送分支删除。针对该 IAM 用户的 `DeleteBranch` 操作应用的任何权限都不会影响该推送。该`DeleteBranch`权限适用于使用控制台、、和 API 执行的 AWS CLI操作 SDKs，但不适用于使用 Git 协议执行的操作。

`GitPull` 和 `GitPush` 是 IAM policy 权限，它们不是 API 操作。

使用滚动条查看表的其余部分。


**CodeCommit Git 客户端命令的操作所需的权限**  

| CodeCommit Git 的权限 | 所需权限  | 资源 | 
| --- | --- | --- | 
|  GitPull  |  `codecommit:GitPull` 需要将信息从 CodeCommit 存储库提取到本地存储库。这只是一种 IAM 策略权限，不是 API 操作。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  GitPush  |  `codecommit:GitPush` 将信息从本地存储库推送到 CodeCommit 存储库时是必需的。这只是一种 IAM 策略权限，不是 API 操作。  如果您创建一条策略，其中包含一个上下文键和一个 `Deny` 语句，该语句包含此权限，则该策略还必须包含 `Null` 上下文。有关更多信息，请参阅 [限制推送和合并到中的分支 AWS CodeCommit](how-to-conditional-branch.md)。   |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 

## 分支操作权限
<a name="aa-branches"></a>

以下权限允许或拒绝对 CodeCommit 存储库中的分支执行操作。这些权限仅适用于在 CodeCommit 控制台和使用 CodeCommit API 执行的操作以及使用执行的 AWS CLI命令。它们与可以使用 Git 协议执行的类似操作无关。例如，**git show-branch -r** 命令使用 Git 协议显示存储库的远程分支及其提交的列表。它不受任何 CodeCommit `ListBranches`操作权限的影响。

有关为分支创建策略的更多信息，请参阅[限制推送和合并到中的分支 AWS CodeCommit](how-to-conditional-branch.md)和[客户管理型策略示例](customer-managed-policies.md)。

使用滚动条查看表的其余部分。


**CodeCommit API 操作和分支上操作所需的权限**  

| CodeCommit 分支机构的 API 操作 | 所需权限（API 操作） | 资源 | 
| --- | --- | --- | 
|  [CreateBranch](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_CreateBranch.html)  |  `codecommit:CreateBranch` 在 CodeCommit 存储库中创建分支所必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [DeleteBranch](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DeleteBranch.html)  |  `codecommit:DeleteBranch` 需要从 CodeCommit 存储库中删除分支。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [GetBranch](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetBranch.html)  |  `codecommit:GetBranch` 获取有关 CodeCommit 存储库中某个分支的详细信息时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [ListBranches](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_ListBranches.html) |  `codecommit:ListBranches` 获取 CodeCommit 存储库中分支的列表时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [MergeBranchesByFastForward](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_MergeBranchesByFastForward.html) |  `codecommit:MergeBranchesByFastForward` 需要在 CodeCommit 仓库中使用快进合并策略合并两个分支。  | arn: aws: codecommit::: region account-id repository-name | 
| [MergeBranchesBySquash](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_MergeBranchesBySquash.html) |  `codecommit:MergeBranchesBySquash` 需要在 CodeCommit 存储库中使用 squash 合并策略合并两个分支。  | arn: aws: codecommit::: region account-id repository-name | 
| [MergeBranchesByThreeWay](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_MergeBranchesByThreeWay.html) |  `codecommit:MergeBranchesByThreeWay` 需要在 CodeCommit 存储库中使用三向合并策略合并两个分支。  | arn: aws: codecommit::: region account-id repository-name | 
| [UpdateDefaultBranch](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateDefaultBranch.html) | codecommit:UpdateDefaultBranch需要更改 CodeCommit 存储库中的默认分支。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 

## 针对合并的操作所需的权限
<a name="aa-merges"></a>

以下权限允许或拒绝对 CodeCommit 仓库中的合并执行操作。这些权限适用于使用控制台和 API 执行的操作以及使用 CodeCommit 控制台和 CodeCommit API 执行的 AWS CLI命令。它们与可以使用 Git 协议执行的类似操作无关。有关分支的相关权限，请参阅[分支操作权限](#aa-branches)。有关拉取请求的相关权限，请参阅[针对拉取请求的操作所需的权限](#aa-pr)。

使用滚动条查看表的其余部分。


**CodeCommit 合并命令的操作所需的权限**  

| CodeCommit 合并权限 | 所需权限  | 资源 | 
| --- | --- | --- | 
|  [BatchDescribeMergeConflicts](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_BatchDescribeMergeConflicts.html)  |  `codecommit:BatchDescribeMergeConflicts` 需要返回有关 CodeCommit 仓库中提交之间合并时发生冲突的信息。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [CreateUnreferencedMergeCommit](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_CreateUnreferencedMergeCommit.html)  |  `codecommit:CreateUnreferencedMergeCommit` 需要在两个分支之间创建未引用的提交，或者在 CodeCommit 存储库中的提交之间创建未引用的提交，以便比较它们并识别任何潜在的冲突。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [DescribeMergeConflicts](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DescribeMergeConflicts.html)  |  `codecommit:DescribeMergeConflicts` 需要返回有关 CodeCommit 存储库中可能合并的文件的基础版本、源版本和目标版本之间的合并冲突的信息。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [GetMergeCommit](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetMergeCommit.html)  |  `codecommit:GetMergeCommit` 返回有关 CodeCommit 存储库中源提交和目标提交之间合并的信息所必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [GetMergeOptions](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetMergeOptions.html)  |  `codecommit:GetMergeOptions` 返回有关 CodeCommit 存储库中的两个分支或提交说明符之间的可用合并选项的信息时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 

## 针对拉取请求的操作所需的权限
<a name="aa-pr"></a>

以下权限允许或拒绝对 CodeCommit 存储库中的拉取请求执行操作。这些权限适用于使用控制台和 API 执行的操作以及使用 CodeCommit 控制台和 CodeCommit API 执行的 AWS CLI命令。它们与可以使用 Git 协议执行的类似操作无关。有关相关评论权限，请参阅[针对评论的操作所需的权限](#aa-comments)。

使用滚动条查看表的其余部分。


**CodeCommit API 操作和拉取请求操作所需的权限**  

| CodeCommit API 操作 | 所需权限（API 操作） | 资源 | 
| --- | --- | --- | 
|  BatchGetPullRequests  |  `codecommit:BatchGetPullRequests` 返回有关 CodeCommit 存储库中一个或多个拉取请求的信息所必需的。这只是一种 IAM policy 权限，不是可调用的 API 操作。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [CreatePullRequest](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_CreatePullRequest.html)  |  `codecommit:CreatePullRequest` 在 CodeCommit 存储库中创建拉取请求时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [CreatePullRequestApprovalRule](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_CreatePullRequestApprovalRule.html) |  `codecommit:CreatePullRequestApprovalRule` 在 CodeCommit 存储库中为拉取请求创建审批规则时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [DeletePullRequestApprovalRule](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DeletePullRequestApprovalRule.html) |  `codecommit:DeletePullRequestApprovalRule` 在 CodeCommit 存储库中删除拉取请求的审批规则时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [DescribePullRequestEvents](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DescribePullRequestEvents.html) | 返回有关 CodeCommit 存储库中一个或多个拉取请求事件的信息所必需的。 | arn: aws: codecommit::: region account-id repository-name | 
| [EvaluatePullRequestApprovalRules](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_EvaluatePullRequestApprovalRules.html) |  `codecommit:EvaluatePullRequestApprovalRules` 评估拉取请求是否满足 CodeCommit 存储库中关联的审批规则指定的所有条件时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [GetCommentsForPullRequest](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetCommentsForPullRequest.html)  |  `codecommit:GetCommentsForPullRequest` 返回对拉取请求的评论时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| GetCommitsFromMergeBase |  `codecommit:GetCommitsFromMergeBase` 返回潜在合并上下文中各提交之间的差异的相关信息时是必需的。这只是一种 IAM policy 权限，不是可调用的 API 操作。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [GetMergeConflicts](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetMergeConflicts.html) |  `codecommit:GetMergeConflicts` 返回有关拉取请求中源分支和目标分支之间的合并冲突的信息时是必需的。  | arn: aws: codecommit::: region account-id repository-name | 
|  [GetPullRequest](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetPullRequest.html)  |  `codecommit:GetPullRequest` 返回有关拉取请求的信息时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [GetPullRequestApprovalStates](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetPullRequestApprovalStates.html)  |  `codecommit:GetPullRequestApprovalStates` 返回有关指定拉取请求的审批状态的信息时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [GetPullRequestOverrideState](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetPullRequestOverrideState.html)  |  `codecommit:GetPullRequestOverrideState` 返回有关是否已为拉取请求搁置（覆盖）审批规则的信息时是必需的，如果是，则返回覆盖规则的用户或身份的 Amazon 资源名称 (ARN) 及其对拉取请求的要求。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [ListPullRequests](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_ListPullRequests.html) |  `codecommit:ListPullRequests` 返回有关存储库的拉取请求的信息时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [MergePullRequestByFastForward](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_MergePullRequestByFastForward.html) | codecommit:MergePullRequestByFastForward关闭拉取请求并尝试使用快进合并策略将源分支合并到拉取请求的目标分支时是必需的。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [MergePullRequestBySquash](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_MergePullRequestBySquash.html) | codecommit:MergePullRequestBySquash关闭拉取请求并尝试使用压缩合并策略将源分支合并到拉取请求的目标分支时是必需的。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [MergePullRequestByThreeWay](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_MergePullRequestByThreeWay.html) | codecommit:MergePullRequestByThreeWay关闭拉取请求并尝试使用三向合并策略将源分支合并到拉取请求的目标分支时是必需的。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [OverridePullRequestApprovalRules](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_OverridePullRequestApprovalRules.html) | codecommit:OverridePullRequestApprovalRules 需要在 CodeCommit 存储库中搁置拉取请求的所有批准规则要求。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [PostCommentForPullRequest](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_PostCommentForPullRequest.html) | codecommit:PostCommentForPullRequest 在 CodeCommit 存储库中对拉取请求发布评论时是必需的。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [UpdatePullRequestApprovalRuleContent](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdatePullRequestApprovalRuleContent.html) | codecommit:UpdatePullRequestApprovalRuleContent 需要更改 CodeCommit 存储库中拉取请求的批准规则的结构。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [UpdatePullRequestApprovalState](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdatePullRequestApprovalState.html) | codecommit:UpdatePullRequestApprovalState 需要更改 CodeCommit 仓库中拉取请求的批准状态。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [UpdatePullRequestDescription](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdatePullRequestDescription.html) | codecommit:UpdatePullRequestDescription 更改 CodeCommit 存储库中拉取请求的说明时是必需的。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [UpdatePullRequestStatus](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdatePullRequestStatus.html) | codecommit:UpdatePullRequestStatus 更改 CodeCommit 存储库中拉取请求的状态时是必需的。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [UpdatePullRequestTitle](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdatePullRequestTitle.html) | codecommit:UpdatePullRequestTitle 更改 CodeCommit 存储库中拉取请求的标题时是必需的。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 

## 针对审批规则模板的操作所需的权限
<a name="aa-art"></a>

以下权限允许或拒绝对 CodeCommit 存储库中的审批规则模板执行操作。这些权限仅适用于在 CodeCommit控制台、 CodeCommit API 中执行的操作以及使用执行的 AWS CLI命令。它们与可以使用 Git 协议执行的类似操作无关。有关拉取请求的相关权限，请参阅[针对拉取请求的操作所需的权限](#aa-pr)。

使用滚动条查看表的其余部分。


**CodeCommit API 操作和批准规则模板上操作所需的权限**  

| CodeCommit 批准规则模板的 API 操作 | 所需权限  | 资源 | 
| --- | --- | --- | 
|  [AssociateApprovalRuleTemplateWithRepository](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_AssociateApprovalRuleTemplateWithRepository.html)  |  `codecommit:AssociateApprovalRuleTemplateWithRepository` 将模板与 Amazon Web Services 账户中的指定存储库关联时是必需的。关联后，此操作会根据在指定存储库中创建的每个拉取请求的模板条件，自动创建与之匹配的审批规则。  |  \$1  | 
|  [BatchAssociateApprovalRuleTemplateWithRepositories](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_BatchAssociateApprovalRuleTemplateWithRepositories.html)  |  `codecommit:BatchAssociateApprovalRuleTemplateWithRepositories` 将模板与 Amazon Web Services 账户中的一个或多个指定存储库关联时是必需的。  |  \$1  | 
|  [BatchDisassociateApprovalRuleTemplateFromRepositories](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_BatchDisassociateApprovalRuleTemplateFromRepositories.html)  |  `codecommit:BatchDisassociateApprovalRuleTemplateFromRepositories` 取消模板与 Amazon Web Services 账户中的一个或多个指定存储库的关联时是必需的。  |  \$1  | 
|  [CreateApprovalRuleTemplate](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_CreateApprovalRuleTemplate.html)  |  `codecommit:CreateApprovalRuleTemplate` 创建随后可与 AWS 账户中的一个或多个存储库关联的审批规则模板时是必需的。  |  \$1  | 
|  [DeleteApprovalRuleTemplate](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DeleteApprovalRuleTemplate.html)  |  `codecommit:DeleteApprovalRuleTemplate` 删除 Amazon Web Services 账户中的指定模板时是必需的。它不会删除已使用模板创建的拉取请求的审批规则。  |  \$1  | 
|  [DisassociateApprovalRuleTemplateFromRepository](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DisassociateApprovalRuleTemplateFromRepository.html)  |  `codecommit:DisassociateApprovalRuleTemplateFromRepository` 取消指定模板与 Amazon Web Services 账户中的存储库的关联时是必需的。它不会删除已使用模板创建的拉取请求的审批规则。  |  \$1  | 
|  [GetApprovalRuleTemplate](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetApprovalRuleTemplate.html)  |  `codecommit:GetApprovalRuleTemplate` 返回有关 Amazon Web Services 账户中审批规则模板的信息时是必需的。  |  \$1  | 
|  [ListApprovalRuleTemplates](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_ListApprovalRuleTemplates.html)  |  `codecommit:ListApprovalRuleTemplates` 列出 Amazon Web Services 账户中的审批规则模板时是必需的。  |  \$1  | 
|  [ListAssociatedApprovalRuleTemplatesForRepository](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_ListAssociatedApprovalRuleTemplatesForRepository.html)  |  `codecommit:ListAssociatedApprovalRuleTemplatesForRepository` 列出与 Amazon Web Services 账户中的指定存储库关联的所有审批规则模板时是必需的。  |  \$1  | 
|  [ListRepositoriesForApprovalRuleTemplate](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_ListRepositoriesForApprovalRuleTemplate.html)  |  `codecommit:ListRepositoriesForApprovalRuleTemplate` 列出与 Amazon Web Services 账户中的指定审批规则模板关联的所有存储库时是必需的。  |  \$1  | 
|  [UpdateApprovalRuleTemplateContent](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateApprovalRuleTemplateContent.html)  |  `codecommit:UpdateApprovalRuleTemplateContent` 更新 Amazon Web Services 账户中的审批规则模板的内容时是必需的。  |  \$1  | 
|  [UpdateApprovalRuleTemplateDescription](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateApprovalRuleTemplateDescription.html)  |  `codecommit:UpdateApprovalRuleTemplateDescription` 更新 Amazon Web Services 账户中的审批规则模板的描述时是必需的。  |  \$1  | 
|  [UpdateApprovalRuleTemplateName](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateApprovalRuleTemplateName.html)  |  `codecommit:UpdateApprovalRuleTemplateName` 更新 Amazon Web Services 账户中的审批规则模板的名称时是必需的。  |  \$1  | 

## 针对单个文件的操作所需的权限
<a name="aa-files"></a>

以下权限允许或拒绝对 CodeCommit 存储库中的单个文件执行操作。这些权限仅适用于在 CodeCommit控制台、 CodeCommit API 中执行的操作以及使用执行的 AWS CLI命令。它们与可以使用 Git 协议执行的类似操作无关。例如，`git push` 命令通过使用 Git 协议将新文件和更改后的文件推送到 CodeCommit 存储库。它不受任何 CodeCommit `PutFile`操作权限的影响。

使用滚动条查看表的其余部分。


**CodeCommit API 操作和对单个文件执行操作所需的权限**  

| CodeCommit 单个文件的 API 操作 | 所需权限  | 资源 | 
| --- | --- | --- | 
|  [DeleteFile](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DeleteFile.html)  |  `codecommit:DeleteFile` 需要从 CodeCommit 控制台从 CodeCommit 存储库的指定分支中删除指定文件。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [GetBlob](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetBlob.html)  |  `codecommit:GetBlob` 需要从 CodeCommit 控制台查看 CodeCommit 存储库中单个文件的编码内容。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [GetFile](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetFile.html)  |  `codecommit:GetFile` 需要从 CodeCommit 控制台查看 CodeCommit 存储库中单个文件的编码内容及其元数据。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [GetFolder](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetFolder.html)  |  `codecommit:GetFolder` 需要从 CodeCommit 控制台查看 CodeCommit存储库中指定文件夹的内容。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [PutFile](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_PutFile.html)  |  `codecommit:PutFile` 需要通过 CodeCommit 控制台、 CodeCommit API 或向 CodeCommit 存储库添加新文件或修改过的文件 AWS CLI。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 

## 针对评论的操作所需的权限
<a name="aa-comments"></a>

以下权限允许或拒绝对 CodeCommit 存储库中的评论执行操作。这些权限适用于使用控制台和 API 执行的操作以及使用 CodeCommit 控制台和 CodeCommit API 执行的 AWS CLI命令。有关对拉取请求中的评论的相关权限，请参阅[针对拉取请求的操作所需的权限](#aa-pr)。

使用滚动条查看表的其余部分。


**CodeCommit API 操作和存储库中评论所需的权限**  

| CodeCommit API 操作 | 所需权限（API 操作） | 资源 | 
| --- | --- | --- | 
|  [DeleteCommentContent](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DeleteCommentContent.html)  |  `codecommit:DeleteCommentContent` 删除对存储库中的更改、文件或提交做出的评论的内容时是必需的。评论无法删除，但如果用户拥有此权限，则可以删除评论内容。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [GetComment](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetComment.html)  |  `codecommit:GetComment` 需要返回有关对 CodeCommit 存储库中的更改、文件或提交所做的评论的信息。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [GetCommentReactions](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetCommentReactions.html)  |  `codecommit:GetCommentReactions` 需要返回有关表情符号对 CodeCommit仓库中更改、文件或提交的评论的反应的信息。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [GetCommentsForComparedCommit](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetCommentsForComparedCommit.html)  |  `codecommit:GetCommentsForComparedCommit` 需要返回有关对 CodeCommit 仓库中两次提交进行比较的评论的信息。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [PostCommentForComparedCommit](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_PostCommentForComparedCommit.html)  |  `codecommit:PostCommentForComparedCommit` 需要对 CodeCommit 仓库中两个提交之间的比较创建评论。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [PostCommentReply](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_PostCommentReply.html) |  `codecommit:PostCommentReply` 对评论之间的比较或拉取请求的评论创建回复时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [PutCommentReaction](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_PutCommentReaction.html) |  `codecommit:PutCommentReaction` 创建或更新对评论的表情符号反应时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [UpdateComment](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateComment.html) |  `codecommit:UpdateComment` 对评论之间的比较或拉取请求的评论进行编辑时是必需的。只有评论作者可以编辑评论。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 

## 针对已提交代码的操作所需的权限
<a name="aa-code"></a>

以下权限允许或拒绝对已提交到 CodeCommit 存储库的代码执行操作。这些权限适用于使用控制台和 API 执行的操作以及使用 CodeCommit 控制台和 CodeCommit API 执行的 AWS CLI命令。它们与可以使用 Git 协议执行的类似操作无关。例如，**git commit** 命令使用 Git 协议为存储库中的分支创建提交。它不受任何 CodeCommit `CreateCommit`操作权限的影响。

明确拒绝其中一些权限可能会导致 CodeCommit 控制台出现意想不到的后果。例如，将 `GetTree` 设置为 `Deny` 将阻止用户在控制台中浏览存储库的内容，但不会阻止用户查看存储库中文件的内容 (例如，用户可以打开并浏览以电子邮件方式发来的文件链接)。将 `GetBlob` 设置为 `Deny` 将阻止用户查看文件的内容，但不会阻止用户浏览存储库的结构。将 `GetCommit` 设置为 `Deny` 将阻止用户检索有关提交的详细信息。将 `GetObjectIdentifier` 设置为 `Deny` 将阻止大部分代码浏览功能。如果您在策略`Deny`中将这三个操作全部设置为，则拥有该策略的用户将无法在 CodeCommit 控制台中浏览代码。

使用滚动条查看表的其余部分。


**CodeCommit API 操作和对已提交代码执行操作所需的权限**  

| CodeCommit API 操作 | 所需权限（API 操作） | 资源 | 
| --- | --- | --- | 
|  BatchGetCommits  |  `codecommit:BatchGetCommits` 返回有关 CodeCommit 存储库中的一个或多个提交的信息时是必需的。这只是一种 IAM policy 权限，不是可调用的 API 操作。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [CreateCommit](https://docs.aws.amazon.com/codecommit/latest/APIReference/CreateCommit.html) |  `codecommit:CreateCommit` 创建提交时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [GetCommit](https://docs.aws.amazon.com/codecommit/latest/APIReference/GetCommit.html)  |  `codecommit:GetCommit` 返回有关提交的信息时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  GetCommitHistory  |  `codecommit:GetCommitHistory` 返回有关存储库中提交历史记录的信息时是必需的。这只是一种 IAM policy 权限，不是可调用的 API 操作。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [GetDifferences](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetDifferences.html) |  `codecommit:GetDifferences` 返回有关提交说明符 (如分支、标签、HEAD、提交 ID 或其他完全限定引用) 差异的信息时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| GetObjectIdentifier | codecommit:GetObjectIdentifier将 blob、树和提交解析为其标识符时是必需的。这只是一种 IAM policy 权限，不是可调用的 API 操作。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| GetReferences | codecommit:GetReferences返回所有引用 (如分支和标签) 时是必需的。这只是一种 IAM policy 权限，不是可调用的 API 操作。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| GetTree | codecommit:GetTree需要从 CodeCommit 控制台查看 CodeCommit 存储库中指定树的内容。这只是一种 IAM policy 权限，不是可调用的 API 操作。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 

## 针对存储库的操作所需的权限
<a name="aa-repositories"></a>

以下权限允许或拒绝对 CodeCommit 仓库执行操作。这些权限适用于使用控制台和 API 执行的操作以及使用 CodeCommit 控制台和 CodeCommit API 执行的 AWS CLI命令。它们与可以使用 Git 协议执行的类似操作无关。

使用滚动条查看表的其余部分。


**CodeCommit API 操作和仓库操作所需的权限**  

| CodeCommit API 操作 | 所需权限（API 操作） | 资源 | 
| --- | --- | --- | 
|  [BatchGetRepositories](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_BatchGetRepositories.html)  |  `codecommit:BatchGetRepositories` 需要获取有关亚马逊 Web Services 账户中多个 CodeCommit 存储库的信息。在中`Resource`，必须指定允许用户获得（或拒绝）信息的所有 CodeCommit 存储库的名称。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [CreateRepository](https://docs.aws.amazon.com/codecommit/latest/APIReference/CreateRepository.html)  |  `codecommit:CreateRepository` 创建 CodeCommit 存储库所必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [DeleteRepository](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_DeleteRepository.html)  |  `codecommit:DeleteRepository` 删除 CodeCommit 存储库所必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [GetRepository](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetRepository.html) |  `codecommit:GetRepository` 获取有关单个 CodeCommit 存储库的信息时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [ListRepositories](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_ListRepositories.html) | codecommit:ListRepositories需要获取一个 Amazon Web Services 账户 IDs 的多个 CodeCommit 存储库的名称和系统的列表。对于该操作来说，`Resource` 唯一允许的值是所有存储库 (`*`)。 |  \$1  | 
| [UpdateRepositoryDescription](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateRepositoryDescription.html) | codecommit:UpdateRepositoryDescription更改 CodeCommit 存储库描述所必需的。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| [UpdateRepositoryName](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateRepositoryName.html) | codecommit:UpdateRepositoryName更改 CodeCommit 存储库名称所必需的。在中`Resource`，您必须指定允许更改的 CodeCommit 存储库和新的存储库名称。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 

## 针对标签的操作所需的权限
<a name="aa-tags"></a>

以下权限允许或拒绝对 CodeCommit 资源 AWS 标签执行操作。

使用滚动条查看表的其余部分。


**CodeCommit API 操作和标签操作所需的权限**  

| CodeCommit API 操作 | 所需权限（API 操作） | 资源 | 
| --- | --- | --- | 
|  [ListTagsForResource](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_ListTagsForResource.html)  |  `codecommit:ListTagsForResource` 返回有关在资源上配置的 AWS 标签的信息所必需的 CodeCommit。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [TagResource](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_TagResource.html)  |  `codecommit:TagResource` 需要在中为资源添加或编辑 AWS 标签 CodeCommit。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [UntagResource](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_UntagResource.html)  |  `codecommit:UntagResource` 需要从中的资源中移除 AWS 标签 CodeCommit。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 

## 针对触发器的操作所需的权限
<a name="aa-triggers"></a>

以下权限允许或拒绝对 CodeCommit 存储库的触发器执行操作。

使用滚动条查看表的其余部分。


**CodeCommit API 操作和触发器操作所需的权限**  

| CodeCommit API 操作 | 所需权限（API 操作） | 资源 | 
| --- | --- | --- | 
|  [GetRepositoryTriggers](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetRepositoryTriggers.html)  |  `codecommit:GetRepositoryTriggers` 返回有关为存储库配置的触发器的信息时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [PutRepositoryTriggers](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_PutRepositoryTriggers.html)  |  `codecommit:PutRepositoryTriggers` 创建、编辑或删除存储库触发器时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [TestRepositoryTriggers](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_TestRepositoryTriggers.html)  |  `codecommit:TestRepositoryTriggers` 通过向为触发器配置的主题或函数发送数据来测试存储库触发器的功能时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 

## CodePipeline 集成操作权限
<a name="aa-acp"></a>

 CodePipeline 要在管道的源操作中使用 CodeCommit 存储库，必须向的服务角色授予下表中列出的所有权限 CodePipeline。如果未在服务角色中设置这些权限或将这些权限设为 **Deny**，则在对存储库进行更改时，管道不会自动运行，并且无法手动发布更改。

使用滚动条查看表的其余部分。


**CodeCommit API 操作和 CodePipeline 集成操作所需的权限**  

| CodeCommit API 操作 | 所需权限（API 操作） | 资源 | 
| --- | --- | --- | 
|  [GetBranch](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetBranch.html)  |  `codecommit:GetBranch` 获取有关 CodeCommit 存储库中某个分支的详细信息时是必需的。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  [GetCommit](https://docs.aws.amazon.com/codecommit/latest/APIReference/GetCommit.html)  |  `codecommit:GetCommit` 需要返回有关向的服务角色提交的信息 CodePipeline。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  UploadArchive  |  `codecommit:UploadArchive` 需要允许的服务角色将存储库更改上传 CodePipeline 到管道。这只是一种 IAM policy 权限，不是可调用的 API 操作。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
|  GetUploadArchiveStatus  |  `codecommit:GetUploadArchiveStatus` 确定存档的上传状态：是正在进行、完成、已取消还是出现错误时是必需的。这只是一种 IAM policy 权限，不是可调用的 API 操作。  |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 
| CancelUploadArchive | codecommit:CancelUploadArchive取消将存档上传到管道的操作时是必需的。这只是一种 IAM policy 权限，不是可调用的 API 操作。 |  arn: aws: codecommit::: *region* *account-id* *repository-name*  | 