开发者社区> 问答> 正文

关于Object操作之如何实现PutObjectACL?


Put Object ACL


Put Object ACL接口用于修改Object的访问权限。目前Object有三种访问权限:private, public-read, public-read-write。Put Object ACL操作通过Put请求中的“x-oss-object-acl”头来设置,这个操作只有Bucket Owner有权限执行。如果操作成功,则返回200;否则返回相应的错误码和提示信息。

请求语法:PUT /ObjectName?acl HTTP/1.1
x-oss-object-acl: Permission
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue





Object ACL释义

名称描述
private该ACL表明某个Object是私有资源,即只有该Object的Owner拥有该Object的读写权限,其他的用户没有权限操作该Object
public-read该ACL表明某个Object是公共读资源,即非Object Owner只有该Object的读权限,而Object Owner拥有该Object的读写权限
public-read-write该ACL表明某个Object是公共读写资源,即所有用户拥有对该Object的读写权限
default该ACL表明某个Object是遵循Bucket读写权限的资源,即Bucket是什么权限,Object就是什么权限


细节分析:

  1. Object的读操作包括:GetObject,HeadObject,CopyObject和UploadPartCopy中的对source object的读;Object的写操作包括:PutObject,PostObject,AppendObject,DeleteObject,DeleteMultipleObjects,CompleteMultipartUpload以及CopyObject对新的Object的写。
  2. x-oss-object-acl中权限的值必须在上述3种权限中。如果有不属于上述3种的权限,OSS返回400 Bad Request消息,错误码:InvalidArgument。
  3. 用户不仅可以通过PutObjectACL接口来设置Object ACL,还可以在Object的写操作时,在请求头中带上x-oss-object-acl来设置Object ACL,效果与PutObjectA ACL等同。例如PutObject时在请求头中带上x-oss-object-acl可以在上传一个Object的同时设置某个Object的ACL。
  4. 对某个Object没有读权限的用户读取某个Object时,OSS返回 403 Forbidden消息,错误码:AccessDenied,提示:You do not have read permission on this object.
  5. 对某个Object没有写权限的用户写某个Object时,OSS返回 403 Forbidden消息,错误码:AccessDenied,提示:You do not have write permission on this object.
  6. 只有Bucket Owner才有权限调用PutObjectACL来修改该Bucket下某个Object的ACL。非Bucket Owner调用PutObjectACL时,OSS返回 403 Forbidden消息,错误码:AccessDenied,提示:You do not have write acl permission on this object.
  7. Object ACL优先级高于Bucket ACL。例如Bucket ACL是private的,而Object ACL是public-read-write的,则访问这个Object时,先判断Object的ACL,所以所有用户都拥有这个Object的访问权限,即使这个Bucket是private bucket。如果某个Object从来没设置过ACL,则访问权限遵循Bucket ACL。


示例


[backcolor=transparent]请求示例: PUT /test-object?acl HTTP/1.1
x-oss-object-acl: public-read
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Wed, 29 Apr 2015 05:21:12 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfj byc:KU5h8YMUC78M30dXqf3JxrTZHiA=


[backcolor=transparent]返回示例: HTTP/1.1 200 OK
x-oss-request-id: 559CC9BDC755F95A64485981
Date: Wed, 29 Apr 2015 05:21:12 GMT
Content-Length: 0
Connection: keep-alive
Server: AliyunOSS

展开
收起
青衫无名 2017-10-20 11:26:16 2598 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
建立联系方法之一 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载