[英]Amazon AWS S3 IAM Policy based on namespace or tag
我有一些桶,它们以与assets-<something>
相同的命名空间开头,所以我想知道什么是给IAM组权限的最佳选择,而维护它的需求最小。
是否可以在ARN中使用任何类型的正则表达式? 或者也许我可以使用标签? EC2具有ResourceTag
条件,但似乎S3不存在。
或者我应该为每个桶添加新的ARN到策略?
我再次寻找最小的解决方案,因此将新策略附加到每个桶本身似乎有点多。
IAM策略可以基于通配符授予对Amazon S3存储桶的访问权限。
例如,此策略授予列出存储桶内容和从存储桶检索对象的权限,但仅当存储桶以assets-
开头时:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SomeSID",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::assets-*",
"arn:aws:s3:::assets-*/*"
]
}
]
}
请注意, Resource
部分同时引用了bucket(对于ListBucket
)和bucket的内容(对于GetObject
)。
通配符也可以在存储桶名称的其他位置工作,例如: arn:aws:s3:::*-record
无法基于标签授予对Amazon S3存储桶的访问权限。
ARN格式
顺便说一句,如果你想知道为什么亚马逊S3存储桶的ARN(亚马逊资源名称)中有这么多冒号,那是因为ARN的正常格式是:
arn:aws:<service name>:<region>:<account>:<resource>
对于Amazon S3存储桶,可以从存储桶名称(全局唯一)中识别区域和帐户,因此这些参数保留为空白。
是的确看来我可以使用带有ARN的IAM策略arn:aws:s3:::assets-*
和arn:aws:s3:::assets-*/*
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.