

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 跨帳戶儲存庫存取權：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 中建立政策，將 AccountA 中儲存庫的存取權授予 AccountB 中的使用者。根據您想允許的存取層級而定，請執行以下其中一項：
+ 設定政策，以允許 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. 選擇 **Create policy** (建立政策)。

1. 選擇 **JSON** 標籤，將下列 JSON 政策文件貼到 JSON 文字方塊中。將 {{us-east-2}} 取代 AWS 區域 為儲存庫的 ，將 {{111122223333}} 取代為 AccountA 的帳戶 ID，將 {{MySharedDemoRepo}} 取代為 AccountA 中 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`)。使用者無法存取他們在清單中看到的其他任何儲存庫，但可以在 **Dashboard (儀表板)** 頁面上檢視 AccountA 中的儲存庫。

   如果您不想允許擔任該角色的使用者檢視 AccountA 中所有儲存庫的清單，請使用第一個政策範例，但請務必將直接連結至 CodeCommit 主控台中共用儲存庫的首頁。

1. 選擇**檢閱政策**。政策驗證程式會報告語法錯誤 （例如，如果您忘記將範例 Amazon Web Services 帳戶 ID 和儲存庫名稱取代為您的 Amazon Web Services 帳戶 ID 和儲存庫名稱）。

1. 在 **Review policy (檢閱政策)** 頁面上，輸入政策名稱 (例如 {{CrossAccountAccessForMySharedDemoRepo}})。您也可以提供此政策的選用描述。選擇**建立政策**。

## 步驟 2：在 AccountA 中建立儲存庫存取的角色
<a name="cross-account-create-role-a"></a>

設定政策後，請建立 AccountB 中的 IAM 使用者和群組可擔任的角色，並將政策連接至該角色。<a name="cross-account-create-role-a-procedure"></a>

**建立儲存庫存取角色**

1. 在 IAM 主控台，選擇 **Roles (角色)**。

1. 選擇建**立角色**。

1. 選擇**另一個 Amazon Web Services 帳戶**。

1. 在**帳戶 ID** 中，輸入 AccountB 的 Amazon Web Services 帳戶 ID （例如 {{888888888888}})。選擇**下一步：許可**。

1. 在 **Attach permissions policies (連接許可政策)** 中，選取您在之前程序中建立的政策 ({{CrossAccountAccessForMySharedDemoRepo}})。選擇下**一步：檢閱**。

1. 在 **Role name (角色名稱)** 中，輸入角色的名稱 (例如，{{MyCrossAccountRepositoryContributorRole}})。您也可以輸入選用描述，協助其他人了解該角色的用途。

1. 選擇建**立角色**。

1. 開啟您剛建立的角色，並複製角色 ARN (例如，`arn:aws:iam::{{111122223333}}:role/{{MyCrossAccountRepositoryContributorRole}}`)。您需要將此 ARN 提供給 AccountB 管理員。