跨账户仓库访问:管理员在 AccountA 中的操作 - Amazon CodeCommit
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

跨账户仓库访问:管理员在 AccountA 中的操作

要允许 AccountB 中的用户或组访问 AccountA 中的存储库,AccountA 管理员必须:

  • 在 AccountA 中创建一个授予对存储库的访问权限的策略。

  • 在 AccountA 中创建一个可由 AccountB 中的 IAM 用户和群组代入的角色。

  • 将 策略附加到该角色。

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

步骤 1:在 Account A 中创建存储库访问策略

您可以在 AccountA 中创建一个授予对 AccountB 中存储库的访问权限的策略。根据您希望允许的访问级别,执行以下操作之一:

  • 配置策略以允许 AccountB 用户访问特定存储库,但不允许这些用户查看 AccountA 中所有存储库的列表。

  • 配置额外访问权限以允许 AccountB 用户从 AccountA 的所有存储库列表中选择存储库。

创建用于存储库访问的策略
  1. 以 IAM 用户身份登录到Amazon管理控制台,后者是一项 AAccountA 创建策略之权限的 IAM 用户。

  2. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  3. 在导航窗格中,选择 Policies (策略)

  4. 选择创建策略

  5. 选择 JSON 选项卡,并将以下 JSON 策略文档粘贴到 JSON 文本框中。将 us-east-2 替换Amazon Web Services 区域为存储库,将 111122223333 替换为 AccountA 的账户 ID,将 us-east-2 MySharedDemoRepo替换为 AccountA 中的 CodeCommit 存储库名称:

    { "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 控制台主页上查看存储库列表,请在策略中添加其他声明,如下所示:

    { "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 控制台中向这些用户发送指向共享存储库主页的直接链接。

  6. 选择Review policy(查看策略)。策略验证器报告语法错误(例如,如果您忘记将示例Amazon Web Services 账户 ID 和存储库名称替换为您的Amazon Web Services 云科技账户 ID 和存储库名称)。

  7. 在 Rev iew policy(检查策略)页面上,为此策略输入一个名称(例如 CrossAccountAccessForMySharedDemoRepo)。您也可以提供此策略的可选描述。选择 Create policy(创建策略)

步骤 2:在 AccountA 中创建存储库访问权限

配置策略后,在 AccountB 中创建一个 IAM 用户和群组可以代入的角色,并将该策略附加到该角色。

创建用于存储库访问的角色
  1. 在 IAM 控制台中,选择角色

  2. 选择 Create role(创建角色)。

  3. 选择另一个Amazon Web Services 账户

  4. 账户 ID 中,输入 AccountB 的Amazon Web Services 账户 ID(例如 888888888888)。选择Next: Permissions(下一步: 权限)

  5. 在 “附加权限策略” 中,选择您在之前的步骤(CrossAccountAccessForMySharedDemoRepo)中创建的策略。选择 Next: Review(下一步: 审核)

  6. 角色名称中,输入角色的名称(例如,MyCrossAccountRepositoryContributorRole)。您还可以输入可选描述,帮助他人了解角色的用途。

  7. 选择 Create role(创建角色)。

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