

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

# 跨账户存储库访问：AccountA 中管理员的操作
<a name="cross-account-administrator-a"></a>

要允许 AccountB 中的用户或组访问 AccountA 中的存储库，AccountA 管理员必须：
+ 在 AccountA 中创建一个授予对存储库的访问权限的策略。
+ 在 AccountA 中创建一个可由 AccountB 中的 IAM 用户和组代入的角色。
+ 将 策略附加到该角色。

以下各节提供了步骤和示例。

**Topics**
+ [步骤 1：在 AccountA 中创建用于存储库访问的策略](#cross-account-create-policy-a)
+ [步骤 2：在 AccountA 中创建用于存储库访问的角色](#cross-account-create-role-a)

## 步骤 1：在 AccountA 中创建用于存储库访问的策略
<a name="cross-account-create-policy-a"></a>

您可以在 AccountA 中创建一个策略，使之授予允许 AccountB 中的用户访问 AccountA 中的存储库的权限。根据您希望允许的访问级别，执行以下操作之一：
+ 配置策略以允许 AccountB 用户访问特定存储库，但不允许这些用户查看 AccountA 中所有存储库的列表。
+ 配置额外访问权限以允许 AccountB 用户从 AccountA 的所有存储库列表中选择存储库。<a name="cross-account-create-policy-a-procedure"></a>

**创建用于存储库访问的策略**

1. 以有权在 AccountA 中创建策略的 IAM 用户身份登录 AWS 管理控制台。

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**策略**。

1. 选择**创建策略**。

1. 选择 **JSON** 选项卡，并将以下 JSON 策略文档粘贴到 JSON 文本框中。将{{us-east-2}}替换 AWS 区域 为存储库的、{{111122223333}} AccountA 的账户 ID 和 Accoun {{MySharedDemoRepo}} tA 中的 CodeCommit 仓库名称：

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

****  

   ```
   {
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Action": [
               "codecommit:BatchGet*",
               "codecommit:Create*",
               "codecommit:DeleteBranch",
               "codecommit:Get*",
               "codecommit:List*",
               "codecommit:Describe*",
               "codecommit:Put*",
               "codecommit:Post*",
               "codecommit:Merge*",
               "codecommit:Test*",
               "codecommit:Update*",
               "codecommit:GitPull",
               "codecommit:GitPush"
           ],
           "Resource": [
               "arn:aws:codecommit:us-east-2:{{111122223333}}:{{MySharedDemoRepo}}"
           ]
       }
   ]
   }
   ```

------

   如果您希望担任此角色的用户能够在 CodeCommit 控制台主页上查看存储库列表，请在策略中添加其他声明，如下所示：

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "codecommit:BatchGet*",
                   "codecommit:Create*",
                   "codecommit:DeleteBranch",
                   "codecommit:Get*",
                   "codecommit:List*",
                   "codecommit:Describe*",
                   "codecommit:Put*",
                   "codecommit:Post*",
                   "codecommit:Merge*",
                   "codecommit:Test*",
                   "codecommit:Update*",
                   "codecommit:GitPull",
                   "codecommit:GitPush"
               ],
               "Resource": [
                   "arn:aws:codecommit:{{us-east-2}}:{{111122223333}}:{{MySharedDemoRepo}}"
               ]
           },
           {
               "Effect": "Allow",
               "Action": "codecommit:ListRepositories",
               "Resource": "*"
           }
       ]
   }
   ```

------

   利用该访问权限，使用此策略代入此角色的用户能够更轻松地找到其有权访问的存储库。他们可以从列表中选择存储库的名称，并定位到共享存储库的主页 (`Code`)。虽然用户无法访问列表中显示的任何其他存储库，但他们可以在**控制面板**页面上查看 AccountA 中的存储库。

   如果您不想让担任该角色的用户能够查看 AccountA 中所有仓库的列表，请使用第一个策略示例，但要确保在控制台中向这些用户发送指向共享仓库主页的直接链接。 CodeCommit 

1. 选择**查看策略**。策略验证器会报告语法错误（例如，如果您忘记将示例 Amazon Web Services 账户 ID 和存储库名称替换为您的 Amazon Web Services 账户 ID 和存储库名称）。

1. 在**查看策略**页面上，输入策略的名称（例如{{CrossAccountAccessForMySharedDemoRepo}}）。您也可以提供此策略的可选描述。选择**创建策略**。

## 步骤 2：在 AccountA 中创建用于存储库访问的角色
<a name="cross-account-create-role-a"></a>

配置策略后，创建 AccountB 中的 IAM 用户和组可代入的角色，然后向此角色附加策略。<a name="cross-account-create-role-a-procedure"></a>

**创建用于存储库访问的角色**

1. 在 IAM 控制台中，选择**角色**。

1. 选择**创建角色**。

1. 选择**另一个 Amazon Web Services 账户**。

1. 在**账户 ID** 中，输入 AccountB 的亚马逊 Web Services 账户 ID（例如）。{{888888888888}}选择**下一步: 权限**。

1. 在**附加权限策略**中，选择您在上一个过程中创建的策略（{{CrossAccountAccessForMySharedDemoRepo}}）。选择**下一步：审核**。

1. 在**角色名称**中，输入角色的名称（例如，{{MyCrossAccountRepositoryContributorRole}}）。您还可以输入可选描述，帮助他人了解角色的用途。

1. 选择**创建角色**。

1. 打开您刚刚创建的角色，并复制角色 ARN (例如，`arn:aws:iam::{{111122223333}}:role/{{MyCrossAccountRepositoryContributorRole}}`)。您需要向 AccountB 管理员提供此 ARN。