Object权限控制
更新时间:2026-09-23
设置 Object 的访问权限
BOS 支持两种方式设置 Object 的 ACL(访问控制权限):
- Canned ACL:在设置 Object 权限时,通过请求头
x-bce-acl指定预定义的权限,或通过x-bce-grant-read、x-bce-grant-full-control授予指定用户 READ、FULL_CONTROL 权限。x-bce-acl与两个x-bce-grant-*header 不能在同一请求中同时出现。 - 自定义 ACL 文件:上传一个描述权限的 ACL 结构,实现更细粒度的授权。
详细信息可参考 设置 Object 权限控制(PutObjectAcl)。
运行以下示例前,请先参考初始化完成 BOS Client 初始化,并将示例中的 bucket_name、object_key 替换为实际值。
通过 x-bce-acl 头设置 Canned ACL
Python
1from baidubce.services.bos import canned_acl
2
3# 设置 Object 为 private 权限
4bos_client.set_object_canned_acl(bucket_name, object_key, canned_acl=canned_acl.PRIVATE)
5
6# 设置 Object 为 public-read 权限
7bos_client.set_object_canned_acl(bucket_name, object_key, canned_acl=canned_acl.PUBLIC_READ)
canned_acl 模块提供的常量为 PRIVATE(private)、PUBLIC_READ(public-read)、PUBLIC_READ_WRITE(public-read-write)。
通过 x-bce-grant-read / x-bce-grant-full-control 头授予指定用户权限
Python
1# 授予指定用户对 Object 的 READ 权限
2bos_client.set_object_canned_acl(
3 bucket_name, object_key,
4 grant_read='id="12345678dfd5487e99f5c85aca5c1234",id="1234567880274ea5a9d50fe94c151234"')
5
6# 授予指定用户对 Object 的 FULL_CONTROL 权限
7bos_client.set_object_canned_acl(
8 bucket_name, object_key,
9 grant_full_control='id="12345678dfd5487e99f5c85aca5c1234",id="1234567880274ea5a9d50fe94c151234"')
注意:
set_object_canned_acl的canned_acl、grant_read、grant_full_control三个参数必须且只能指定其中一个,否则 SDK 会抛出ValueError。
通过 ACL 结构设置权限
Python
1# 授予指定用户对 Object 的 READ 权限
2acl = [{
3 "grantee": [{
4 "id": "12345678dfd5484399f5c85aca5c1234"
5 }],
6 "permission": ["READ"]
7}]
8bos_client.set_object_acl(bucket_name, object_key, acl=acl)
查看 Object 的权限
Python
1response = bos_client.get_object_acl(bucket_name, object_key)
2print("object acl:", response.access_control_list)
get_object_acl 返回的解析类中可供调用的字段:
| 字段 | 说明 |
|---|---|
access_control_list |
标识 Object 的权限列表。 |
grantee |
标识被授权人。 |
id |
被授权人 ID。 |
permission |
标识被授权人的权限。 |
删除 Object 的权限
Python
1bos_client.delete_object_acl(bucket_name, object_key)
注意: 归档存储类型对象在取回未完成、或刚上传归档类型文件(时长参考取回时长)时,不能设置、查看或删除 Object ACL。
方法说明
| 方法 | 返回值 | 说明 |
|---|---|---|
bos_client.set_object_canned_acl(bucket_name, key, ...) |
BceResponse |
通过 Canned ACL 设置 Object 权限。 |
bos_client.set_object_acl(bucket_name, key, acl) |
BceResponse |
通过 ACL 结构设置 Object 权限。 |
bos_client.get_object_acl(bucket_name, key) |
BceResponse |
查看 Object 的权限。 |
bos_client.delete_object_acl(bucket_name, key) |
BceResponse |
删除 Object 的权限。 |
评价此篇文章
