Object权限控制
更新时间:2022-07-13
设置Object的访问权限
目前BOS支持两种方式设置ACL。第一种是使用Canned Acl,在PutObjectAcl的时候,通过头域的"x-bce-acl"或者"x-bce-grant-permission'来设置object访问权限,当前可设置的权限包括private和public-read,两种类型的header不可以同时在一个请求中出现。第二种方式是上传一个ACL文件。 详细信息请参考设置Object权限控制
- 通过使用头域的"x-bce-acl"来设置object访问权限
from baidubce.services.bos import canned_acl
# 设置object为private权限
bos_client.set_object_canned_acl(bucket_name, object_key, canned_acl=canned_acl.PRIVATE)
# 设置object为public-read权限
bos_client.set_object_canned_acl(bucket_name, object_key, canned_acl=canned_acl.PUBLIC_READ)
- 通过使用头域的"x-bce-grant-permission'来设置object访问权限
# 授予指定用户对Object的可读权限。
bos_client.set_object_canned_acl(bucket_name, object_key, grant_read='id="12345678dfd5487e99f5c85aca5c1234",id="1234567880274ea5a9d50fe94c151234"')
# 授予指定用户对Object的FULL_CONTROL权限。
bos_client.set_object_canned_acl(bucket_name, object_key, grant_full_control='id="12345678dfd5487e99f5c85aca5c1234",id="1234567880274ea5a9d50fe94c151234"')
- 通过set_object_acl()接口来设置object权限。
# 授予指定用户对Object的可读权限。
acl = [{
"grantee":[{
"id":"12345678dfd5484399f5c85aca5c1234"
}],
"permission":["READ"]
}]
bos_client.set_object_acl(bucket_name, object_key, acl = acl)
查看Object的权限
归档存储类型对象在取回未完成,或者刚上传归档类型文件(时长参考取回时长)时,不能设置Object acl
查看Object的权限如下代码所示:
response = bos_client.get_object_acl(bucket_name, object_key)
print("object acl:", response)
getObjectAcl方法返回的解析类中可供调用的参数有:
参数 | 说明 |
---|---|
accessControlList | 标识Object的权限列表 |
grantee | 标识被授权人 |
-id | 被授权人id |
permission | 标识被授权人的权限 |
删除Object的权限
归档存储类型对象在取回未完成,或者刚上传归档类型文件(时长参考取回时长)时,不能删除Object acl
如下代码可以删除Object的权限:
bos_client.delete_object_acl(bucket_name,object_key)