Bucket权限管理
更新时间:2026-09-02
设置 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 为私有读写权限。 |
设置指定用户对 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 白名单方式设置防盗链
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
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。 |
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
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 方式创建的临时访问身份,管理员也可进行专门的权限设定。 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 的第二个参数传入。 |
| 参数 | 说明 |
|---|---|
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 配置项所影响的资源。 |
评价此篇文章
