如何使用 AWS IAM 访问其他 AWS 账户中的资源?

1 分钟阅读
0

我想在另一个 AWS 账户中代入 AWS Identity and Access Management(IAM)角色。如何使用 IAM 设置跨账户存取?

简短描述

您可以与另一个 AWS 账户中的 IAM 角色建立信任关系,以便访问其资源。例如,您要从源账户访问目标账户。要实现此目标,通过向 AssumeRole API 提供您的 IAM 用户权限,将源账户的 IAM 角色代入到目标账户中。您必须在目标 IAM 角色的信任关系中指定您的 IAM 用户。

注意:您还可以将源 IAM 角色代入到目标 IAM 角色中,而不是通过角色链接使用 user to role(用户到角色)。角色链接仅适用于编程访问,例如 AWS 命令行界面(AWS CLI)或 API。角色更改无法与 AWS 管理控制台一起使用。

解决方案

按照以下说明为源账户创建 IAM 权限策略、将策略附加到一个用户,然后为目标账户创建角色。

**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新的 AWS CLI 版本

源账户

1.    创建与以下内容类似的 IAM 策略

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

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": [
        "arn:aws:iam::DESTINATION-ACCOUNT-ID:role/DESTINATION-ROLENAME"
      ]
    }
  ]
}

2.    将 IAM 策略附加到您的 IAM 用户权限。

按照此处的步骤将创建的策略附加到您的 IAM 用户权限。

目标账户

1.    创建 IAM 角色

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

**注意:**将 SOURCE-ACCOUNT-ID 和 SOURCE-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"。此操作可允许源账户中具有代入角色权限的所有实体代入到目标账户角色中。有关更多信息,请参阅指定委托人创建或编辑策略

测试您的访问权限

如要测试您的访问权限,请按照切换到角色(控制台)的说明进行操作。

-或者-

按照切换到 IAM 角色(AWS CLI)的说明进行操作。

有关更多信息,请参阅IAM 教程:使用 IAM 角色委派跨 AWS 账户的访问权限


相关信息

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

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

如何提供对 Amazon S3 存储桶中的对象的跨账户存取?

为什么我在尝试代入跨账户 IAM 角色时收到“AccessDenied(访问被拒绝)”或“Invalid information(无效的信息)”错误?

相关视频

AWS 官方
AWS 官方已更新 2 年前