閱讀591 返回首頁    go 敦煌網


設置訪問權限__Ruby-SDK_SDK 參考_對象存儲 OSS-阿裏雲

OSS允許用戶對Bucket和Object分別設置訪問權限,方便用戶控製自己的資源可 以被如何訪問。對於Bucket,有三種訪問權限:

  • public-read-write 允許匿名用戶向該Bucket中創建/獲取/刪除Object
  • public-read 允許匿名用戶獲取該Bucket中的Object
  • private 不允許匿名訪問,所有的訪問都要經過簽名

創建Bucket時,默認是private權限。之後用戶可以通過bucket.acl=來設置 Bucket的權限。

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  endpoint: 'endpoint',
  access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')

bucket = client.get_bucket('my-bucket')
puts bucket.acl

對於Object,有四種訪問權限:

  • default 繼承所屬的Bucket的訪問權限,即與所屬Bucket的權限值一樣
  • public-read-write 允許匿名用戶讀寫該Object
  • public-read 允許匿名用戶讀該Object
  • private 不允許匿名訪問,所有的訪問都要經過簽名

創建Object時,默認為default權限。之後用戶可以通過 bucket.set_object_acl來設置Object的權限。

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  endpoint: 'endpoint',
  access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')

bucket = client.get_bucket('my-bucket')

acl = bucket.get_object_acl('my-object')
puts acl # default
bucket.set_object_acl('my-object', Aliyun::OSS::ACL::PUBLIC_READ)
acl = bucket.get_object_acl('my-object')
puts acl # public-read

需要注意的是:

  1. 如果設置了Object的權限(非default),則訪問該Object時進行權限認證時 會優先判斷Object的權限,而Bucket的權限設置會被忽略。
  2. 允許匿名訪問時(設置了public-read或者public-read-write權限),用戶 可以直接通過瀏覽器訪問,例如:

     https://bucket-name.oss-cn-hangzhou.aliyuncs.com/object.jpg
    
  3. 訪問具有public權限的Bucket/Object時,也可以通過創建匿名的Client來進行:

require 'aliyun/oss'

# 不填access_key_id和access_key_secret,將創建匿名Client,隻能訪問具有
# public權限的Bucket/Object
client = Aliyun::OSS::Client.new(endpoint: 'endpoint')
bucket = client.get_bucket('my-bucket')

bucket.get_object('my-object', :file => 'local_file')

更多關於訪問權限控製的內容請參考 訪問控製

最後更新:2016-11-23 17:16:08

  上一篇:go Rails應用__Ruby-SDK_SDK 參考_對象存儲 OSS-阿裏雲
  下一篇:go 設置跨域資源共享__Ruby-SDK_SDK 參考_對象存儲 OSS-阿裏雲