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

问题描述 投票:0回答:4

在所有 IAM 策略示例中,他们都提到使用通配符 (

*
) 作为“东西”的占位符。然而,这些示例总是在最后使用它们,和/或仅使用一个通配符进行演示(例如,使用
.../xyz/*
列出文件夹“xyz”中的所有内容)。

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

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

允许某些东西查看“生产”(

log
)和“沙盒”(
mynamespace-property-prod
)存储桶中的任何
mynamespace-property-sand
文件。

amazon-web-services amazon-s3 amazon-iam
4个回答
34
投票

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

  • 策略 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}/*"
            ]
        }
    ]
}

作为旁注,请注意

arn:aws:s3:::mynamespace-property*/${aws:username}/*
(无显式子文件夹) 将匹配有或没有“干预”子文件夹:

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

19
投票

是的,会起作用的

来自文档

您可以使用通配符作为资源 ARN 的一部分。您可以使用 ARN 段内的通配符(* 和 ?)(分隔的部分 由冒号)表示任意字符组合 Askterisk (*) 和任何带有问号 (?) 的单个字符。你 可以使用多个 * 或 ?每个片段中的字符。

对于那些质疑单个

*
含义的人。不要将其解释为跨越多个段,而是具有特殊含义
ALL RESOURCES

值得注意的是,您不能使用通配符来匹配主体名称或 ARN 的一部分(如果您正在使用基于资源的策略)。


5
投票

ARN 格式由段组成(如分区服务区域...):

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

根据文档:

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

我的解释是,您可以使用许多通配符,但是您在一个段中使用的通配符(由

:
分隔)不会影响其他段。所以答案是


© www.soinside.com 2019 - 2024. All rights reserved.