Har*_*ild 12 amazon-s3 amazon-web-services amazon-iam
我试图授予一组用户访问具有特定标签的所有 s3 存储桶的权限,但无法访问所有其他用户。我拼凑起来的政策如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowListAll",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Sid": "AllowAllIfGroup",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Condition: : {
"StringEquals" : {
"s3.ResourceTag/allow-group": "s3-access-group"
}
},
"Resource": [
"arn:aws:s3:::*",
"arn:aws:s3:::*/*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我无法让它工作 我尝试针对标记的 Bucket 的 arn 模拟 ListBucket 和 ListAllMyBuckets 的策略,ListAllMyBuckets 有效,ListBucket 失败。
如果我将此策略应用于 ec2(如“如果标签匹配,则授予启动/停止/终止实例”)它就像一个魅力。
这是可能的,还是 S3 不允许以这种方式匹配存储桶?
(进一步说明:我的存储桶设置了“allow-group”和“AllowGroup”标签,我不确定破折号是否有问题)
小智 12
S3 不支持基于存储桶标签(ResourceTag)的条件键,但仅支持对象标签。
在此处查看支持的条件键的完整列表(向下滚动到“Amazon S3 的条件键”):https : //docs.aws.amazon.com/IAM/latest/UserGuide/list_amazons3.html#amazons3-policy-keys
这就是为什么它不起作用。
我做了一些实验,也无法得到你想要的结果。
首先,对 S3 ResourceTag 的在线引用很少,但AWS re:Invent 2016: AWS S3 Deep-Dive Hands-On Workshop给出了一个示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::EXAMPLE-BUCKET-NAME/*",
"Condition": {
"StringEquals": {
"S3:ResourceTag/HIPAA": "True"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
请注意,它使用S3:ResourceTag而不是S3.ResourceTag.
我尝试对存储桶标签和对象标签使用此逻辑,但未成功使其工作。我怀疑这ResourceTag是指对象级标签而不是桶级标签,但无法证明这一点,因为它在两种情况下都无法工作。
我使用了这样的策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
],
"Condition": {
"StringEquals": {
"s3:ResourceTag/AllowGroup": "s3-access-group"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是,即使存储桶和对象都具有适当的标签,它也不会让我访问对象。
| 归档时间: |
|
| 查看次数: |
6481 次 |
| 最近记录: |