四种方法:
- Bucket public-read
- Object public-read 最好的方法
- STS 临时访问凭证
- 签名 URL
ACL: public-read
对象存储 OSS > 开发指南 > 数据安全 > 访问控制 > 读写权限 ACL
Bucket ACL
对象存储 OSS > API 参考 > 关于 Bucket 操作 > 权限控制(ACL)
Bucket ACL: private
, public-read
, public-read-write
将存储空间(Bucket)权限设置成 public-read
。
- 设置 Bucket ACL:PutBucketACL
- 获取 Bucket ACL:GetBucketACL
Object ACL
对象存储 OSS > API 参考 > 关于 Object 操作 > 权限控制(ACL)
Object ACL: private
, public-read
, public-read-write
, default
PS: default
, 顾名思义,是默认值,表示继承 Bucket ACL。
将文件权限设置成 public-read
。
-
设置 Object ACL:PutObjectACL
PUT /ObjectName?acl HTTP/1.1 x-oss-object-acl: Permission Host: BucketName.oss-cn-hangzhou.aliyuncs.com Date: GMT Date Authorization: SignatureValue
-
获取 Object ACL:GetObjectACL
GET /ObjectName?acl HTTP/1.1 Host: BucketName.oss-cn-hangzhou.aliyuncs.com Date: GMT Date Authorization: SignatureValue
<?xml version="1.0" ?> <AccessControlPolicy> <Owner> <ID>00220120222</ID> <DisplayName>00220120222</DisplayName> </Owner> <AccessControlList> <Grant>public-read </Grant> </AccessControlList> </AccessControlPolicy>
AccessControlPolicy > AccessControlList > Grant
STS 临时访问凭证
对象存储 OSS > 开发指南 > 数据安全 > 使用 STS 临时访问凭证访问 OSS
对象存储 OSS > SDK 参考 > Python > 授权访问
这两个概念我也不知道是什么意思:STS,AssumeRole, 但我知道这是用来获取临时访问凭证的。
- 控制台授权操作
- 创建 RAM 用户
- 为 RAM 用户授予请求 AssumeRole 的权限
- 创建用于获取临时访问凭证的角色
- 为角色授予上传文件的权限
示例九:通过 RAM 或 STS 服务向其他用户授权
-
获取临时访问凭证
访问控制 > API 参考 > API 参考(STS) > 操作接口 > AssumeRolehttps://sts.aliyuncs.com/?Action=AssumeRole &RoleArn=acs:ram::123456789012****:role/adminrole &RoleSessionName=alice &DurationSeconds=3600 &<公共请求参数>
-
使用临时访问凭证上传文件至 OSS
签名 URL
对象存储 OSS > API 参考 > 访问控制 > 在 URL 中包含签名
可以使用签名 URL 来上传文件,也可以使用签名 URL 来下载文件。
用法很简单,不过有一个令人不安的问题,就是签名 URL 中包含 AccessKeyId,如果在分享的时候总是会担心会存在不安全因素。
http://BucketName.oss-cn-hangzhou.aliyuncs.com/ObjectName
?OSSAccessKeyId=AccessKeyId
&Expires=TimeStamp
&Signature=SignatureValue
要是阿里云可以提供一个短链接来屏蔽这些参数就好了。
不过好在我们可以对文件设置 ACL 权限,也没有关系啦。