【发布时间】:2022-02-11 00:49:56
【问题描述】:
目前我的政策角色如下:
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:sts::AccountID:assumed-role/a111-ml-role/some-api-v2",
"arn:aws:sts::AccountID:assumed-role/a111-ml-role/some-api-v1"
],
"Service": [
"elasticmapreduce.amazonaws.com",
"glue.amazonaws.com",
"comprehend.amazonaws.com",
"sagemaker.amazonaws.com"
]
},
"Action": [
"sts:AssumeRole",
"sts:TagSession"
]
}
]
}
所以我想用 V*(通配符)替换 V1 和 V2,因为我想拥有多个资源。 我怎样才能做到这一点?尝试使用 Condition 但没有成功。
IE 而不是
"AWS": [
"arn:aws:sts::AccountID:assumed-role/a111-ml-role/some-api-v2",
"arn:aws:sts::AccountID:assumed-role/a111-ml-role/some-api-v1"
],
我想要这样的东西:
"AWS": [
"arn:aws:sts::AccountID:assumed-role/a111-ml-role/some-api-v*""
],
【问题讨论】:
-
除了通配符
"*"和"AWS": "*",您不能使用通配符来匹配主体名称或 ARN 的一部分。 -
是的,我知道,我正在寻找替代它的东西。因为如果我只写
"AWS": "*"有很多访问权限 -
调查将“AWS”:“*”设为委托人,但如果提供的委托人 ARN 与您的通配符不匹配,则添加拒绝条件。这个没测试过,可能不行。此外,也许您可以简单地自动执行此操作:针对与通配符匹配的角色名称相关联的 IAM 操作(添加/删除角色)触发基于 CloudTrail 日志的 Lambda 函数,并通过添加/删除相关的完整 ARN 来更新策略。
-
你的意思是:
Effect: "Deny" Principal: { "AWS": "*"} Condition: { "StringNotLike": { "arn:aws:sts::/my_role_*" } -
是这样的想法,但再次没有经过测试,因此与您一起调查。但是您会使用像 aws:PrincipalArn 这样的策略条件键。