Bucket Policy是基于资源的授权策略,您可以通过Bucket Policy授权其他用户访问您指定的OSS资源。
注意事项
- 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见访问域名和数据中心。
- 本文以OSS域名新建OSSClient为例。如果您希望通过自定义域名、STS等方式新建OSSClient,请参见初始化。
- 要设置Bucket Policy,您必须有
oss:PutBucketPolicy
权限;要获取Bucket Policy,您必须有oss:GetBucketPolicy
权限;要删除Bucket Policy,您必须有oss:DeleteBucketPolicy
权限。具体操作,请参见为RAM用户授权自定义的权限策略。
设置Bucket Policy
以下代码用于设置Bucket Policy:
# -*- coding: utf-8 -*-
import oss2
import json
# 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')
# Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
# yourBucketName填写Bucket名称。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'yourBucketName')
# 创建policy_text。
policy_text = '{"Statement": [{"Effect": "Allow", "Action": ["oss:GetObject", "oss:ListObjects"], "Resource": ["acs:oss:*:174649585760xxxx:examplebucket/*"]}], "Version": "1"}'
# 上传授权策略。
bucket.put_bucket_policy(policy_text)
获取Bucket Policy
以下代码用于获取Bucket Policy信息:
# -*- coding: utf-8 -*-
import oss2
import json
# 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')
# Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
# yourBucketName填写Bucket名称。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'yourBucketName')
# 获取授权策略。
result = bucket.get_bucket_policy()
policy_json = json.loads(result.policy)
print("Get policy text: ", policy_json)
删除Bucket Policy
以下代码用于删除Bucket Policy:
# -*- coding: utf-8 -*-
import oss2
# 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')
# Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
# yourBucketName填写Bucket名称。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'yourBucketName')
# 删除授权策略。
result = bucket.delete_bucket_policy()
assert int(result.status)//100 == 2
相关文档
- 关于授权策略的完整示例代码,请参见GitHub示例。
- 关于设置Bucket Policy的API接口说明,请参见PutBucketPolicy。
- 关于获取Bucket Policy的API接口说明,请参见GetBucketPolicy。
- 关于删除Bucket Policyy的API接口说明,请参见DeleteBucketPolicy。