AWS IAM - 您可以在值中使用多个通配符(*)吗?

drz*_*aus 17 amazon-s3 amazon-web-services amazon-iam

在所有IAM策略示例中,他们都提到使用通配符(*)作为"stuff"的占位符.但是,示例总是在最后使用它们,和/或仅使用一个通配符进行演示(例如,列出文件夹"xyz"中的所有内容.../xyz/*).

我找不到任何关于使用多个通配符的确定性,例如匹配多个存储桶中子文件夹中的任何内容:

arn:aws:s3:::mynamespace-property*/logs/*

允许某些内容log在"production"(mynamespace-property-prod)和"sandbox"(mynamespace-property-sand)存储桶中查看任何文件.

drz*_*aus 15

不确定,但"突然间"(你知道我在说什么)它正在政策模拟器中工作:

  • 策略1:"允许任何存储桶上的特定S3权限" (例如编辑角色)
  • 策略2:"拒绝所有S3操作,除非在用户的文件夹中跨桶" (即只能看到他们的文件)

"政策2"的地方是:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ExplicitlyDenyAnythingExceptOwnNamedFolder",
            "Action": [
                "s3:*"
            ],
            "Effect": "Deny",
            "NotResource": [
                "arn:aws:s3:::mynamespace-property*/subfolder/${aws:username}/*"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

作为旁注,请注意arn:aws:s3:::mynamespace-property*/${aws:username}/* (没有明确的子文件夹)将匹配和不使用"干预"子文件夹:

  • arn:aws:s3:::mynamespace-property-suffix/subfolder/theuser/files..."
  • arn:aws:s3:::mynamespace-property-suffix/theuser/files..."


des*_*ing 5

是的,它将起作用

文档中

您可以将通配符用作资源ARN的一部分。您可以在任何ARN段(用冒号分隔的部分)中使用通配符(*和?)。星号(*)代表字符的任何组合,问号(?)代表任何单个字符。您可以使用多个*或?每个段中的字符,但通配符不能跨越段。

我要说“您可以使用多个”是文档中的错字,它们的意思是“您可以使用”。

  • 有趣的是,文档指定了`...通配符不能跨越段。` - 通用的`Resource: "*"`(据我所知,这是有效的)不会与这个声明不一致吗? (3认同)
  • 我认为我们都误读了文档,因为它指出 ARN 段是“用冒号分隔的部分”(如:通配符不会跨越列表中的多个 ARN 定义),而不是斜杠。所以确实没有理由“*”不匹配任何资源。 (3认同)

yuc*_*cer 5

ARN格式由段组成(如partitionserviceregions ...):

arn:partition:service:region:account-id:resource-id
arn:partition:service:region:account-id:resource-type/resource-id
arn:partition:service:region:account-id:resource-type:resource-id
Run Code Online (Sandbox Code Playgroud)

根据文档:

您可以使用多个 * 或 ? 每个段中都有字符,但通配符不能跨越段。

我的解释是,您可以使用许多通配符,但是您在段中使用的通配符(由 分隔:)不会影响其他段。所以答案是肯定的