阿里雲團隊努力不懈,力求將最新的技術內容更快地以您最熟悉的語言呈現。本文由簡體中文內容自動轉碼而成,過程無人工干預。阿里雲不保證此自動轉碼的準確性、完整性及時效性。因轉碼造成的任何內容錯誤及因此可能帶來的損失,阿里雲概不負責,敬請見諒。本文内容請以簡體中文版本為準。
全部產品
Search
文件中心

設定存取權限

更新時間: Oct 30, 2018

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')

    更多關於存取權限控制的內容請參考 存取控制