Object Storage Service (OSS) は、バケットレベルのアクセス制御リスト (ACL) に加えて、オブジェクトレベルの ACL も提供します。オブジェクトのアップロード時に ACL を設定したり、アップロード後に ACL を変更したりできます。
オブジェクトの ACL
オブジェクトには、4 つの読み書き権限があります。
オブジェクトの ACL は、そのオブジェクトが格納されているバケットの ACL よりも優先されます。たとえば、非公開バケット内のオブジェクトの ACL が公開読み取りに設定されている場合、匿名ユーザーを含むすべてのユーザーがそのオブジェクトを読み取ることができます。
権限タイプ | 説明 | 権限の値 |
バケットから継承 | オブジェクトの ACL を設定しない場合、オブジェクトの ACL は、そのオブジェクトが格納されているバケットの ACL と同じになります。 | Aliyun::OSS::ACL::DEFAULT |
非公開 | オブジェクト所有者のみがオブジェクトの読み書き操作を実行できます。他のユーザーはオブジェクトにアクセスできません。 | Aliyun::OSS::ACL::PRIVATE |
公開読み取り | オブジェクト所有者のみがオブジェクトへの書き込み操作を実行できます。匿名ユーザーを含む他のユーザーは、オブジェクトの読み取りのみ可能です。 警告 これにより、バケット内のデータへの不正アクセスや高額な料金が発生する可能性があります。オブジェクトの ACL を公開読み取りに設定する場合は、注意が必要です。 | Aliyun::OSS::ACL::PUBLIC_READ |
公開読み書き | 匿名ユーザーを含むすべてのユーザーが、オブジェクトの読み書き操作を実行できます。 警告 オブジェクトの ACL をこの値に設定すると、すべてのユーザーがインターネット経由でオブジェクトにアクセスし、データを書き込むことが可能になります。これにより、バケット内のデータへの不正アクセスや高額な料金が発生する可能性があります。ユーザーが禁止されているデータや情報をバケットにアップロードした場合、お客様の正当な利益や権利が侵害される恐れがあります。したがって、必要な場合を除き、バケットの ACL を公開読み書きに設定しないことを推奨します。 | Aliyun::OSS::ACL::PUBLIC_READ_WRITE |
例
次のコードは、オブジェクトの ACL を設定および取得する方法の例を示しています。
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# 中国 (杭州) リージョンを例として使用します。エンドポイントをご利用のリージョンのものに置き換えてください。
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']
)
# バケット名を指定します。例:examplebucket。
bucket = client.get_bucket('examplebucket')
# オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めることはできません。例:exampledir/example.txt。
# アップロード時に設定されたオブジェクトの ACL を取得します。
acl = bucket.get_object_acl('exampledir/example.txt')
puts acl
# オブジェクトの ACL を変更します。
bucket.set_object_acl('exampledir/example.txt', Aliyun::OSS::ACL::PUBLIC_READ)
acl = bucket.get_object_acl('exampledir/example.txt')
puts acl 関連ドキュメント
オブジェクトの ACL を設定するために呼び出すことができる API 操作の詳細については、「PutObjectACL」をご参照ください。
オブジェクトの ACL をクエリするために呼び出すことができる API 操作の詳細については、「GetObjectACL」をご参照ください。