除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。