我尝试代入跨账户 AWS Identity and Access Management (IAM) 角色。但我收到了与以下内容类似的错误消息:
“在调用 AssumeRole 操作时发生错误(AccessDenied):”
-或者-
“一个或多个字段中的信息无效。请检查您的信息或联系管理员。”
简短描述
要在另一个 AWS 账户中代入 IAM 角色,请先编辑一个账户(代入 IAM 角色的账户)中的权限。然后,编辑另一个账户(允许代入 IAM 角色的账户)中的信任策略。
例如,假设您有两个账户,分别名为 Account_Bob 和 Account_Alice。您在 Account_Bob 中还有一个名为 Bob 的 IAM 用户或角色,在 Account_Alice 中还有一个名为 Alice 的 IAM 角色。在此情景中,Bob 将代入名为 Alice 的 IAM 角色。
要对多个账户或跨账户使用 AssumeRole API 调用,您必须具有信任策略来授权代入角色的权限,如下所示:
以下是 Bob 所需的权限示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PermissionToAssumeAlice",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::Account_Alice:role/Alice"
}
]
}
以下是 Alice 的信任策略示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT_Bob:user/Bob"
},
"Action": "sts:AssumeRole"
}
]
}
解决方法
为避免在代入跨账户 IAM 角色时出现错误,请记住以下几点:
**注意:**如果您在运行 AWS 命令行界面(AWS CLI)命令时遇到错误,请确保您使用的是最新版本的 AWS CLI。
- 代入角色 Bob 必须拥有 AssumeRole 的权限。
- 您必须以 Bob 的身份登录 AWS 账户。有关更多信息,请参阅您的 AWS 账户 ID 及其别名。
- 所扮演的角色 Alice 必须存在。确保未将其删除,并且 ARN 配置正确。
- 如果您使用角色串联,请确保您并未使用上一个会话中的 IAM 凭证。有关更多信息,请参阅角色术语和概念中的角色串联部分。
- 如果 Account_Bob 是 AWS Organizations 的一部分,可能是因为服务控制策略(SCP)限制对 Account_Bob 或 Account_Alice 的代入角色访问权限。有关更多信息,请参阅服务控制策略 (SCP)。
相关信息
如何获取数据以帮助排查 IAM 权限访问遭到拒绝或未经授权的问题?
切换到角色(控制台)
切换到 IAM 角色 (AWS CLI)