值为“ bucket-owner-full-control”的s3:x-amz-acl有什么作用/意味着什么?

时间:2019-02-19 14:05:02

标签: amazon-web-services amazon-s3 amazon-iam

我一直在存储桶策略示例中看到这一点,我不知道这是什么

"Condition": {
    "StringEquals": {
        "s3:x-amz-acl": "bucket-owner-full-control"
    }

这是否意味着用户必须添加具有值“ bucket-owner-full-control”的标头“ s3:x-amz-acl”?这是强制执行实际的ACL还是任意的?可以是任何标头和字符串,还是s3:x-amz-acl和bucket-owner-full-control有意义?

2 个答案:

答案 0 :(得分:1)

此策略代码段要求请求包含标头x-amz-acl(不区分大小写)的罐头ACL规范,值为bucket-owner-full-control

对此条件的约束通常用于确保对象的所有者(始终是上载用户,不一定是存储桶的所有者)无法创建存储桶所有者无法读取的对象(不幸的是,“完全控制”是一个错误的名词,因为存储桶拥有者已经可以删除异物,尽管如此,它无法进一步委派该对象的权限。

但这不是任意的。

具体来说:s3:x-amz-acl是一个S3-specific IAM policy condition key,恰好与它匹配的标题完全相同。

这不是任意的头匹配项,即使有时这种功能可能很方便。大多数其他HTTP标头不受政策条件的限制,例如,您不能使用s3:x-random-http-header条件。

global condition keys这样的aws:SecureTransport可以用来拒绝未使用HTTPS的请求,还有aws:UserAgent可以根据HTTP User-Agent标头进行评估,但是请注意已记录的警告,该“不应用于防止未经授权的方发出直接的AWS请求” ,因为它很容易被用户代理伪造。否则,没有太多选项允许/拒绝与标头相关的请求。

与条件键不同,值字符串bucket-owner-full-control实际上没有在策略中进行验证,因为它只是一个字符串,但是如果您不指定有效值,则它将根本不匹配。

答案 1 :(得分:0)

根据this documentation,BucketOwnerFullControl的用途如下:

  

指定为存储桶的所有者授予Permission.FullControl。存储桶的所有者不必与对象的所有者相同。

主要用途是用户A将对象放入用户B拥有的存储桶中,并定义了存储桶所有者(用户B)的权限。