2016-08-22 58 views
1

努力创建存储桶策略以列出某些文件类型。具体来说,我想只允许访问图像类型。扩展白名单S3资源

我能创造一个黑名单策略,像这样:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Action": [ 
       "s3:GetObject" 
      ], 
      "Effect": "Deny", 
      "Resource": [ 
       "arn:aws:s3:::[my_bucket]/*.exe" 
      ], 
      "Principal": { 
       "AWS": "*" 
      } 
     } 
    ] 
} 

白名单未遂#1:

问题:这允许所有类型的,不只是那些上市

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Action": [ 
       "s3:GetObject" 
      ], 
      "Effect": "Allow", 
      "Resource": [ 
       "arn:aws:s3:::[my_bucket]/*.jpg", 
     "arn:aws:s3:::[my_bucket]/*.png", 
     "arn:aws:s3:::[my_bucket]/*.gif", 
      ], 
      "Principal": { 
       "AWS": "*" 
      } 
     } 
    ] 
} 

WHITELIST ATTEMPT#2:

问题:这最终拒绝所有文件

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Action": [ 
     "s3:GetObject" 
     ], 
     "Effect": "Deny", 
     "Resource": [ 
     "arn:aws:s3:::[my_bucket]/*" 
     ], 
     "Principal": { 
     "AWS": "*" 
     } 
    }, 
     { 
      "Action": [ 
       "s3:GetObject" 
      ], 
      "Effect": "Allow", 
      "Resource": [ 
       "arn:aws:s3:::[my_bucket]/*.jpg", 
     "arn:aws:s3:::[my_bucket]/*.png", 
     "arn:aws:s3:::[my_bucket]/*.gif", 
      ], 
      "Principal": { 
       "AWS": "*" 
      } 
     } 
    ] 
} 
+1

**任何**匹配的拒绝总是拒绝。允许不能否决拒绝。 –

回答

2

白名单桶政策#1是正确的。它允许所有文件类型的原因可能是您的IAM策略允许用户使用所有文件类型。确保连接到用户的IAM策略没有S3FullAccess

按照最小权限原则,决定默认 否认和明确的拒绝总是胜过的允许。例如,如果 IAM策略授予访问对象的权限,S3存储桶策略 将拒绝对该对象的访问,并且没有S3 ACL,则将拒绝访问 。同样,如果没有方法指定允许,那么 请求将被默认拒绝。只有在没有方法指定DENY 且一个或多个方法指定允许时,该请求才允许为 。

+0

Thanks @helloV - 我没有应用IAM,但事实证明,我在对象级别分配了“公开阅读”ACL,这是重写策略的原因。 – Yarin