我想允许其他帐户中的某些角色在我的帐户中担任角色。我不想一一指定角色,因为它们容易经常更改。
我为“信任关系”制定了此策略,该策略应该允许任何名称以_my_suffix
结尾的角色,但不起作用(访问被拒绝):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT_NR_A:root"
},
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:iam::ACCOUNT_NR_A:role/*_my_suffix"
}
},
"Action": "sts:AssumeRole"
}
]
}
另一方面,此策略有效,但是它太开放了,因为它允许帐户A中的任何用户/角色承担我的角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT_NR_A:root"
},
"Action": "sts:AssumeRole"
}
]
}
那么,有什么方法可以只允许一组角色而无需明确指定?
答案 0 :(得分:1)
除了"Principal" : { "AWS" : "*" }
之外,在信任策略中不能使用通配符。原因是当您将身份指定为Principal时,您必须使用完整的ARN,因为IAM会转换为唯一ID,例如AIDAxxx(用于IAM用户)或AROAxxx(用于IAM角色)。以下是来自document的内容:
如果您在角色信任策略中的Principal元素包含一个ARN, 指向特定的IAM用户,然后将ARN转换为 保存策略时用户的唯一主体ID。这有帮助 通过删除来减轻某人提升特权的风险 并重新创建用户。您通常不会在 控制台,因为还有反向转换回 显示信任策略时用户的ARN。
答案 1 :(得分:1)
我最近遇到了相同的用例。没有任何答复为我解决了这个问题。
Charli,您的原始解决方案是有效的,但我需要进行一些调整才能使其正常工作,即,我需要将“ ArnLike”替换为“ stringLike”,并将“ aws:SourceArn”切换为使用“ aws:PrincipalArn”:>
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<ACCOUNT_ID>:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringLike": {
"aws:PrincipalArn": "arn:aws:iam::<ACCOUNT_ID>:role/test-role-name-*"
}
}
}
答案 2 :(得分:0)
这似乎是委派访问信任帐户(您的帐户)而非信任帐户(_my_suffix-AWS帐户)的问题。您可以在以下网址中检查以下几项内容。
链接:https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html
谢谢