除Bucket级别ACL以外,OSS还提供了Object级别的ACL。您可以在上传Object时设置相应的ACL,也可以在Object上传后的任意时间内根据自己的业务需求随时修改ACL。
读写权限类型
Object包含以下4种读写权限:
Object的访问权限优先级高于Bucket的访问权限。例如,Bucket的访问权限为私有,而Object的访问权限是公共读,则任何人(包括匿名用户)都可以对该Object进行读操作。
权限类型 | 描述 | 权限值 |
继承Bucket(默认权限) | 当Object未设置读写权限时,该Object遵循Bucket的读写权限,即Bucket是什么权限,Object就是什么权限。 | Aliyun::OSS::ACL::DEFAULT |
私有 | 只有Object的拥有者可以对该Object进行读写操作,其他人无法访问该Object。 | Aliyun::OSS::ACL::PRIVATE |
公共读 | 只有该Object的拥有者可以对该Object进行写操作,任何人(包括匿名访问者)都可以对该Object进行读操作。 警告 互联网上任何用户都可以对该Object进行访问,这有可能造成您数据的外泄以及费用激增,请谨慎操作。 | Aliyun::OSS::ACL::PUBLIC_READ |
公共读写 | 任何人(包括匿名访问者)都可以对该Object进行读写操作。 警告 互联网上任何用户都可以对该Object进行访问,并且向该Object写入数据。这有可能造成您数据的外泄以及费用激增,如果被人恶意写入违法信息还可能会侵害您的合法权益。除特殊场景外,不建议您配置公共读写权限。 | Aliyun::OSS::ACL::PUBLIC_READ_WRITE |
示例代码
以下代码用于设置和获取Object ACL。
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# 填写Bucket名称,例如examplebucket。
bucket = client.get_bucket('examplebucket')
# 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/example.txt。
# 获取上传Object时设置的Object ACL。
acl = bucket.get_object_acl('exampledir/example.txt')
puts acl
# 修改Object ACL。
bucket.set_object_acl('exampledir/example.txt', Aliyun::OSS::ACL::PUBLIC_READ)
acl = bucket.get_object_acl('exampledir/example.txt')
puts acl
相关文档
关于设置Object ACL的API接口说明,请参见PutObjectACL。
关于获取Object ACL的API接口说明,请参见GetObjectACL。