ユーザーは、各種アカウントでロールを持ちます。たとえば、管理者ロールのユーザーは、アカウント内の全コンテナーやオブジェクトに対してあらゆるアクセスが可能です。コンテナーレベルでのアクセス制御リスト (ACL) の設定や読み取り、書き込みアクセスのサポートリストの設定が可能です。読み取りアクセスは X-Container-Read
で、書き込みアクセスは X-Container-Write
ヘッダーで設定されます。
ユーザーに読み取り権限を与えるには、パラメーターに -r
を指定して swift post コマンドを実行します。ユーザーに書き込み権限を与えるには -w
パラメーターを使用します。
以下は、コンテナーの read ACL の例です。
何らかの HTTP referer ヘッダーがある場合、コンテナーの内容の読み出しを許可します。
$ swift post CONTAINER -r ".r:*"
何らかの HTTP referer ヘッダーがある場合、コンテナーの内容の読み出しと一覧表示を許可します。
$ swift post CONTAINER -r ".r:*,.rlistings"
指定された HTTP referer ヘッダーがある場合、コンテナーの内容の読み出しを許可します。
$ swift post CONTAINER -r \
".r:openstack.example.com,.r:swift.example.com,.r:storage.example.com"
指定された HTTP referer ヘッダーがある場合、読み出しアクセスを拒否します。
$ swift post CONTAINER -r \
".r:*,.r:-openstack.example.com,.r:-swift.example.com,.r:-storage.example.com"
project1 のすべてのユーザーがこのコンテナーの内容の読み出しができます。
$ swift post CONTAINER -r "project1:*"
project1 の user1 はこのコンテナーの内容の読み出しができます。
$ swift post CONTAINER -r "project1:user1"
指定されたユーザーやプロジェクトがこのコンテナーの内容の読み出しができます。
$ swift post CONTAINER -r \
"project1:user1,project1:user2,project3:*,project4:user1"
以下は、コンテナーの write ACL の例です。
project1 のすべてのユーザーがこのコンテナーに書き込みができます。
$ swift post CONTAINER -w "project1:*"
project1 の user1 はこのコンテナーに書き込みができます。
$ swift post CONTAINER -w "project1:user1"
指定されたユーザーやプロジェクトがこのコンテナーに書き込みができます。
$ swift post CONTAINER -w \
"project1:user1,project1:user2,project3:*,project4:user1"
注釈
コンテナーの書き込みが成功するには、ユーザーは (書き込み権限に加え) そのコンテナーへの読み出し権限を持っている必要があります。上記のすべての読み出し/書き込み ACL の例において、プロジェクト名/ユーザー名の代わりにプロジェクト ID/ユーザー ID、つまり <project_uuid>:<user_uuid>
を使うことができます。複数の keystone ドメインを使用する場合には、 UUID 形式が必須となります。
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.