【问题标题】:How to use wildcard in AWS Principal?如何在 AWS Principal 中使用通配符?
【发布时间】: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 这样的策略条件键。

标签: amazon-web-services


【解决方案1】:

根据doc

您不能使用通配符来匹配主体名称或 ARN 的部分

您必须明确列出所有版本:

"AWS": [
         "arn:aws:sts::AccountID:assumed-role/a111-ml-role/some-api-v3",
         "arn:aws:sts::AccountID:assumed-role/a111-ml-role/some-api-v2",
         "arn:aws:sts::AccountID:assumed-role/a111-ml-role/some-api-v1"
      ],

【讨论】:

  • 是的,我可以,但我不想。我想要一个带有 * 的版本,它适合所有变体。
猜你喜欢
  • 1970-01-01
  • 2017-09-09
  • 2023-02-01
  • 2021-09-29
  • 2015-06-15
  • 2012-02-24
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多