在所有 IAM 策略示例中,他们都提到使用通配符 (
*
) 作为“东西”的占位符。然而,这些示例总是在最后使用它们,和/或仅使用一个通配符进行演示(例如,使用 .../xyz/*
列出文件夹“xyz”中的所有内容)。
我找不到有关使用多个通配符的任何明确信息,例如匹配多个存储桶中子文件夹中的任何内容:
arn:aws:s3:::mynamespace-property*/logs/*
允许某些东西查看“生产”(
log
)和“沙盒”(mynamespace-property-prod
)存储桶中的任何mynamespace-property-sand
文件。
不确定,但“突然”(你知道我在说什么)它在 政策模拟器 中工作:
“政策 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..."
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
根据文档:
您可以使用多个 * 或 ?每个段中都有字符,但有通配符 无法跨段。
我的解释是,您可以使用许多通配符,但是您在一个段中使用的通配符(由
:
分隔)不会影响其他段。所以答案是是。