Bucket权限管理
更新时间:2026-09-20
设置 Bucket 的访问权限
如下代码将 Bucket 的权限设置为 private:
Python
1from baidubce.auth.bce_credentials import BceCredentials
2from baidubce.bce_client_configuration import BceClientConfiguration
3from baidubce.services.bos.bos_client import BosClient
4from baidubce.services.bos import canned_acl
5
6access_key_id = 'your-access-key-id'
7secret_access_key = 'your-secret-access-key'
8endpoint = 'bj.bcebos.com'
9bucket_name = 'your-bucket-name'
10
11config = BceClientConfiguration(
12 credentials=BceCredentials(access_key_id, secret_access_key),
13 endpoint=endpoint
14)
15bos_client = BosClient(config)
16
17bos_client.set_bucket_canned_acl(bucket_name, canned_acl.PRIVATE)
参数说明
| 参数 | 必填 | 说明 |
|---|---|---|
access_key_id |
是 | 用户的 Access Key ID。示例中请替换为实际值,文档中不应填写真实凭证。 |
secret_access_key |
是 | 用户的 Secret Access Key。示例中请替换为实际值,文档中不应填写真实凭证。 |
endpoint |
是 | BOS 服务访问域名,例如 bj.bcebos.com。 |
bucket_name |
是 | 待设置访问权限的 Bucket 名称。 |
canned_acl.PRIVATE |
是 | 设置 Bucket 为私有读写权限。 |
其中 canned_acl 中包含三个参数:PRIVATE、PUBLIC_READ、PUBLIC_READ_WRITE,它们分别对应的相关权限为:private、public-read、public-read-write。关于权限的具体内容可以参考《BOS API 文档 使用 CannedAcl 方式的权限控制》。
设置指定用户对 Bucket 的访问权限
BOS 提供 set_bucket_acl 方法来实现指定用户对 Bucket 的访问权限设置,可以参考如下代码实现:
Python
1from baidubce.auth.bce_credentials import BceCredentials
2from baidubce.bce_client_configuration import BceClientConfiguration
3from baidubce.services.bos.bos_client import BosClient
4
5access_key_id = 'your-access-key-id'
6secret_access_key = 'your-secret-access-key'
7endpoint = 'bj.bcebos.com'
8bucket_name = 'your-bucket-name'
9
10config = BceClientConfiguration(
11 credentials=BceCredentials(access_key_id, secret_access_key),
12 endpoint=endpoint
13)
14bos_client = BosClient(config)
15
16bos_client.set_bucket_acl(
17 bucket_name,
18 [{
19 'grantee': [
20 {'id': 'b124deeaf6f641c9ac27700b41a350a8'},
21 {'id': 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'}
22 ],
23 'permission': ['FULL_CONTROL'],
24 'resource': ['your-bucket-name/prefix/*']
25 }]
26)
参数说明
| 参数 | 必填 | 说明 |
|---|---|---|
bucket_name |
是 | 待设置 ACL 的 Bucket 名称。 |
grantee |
是 | 被授权用户列表,列表中的 id 为用户 ID。 |
permission |
是 | 授权权限列表,支持 READ、WRITE、FULL_CONTROL。 |
resource |
否 | ACL 配置项影响的资源范围,例如 your-bucket-name/prefix/*。 |
注意:
id为用户 ID,您可在用户信息中查看。permission中的权限设置包含三个值:READ、WRITE、FULL_CONTROL,它们分别对应相关权限。具体内容可以参考《BOS API文档 上传ACL文件方式的权限控制》。set_bucket_acl()的第二个参数acl不需要包含"accessControlList"字段,已经封装到接口中。
设置更多 Bucket 访问权限
-
通过设置 referer 白名单方式设置防盗链
Python1from baidubce.auth.bce_credentials import BceCredentials 2from baidubce.bce_client_configuration import BceClientConfiguration 3from baidubce.services.bos.bos_client import BosClient 4 5access_key_id = 'your-access-key-id' 6secret_access_key = 'your-secret-access-key' 7endpoint = 'bj.bcebos.com' 8bucket_name = 'your-bucket-name' 9 10config = BceClientConfiguration( 11 credentials=BceCredentials(access_key_id, secret_access_key), 12 endpoint=endpoint 13) 14bos_client = BosClient(config) 15 16my_acl = [{ 17 'grantee': [{'id': '*'}], 18 'permission': ['FULL_CONTROL'], 19 'condition': { 20 'referer': { 21 'stringEquals': ['http://test/index'] 22 } 23 } 24}] 25 26bos_client.set_bucket_acl(bucket_name, my_acl)参数说明
参数 必填 说明 bucket_name是 待设置 ACL 的 Bucket 名称。 my_acl是 Bucket ACL 配置列表。 grantee.id是 被授权人 ID, *表示所有用户。permission是 授权权限列表。 condition.referer.stringEquals是 referer 白名单条件,示例值为 http://test/index。 -
限制客户端 IP 访问,只允许部分客户端 IP 访问
Python1from baidubce.auth.bce_credentials import BceCredentials 2from baidubce.bce_client_configuration import BceClientConfiguration 3from baidubce.services.bos.bos_client import BosClient 4 5access_key_id = 'your-access-key-id' 6secret_access_key = 'your-secret-access-key' 7endpoint = 'bj.bcebos.com' 8bucket_name = 'your-bucket-name' 9 10config = BceClientConfiguration( 11 credentials=BceCredentials(access_key_id, secret_access_key), 12 endpoint=endpoint 13) 14bos_client = BosClient(config) 15 16my_acl = [{ 17 'grantee': [{'id': '*'}], 18 'permission': ['FULL_CONTROL'], 19 'condition': { 20 'ipAddress': ['192.170.0.6'] 21 } 22}] 23 24bos_client.set_bucket_acl(bucket_name, my_acl)参数说明
参数 必填 说明 bucket_name是 待设置 ACL 的 Bucket 名称。 my_acl是 Bucket ACL 配置列表。 grantee.id是 被授权人 ID, *表示所有用户。permission是 授权权限列表。 condition.ipAddress是 允许访问的客户端 IP 地址列表。
设置 STS 临时 token 权限
对于通过 STS 方式创建的临时访问身份,管理员也可进行专门的权限设定。 STS 的简介及设置临时权限的方式可参见 临时授权访问。
使用 BOS Python SDK 设置 STS 临时 token 权限可参考 通过sts方式访问BOS
查看 Bucket 的权限
如下代码可以查看 Bucket 的权限:
Python
1from baidubce.auth.bce_credentials import BceCredentials
2from baidubce.bce_client_configuration import BceClientConfiguration
3from baidubce.services.bos.bos_client import BosClient
4
5access_key_id = 'your-access-key-id'
6secret_access_key = 'your-secret-access-key'
7endpoint = 'bj.bcebos.com'
8bucket_name = 'your-bucket-name'
9
10config = BceClientConfiguration(
11 credentials=BceCredentials(access_key_id, secret_access_key),
12 endpoint=endpoint
13)
14bos_client = BosClient(config)
15
16response = bos_client.get_bucket_acl(bucket_name)
17
18bos_client.set_bucket_acl(bucket_name, response.access_control_list)
参数说明
| 参数 | 必填 | 说明 |
|---|---|---|
bucket_name |
是 | 待查看 ACL 的 Bucket 名称。 |
response |
是 | get_bucket_acl 方法返回的 Bucket ACL 解析结果。 |
response.access_control_list |
是 | Bucket 的权限列表,可作为 set_bucket_acl 的第二个参数传入。 |
get_bucket_acl 方法返回的解析类中可供调用的参数有:
| 参数 | 说明 |
|---|---|
owner |
Bucket owner 信息。 |
owner.id |
Bucket owner 的用户 ID。 |
access_control_list |
标识 Bucket 的权限列表。 |
access_control_list[].grantee |
标识被授权人。 |
access_control_list[].grantee[].id |
被授权人 ID。 |
access_control_list[].permission |
标识被授权人的权限。 |
access_control_list[].resource |
ACL 配置项所影响的资源。 |
评价此篇文章
