值为 "bucket-owner-full-control" 的 S3:X-AMZ-ACL 有什么作用/含义?



我一直在策略示例中看到这个,我不知道是什么

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

这是否意味着用户必须添加具有" bucket-ather-full-control"的标题" s3:x-amz-acl"?这是执行实际的ACL还是任意的?可以是任何标题和字符串,还是S3:X-AMZ-ACL和Bucket所有者-Full-Control?

此策略摘要要求使用标题x-amz-acl(不敏感)的cans ACL的规范,并带有值bucket-owner-full-control

通常使用对此条件的约束来确保对象的所有者(始终是上传用户,不一定是存储桶的所有者)不能创建一个对象,该对象无法读取("完全控制"是不幸的错误称呼,因为存储桶所有者已经可以删除异物,尽管如此,但不能进一步将权限委派给对象的权限)。

但不是任意的。

特别是:s3:x-amz-acl是S3特定的IAM策略条件密钥,恰好与其匹配的标题完全相同。

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

可以使用不使用HTTPS的请求,而aws:UserAgent则有一些全局条件键,而CC_6则可以根据HTTP User-Agent标头进行评估,但请注意,不应使用此记录的警告。为了防止未经授权的各方提出直接的AWS请求" ,因为用户代理很容易锻造。否则,没有很多选择允许/拒绝与标题相关的请求。

与条件密钥不同,值字符串bucket-owner-full-control实际上没有在策略中验证,因为它只是字符串,但是如果您不指定有效的值,它将永远不会匹配。

根据此文档,bucketownerfullcontrol的目的如下:

指定授予存储桶的所有者许可。存储桶的所有者不一定与对象的所有者相同。

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

只是一个想法,要为患有AWS病的任何人尝试一下。

let awsUploadExp = AWSS3TransferUtilityUploadExpression()
awsUploadExp.setValue("bucket-owner-full-control", forRequestParameter: "x-amz-acl")

相关内容

  • 没有找到相关文章

最新更新