跨账户存储桶访问权限 - 研究与工程工作室

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

跨账户存储桶访问权限

RES 可以从其他 AWS 账户挂载存储桶,前提是这些存储桶具有适当的权限。在以下场景中,账户 A 中的 RES 环境想要在账户 B 中挂载 S3 存储桶。

步骤 1:在部署 RES 的账户中创建 IAM 角色(这将称为账户 A)
  1. 登录需要访问 S3 存储桶的 RES 账户(账户 A)的 AWS 管理控制台。

  2. 打开 IAM 控制台:

    1. 导航到 IAM 控制面板。

    2. 在导航窗格中,选择策略

  3. 创建策略:

    1. 选择创建策略

    2. 选择 JSON 选项卡。

    3. 粘贴以下 JSON 策略(<BUCKET-NAME>替换为账户 B 中的 S3 存储桶的名称):

      JSON
      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket", "s3:DeleteObject", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::<BUCKET-NAME>", "arn:aws:s3:::<BUCKET-NAME>/*" ] } ] }
    4. 选择下一步

  4. 查看并创建策略:

    1. 提供策略的名称(例如,AccessPolicy“S3”)。

    2. 添加可选描述以解释政策的用途。

    3. 查看策略并选择创建策略

  5. 打开 IAM 控制台:

    1. 导航到 IAM 控制面板。

    2. 在导航窗格中,选择角色

  6. 创建角色:

    1. 选择创建角色

    2. 选择自定义信任策略作为可信实体的类型。

    3. 粘贴以下 JSON 策略(<ACCOUNT_ID>替换为账户 A 的实际账户 ID 和 <ENVIRONMENT_NAME> RES 部署的环境名称):

      JSON
      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<ACCOUNT_ID>:role/<ENVIRONMENT_NAME>-custom-credential-broker-lambda-role-<REGION>" }, "Action": "sts:AssumeRole" } ] }
    4. 选择下一步

  7. 附加权限策略:

    1. 搜索并选择您之前创建的策略。

    2. 选择下一步

  8. 标记、查看和创建角色:

    1. 输入角色名称(例如,AccessRole“S3”)。

    2. 在 “步骤 3” 下,选择 “添加标签”,然后输入以下键和值:

      • 键:res:Resource

      • 值:s3-bucket-iam-role

    3. 查看角色并选择创建角色

  9. 在 RES 中使用 IAM 角色:

    1. 复制您创建的 IAM 角色 ARN。

    2. 登录 RES 控制台。

    3. 在左侧导航窗格中,选择 S3 存储桶

    4. 选择添加存储桶,然后使用跨账户 S3 存储桶 ARN 填写表单。

    5. 选择 “高级设置-可选” 下拉列表。

    6. 在 IAM 角色 ARN 字段中输入角色 ARN。

    7. 选择 “添加存储桶”。

步骤 2:修改账户 B 中的存储桶策略
  1. 登录账户 B 的 AWS 管理控制台

  2. 打开 S3 控制台:

    1. 导航到 S3 控制面板。

    2. 选择您要授予访问权限的存储桶。

  3. 编辑存储桶策略:

    1. 选择 “权限” 选项卡,然后选择 “存储桶策略”。

    2. 添加以下策略以授予账户 A 中的 IAM 角色访问存储桶的权限(<AccountA_ID>替换为账户 A 的实际账户 ID 和 <BUCKET-NAME> S3 存储桶的名称):

      JSON
      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/S3AccessRole" }, "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket", "s3:DeleteObject", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::<BUCKET-NAME>", "arn:aws:s3:::<BUCKET-NAME>/*" ] } ] }
    3. 选择保存