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