值为“bucket-owner-full-control”的 s3:x-amz-acl 是啥意思?
Posted
技术标签:
【中文标题】值为“bucket-owner-full-control”的 s3:x-amz-acl 是啥意思?【英文标题】:what does s3:x-amz-acl with a value of "bucket-owner-full-control" do/mean?值为“bucket-owner-full-control”的 s3:x-amz-acl 是什么意思? 【发布时间】:2019-02-19 14:05:01 【问题描述】:我一直在存储桶策略示例中看到这一点,但我不知道它是什么
"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 有重要意义?
【问题讨论】:
【参考方案1】:此策略 sn-p 要求请求包含标准 ACL 的规范,使用标头 x-amz-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
实际上并未在策略中验证,因为它只是一个字符串,但如果您不指定有效值,它将永远不会匹配。
【讨论】:
【参考方案2】:根据this documentation,BucketOwnerFullControl的用途如下:
指定存储桶的所有者被授予 Permission.FullControl。桶的所有者不一定与对象的所有者相同。
主要用例是用户 A 将对象放入用户 B 拥有的存储桶中,这定义了存储桶所有者(用户 B)的权限。
【讨论】:
以上是关于值为“bucket-owner-full-control”的 s3:x-amz-acl 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
12.在二叉树中查找值为x的结点,打印值为x的结点的所有祖先,假设值为x的结点不多于一个