跳至内容

如何使用 IAM 访问另一个 AWS 账户中的资源?

1 分钟阅读
0

我想设置对另一个 AWS 账户中的 AWS Identity and Access Management (IAM) 角色的跨账户访问权限。

简短描述

访问其他 AWS 账户中的资源,请与 IAM 角色建立信任关系

例如,您想从源账户访问目标账户。要代入从源账户到目标账户的 IAM 角色,请为您的 IAM 用户提供 AssumeRole API 的权限。您必须在目标 IAM 角色的信任关系中指定您的 IAM 用户。

**注意:**您还可以从源 IAM 角色切换到目标 IAM 角色,而不是使用通过角色链接实现的用户到角色切换方式。角色链接仅适用于编程访问,例如 AWS 命令行界面 (AWS CLI) 或 API。角色更改不能与 AWS 管理控制台一起使用。

解决方法

要使用 IAM 访问其他 AWS 账户中的资源,请执行以下操作。

**注意:**如果在运行 AWS CLI 命令时收到错误消息,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

源账户

完成以下步骤:

  1. 使用 JSON 编辑器创建 IAM 策略,与以下示例类似:

    **注意:**将 DESTINATION-ACCOUNT-IDDESTINATION-ROLENAME 替换为您自己的值。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "sts:AssumeRole"
          ],
          "Resource": [
            "arn:aws:iam::DESTINATION-ACCOUNT-ID:role/DESTINATION-ROLENAME"
          ]
        }
      ]
    }
  2. 将 IAM 策略附加到您的 IAM 用户权限。

目标账户

完成以下步骤:

  1. 在控制台上创建 IAM 角色

  2. 粘贴与以下内容类似的自定义信任策略:

    **注意:**将 SOURCE-ACCOUNT-IDSOURCE-USERNAME 替换为您自己的值。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::SOURCE-ACCOUNT-ID:user/SOURCE-USERNAME"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }

**注意:**如果您无权创建和编辑 IAM 角色和用户,请向账户所有者寻求帮助以完成该流程。最佳做法是限制对您的账户和资源的访问权限,这样只有您信任的实体才能访问它们。

您可以修改此策略,以允许根据需要将任意数量的源实体代入任意数量的目标角色。例如,您可以将目标账户信任策略的主体值更改为 "AWS": "SOURCE-ACCOUNT-ID"(“AWS”:“源账户 ID”)。这样允许源账户中具有代入角色权限的所有实体代入目标账户角色。有关详细信息,请参阅如何指定主体以及创建或编辑策略

测试您的访问权限

要测试您的访问权限,请按照从用户切换到 IAM 角色(控制台)切换到 IAM 角色 (AWS CLI) 中的说明进行操作。有关详细信息,请参阅 IAM 教程: 使用 IAM 角色委托跨 AWS 账户的访问权限

相关信息

如何使用 AWS CLI 代入 IAM 角色?

我创建或更新了 IAM 策略,但收到了错误“Has prohibited field Principal”(已禁止字段主体)。我该如何解决此问题?

如何授予对 Amazon S3 存储桶中对象的跨账户访问权限?

当我尝试代入跨账户 IAM 角色时,如何解决“AccessDenied”或“Invalid information”(信息无效)错误?