我想设置对另一个 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。
完成以下步骤:
使用 JSON 编辑器创建 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" ] } ] }
将 IAM 策略附加到您的 IAM 用户权限。
在控制台上创建 IAM 角色。
粘贴与以下内容类似的自定义信任策略:
**注意:**将 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"(“AWS”:“源账户 ID”)。这样允许源账户中具有代入角色权限的所有实体代入目标账户角色。有关详细信息,请参阅如何指定主体以及创建或编辑策略。
要测试您的访问权限,请按照从用户切换到 IAM 角色(控制台)或切换到 IAM 角色 (AWS CLI) 中的说明进行操作。有关详细信息,请参阅 IAM 教程: 使用 IAM 角色委托跨 AWS 账户的访问权限。
如何使用 AWS CLI 代入 IAM 角色?
我创建或更新了 IAM 策略,但收到了错误“Has prohibited field Principal”(已禁止字段主体)。我该如何解决此问题?
如何授予对 Amazon S3 存储桶中对象的跨账户访问权限?
当我尝试代入跨账户 IAM 角色时,如何解决“AccessDenied”或“Invalid information”(信息无效)错误?