全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 阿里云办公 培训与认证 物联网
对象存储 OSS

设置访问权限

更新时间:2017-06-13 10:52:36

设置访问权限(ACL)

OSS允许用户对Bucket和Object分别设置访问权限,方便用户控制自己的资源可以被如何访问。对于Bucket,有三种访问权限:

  • Public-read-write 允许匿名用户向该Bucket中创建/获取/删除Object。
  • Public-read 允许匿名用户获取该Bucket中的Object。
  • Private 不允许匿名访问,所有的访问都要经过签名。

创建Bucket时,默认是private权限。之后用户可以通过bucket.acl=来设置Bucket的权限。

  1. require 'aliyun/oss'
  2. client = Aliyun::OSS::Client.new(
  3. endpoint: 'endpoint',
  4. access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')
  5. bucket = client.get_bucket('my-bucket')
  6. puts bucket.acl

对于Object,有四种访问权限:

  • Default:继承所属的Bucket的访问权限,即与所属Bucket的权限值一样。
  • Public-read-write:允许匿名用户读写该Object。
  • Public-read 允许匿名用户读该Object。
  • Private 不允许匿名访问,所有的访问都要经过签名。

创建Object时,默认为default权限。之后用户可以通过bucket.set_object_acl来设置Object的权限。

  1. require 'aliyun/oss'
  2. client = Aliyun::OSS::Client.new(
  3. endpoint: 'endpoint',
  4. access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')
  5. bucket = client.get_bucket('my-bucket')
  6. acl = bucket.get_object_acl('my-object')
  7. puts acl # default
  8. bucket.set_object_acl('my-object', Aliyun::OSS::ACL::PUBLIC_READ)
  9. acl = bucket.get_object_acl('my-object')
  10. puts acl # public-read

需要注意的是:

  • 如果设置了Object的权限(非default),则访问该Object时进行权限认证时 会优先判断Object的权限,而Bucket的权限设置会被忽略。
  • 允许匿名访问时(设置了public-read或者public-read-write权限),用户可以直接通过浏览器访问,例如:

    1. http://bucket-name.oss-cn-hangzhou.aliyuncs.com/object.jpg
  • 访问具有public权限的Bucket/Object时,也可以通过创建匿名的Client来进行:

    1. require 'aliyun/oss'
    2. # 不填access_key_id和access_key_secret,将创建匿名Client,只能访问具有
    3. # public权限的Bucket/Object
    4. client = Aliyun::OSS::Client.new(endpoint: 'endpoint')
    5. bucket = client.get_bucket('my-bucket')
    6. bucket.get_object('my-object', :file => 'local_file')

    更多关于访问权限控制的内容请参考 访问控制

本文导读目录