我对从同一 AWS 账户中的IAM 用户代入角色的要求有点困惑。
根据此文档: https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html:
如果用户与角色位于同一账户中,则可以执行任一操作 以下情况:
将策略附加到用户(与 不同的帐户(。
将用户直接添加为角色的信任策略中的委托人。
我显式地向授予我的用户的组添加了代入角色策略,但它无法承担记下的角色:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::123456789:role/some-role-name"
}
}
一旦我将帐号作为委托人添加到目标角色的信任策略中,它就开始工作了:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com",
"AWS": "arn:aws:iam::123456789:root"
},
"Action": "sts:AssumeRole"
}
]
}
所以,我很困惑有两个原因:
- 鉴于我引用的文档,为什么第一个策略本身不起作用?
- 文档中的第二个项目符号显示"将用户添加为主体"。 我想我添加了整个帐户而不是用户。 仅添加此用户的语法是什么? 我在阅读的文件中没有遇到它。
1(这对我来说看起来不错,因为帐户ID和角色名称是正确的。你能添加你得到的确切错误吗?
这是我的一个策略的实际示例,该策略允许被授予此策略的用户在帐户中承担角色developer
acc1
、acc2
和acc3
:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": [
"arn:aws:iam::acc1:role/developer",
"arn:aws:iam::acc2:role/developer",
"arn:aws:iam::acc3:role/developer"
]
}
]
}
2( 不使用root
,使用 IAM 用户的arn
。类似于"arn:aws:iam::123456789:user/John"