2017-05-31 441 views
2

我试图授予一组用户访问所有具有特定标记的s3存储桶的权限,但不能访问所有其他人。 我拼凑起来的政策是这样的:AWS S3 IAM基于标签授予对存储桶的访问权

{ 
    "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:::*/*" 
      ] 
     } 
    ] 
} 

,我无法得到它的工作我试图模拟对一个标记桶的阿尔恩,ListAllMyBuckets作品ListBucket政策和ListAllMyBuckets ,ListBucket失败。

如果我将此政策调整为ec2(如'授予开始/停止/终止实例,如果标记匹配'),它就像一个魅力。

这是可能的吗?还是S3不允许用这种方式匹配桶?

(进一步澄清:我的桶有标签“允许组”和“AllowGroup”集,我不知道,如果仪表板可能有问题)

+0

定义“我无法让它工作”。什么是问题? – kosa

+0

它不应该工作,你在这里没有冒号:''s3.ResourceTag/allow-group“”s3-access-group“' –

+0

我刚刚检查过,缺少的冒号是c&p-error, ''s3.ResourceTag/AllowGroup“:”s3-access-group“'。 –

回答

1

我做了一些实验,并也无法获得结果你寻求。

首先,在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" 
       } 
      } 
     } 
    ] 
} 

注意,它使用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" 
       } 
      } 
     } 
    ] 
} 

但是,它不会给我访问即使当两个桶和对象有适当的标签的对象。

相关问题