このページでは、アクセス制御リスト(ACL)を使用してバケットとオブジェクトへのアクセスを制御する方法について説明します。ACL は、バケットとオブジェクトへのアクセス権を持つユーザーと各ユーザーのアクセスレベルを定義するために使用できるメカニズムです。
リソースへのアクセス制御に ACL を使用する必要があるかどうかについては、ACL の概要をご覧ください。
必要なロール
ACL の作成と管理に必要な権限を取得するには、ACL の作成と管理を行うオブジェクトが含まれているバケットに対するストレージ管理者(roles/storage.admin)IAM ロールを付与するよう管理者に依頼してください。
この事前定義ロールには、ACL の作成と管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
storage.buckets.getstorage.buckets.list- この権限は、 Google Cloud コンソールを使用してこのページのタスクを実行する場合にのみ必要です。
storage.buckets.setIamPolicystorage.buckets.updatestorage.objects.getstorage.objects.getIamPolicystorage.objects.setIamPolicystorage.objects.update
カスタムロールを使用して、これらの権限を取得することもできます。
バケットに対するロールの付与については、バケットでの IAM ポリシーの設定と管理をご覧ください。
ACL の設定または変更
コンソール
Google Cloud コンソールで Cloud Storage ブラウザに移動します。
Cloud Storage ブラウザに移動バケットのリストで、ACL を変更するオブジェクトが存在するバケットの名前をクリックします。
ACL を設定または変更するオブジェクトの名前をクリックします。
[アクセス権を編集] をクリックします。
権限ダイアログが開き、オブジェクトの現在の ACL が表示されます。
[+ エントリを追加] をクリックします。
アクセス権を付与するエンティティの種類を選択します。
[エンティティ] は、権限を付与する対象の種類(ユーザーやグループなど)を指定します。[エンティティ] に指定できる値の一覧については、アクセス制御のスコープをご覧ください。
[名前] に値を入力します。
[名前] は、特定のユーザー、グループ、その他のエンティティ タイプを識別します。[名前] に指定できる値の一覧については、アクセス制御のスコープをご覧ください。
[エンティティ] と [名前] の組み合わせにより、権限の適用対象が定義されます。
[アクセス権] の値を選択します。
[アクセス権] は、オブジェクトに設定する権限を定義します。[アクセス権] に指定できる値の一覧については、アクセス制御の権限をご覧ください。
[保存] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
オブジェクトに対する個別の権限付与を追加、変更、削除するには、目的のフラグを指定して objects update コマンドを使用します。
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME FLAG
ここで
BUCKET_NAMEは、変更が適用されるオブジェクトを含むバケットの名前です。例:example-travel-mapsOBJECT_NAMEは、変更が適用されるオブジェクトの名前です。例:paris.jpgFLAGは、次のいずれかです。--add-acl-grantと、追加または変更に必要な権限。例:--add-acl-grant=entity=user-jeffersonloveshiking@gmail.com,role=READER--remove-acl-grantと、アクセス権を削除するエンティティ。例:--remove-acl-grant=user-jeffersonloveshiking@gmail.com
オブジェクトのすべての ACL を置き換えるには:
JSON 形式または YAML 形式のファイルで ACL を定義します。
たとえば、次の ACL は、プロジェクト
867489160491のオーナーとユーザーjeffersonloveshiking@gmail.comにオブジェクトparis.jpgに対するOWNER権限を付与し、gs-announceグループのメンバーにparis.jpgに対するREADER権限を付与します。[ { "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" }, }, { "entity": "user-jeffersonloveshiking@gmail.com", "email": "jeffersonloveshiking@gmail.com", "role": "OWNER" }, { "entity": "group-gs-announce@googlegroups.com", "email": "gs-announce@googlegroups.com", "role": "READER" } ]objects updateコマンドを使用し、--acl-fileフラグを指定します。gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --acl-file=FILE_LOCATION
ここで
BUCKET_NAMEは、ACL が適用されるオブジェクトを含むバケットの名前です。例:example-travel-mapsOBJECT_NAMEは、ACL が適用されるオブジェクトの名前です。例:paris.jpgFILE_LOCATIONは、定義した ACL を含むファイルのローカルパスです。例:Desktop/acls.json
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、オブジェクトに ACL を追加する例です。
以下は、ACL をオブジェクトから削除する例です。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、オブジェクトに ACL を追加する例です。
以下は、ACL をオブジェクトから削除する例です。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、オブジェクトに ACL を追加する例です。
以下は、ACL をオブジェクトから削除する例です。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、オブジェクトに ACL を追加する例です。
以下は、ACL をオブジェクトから削除する例です。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、オブジェクトに ACL を追加する例です。
以下は、ACL をオブジェクトから削除する例です。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、オブジェクトに ACL を追加する例です。
以下は、ACL をオブジェクトから削除する例です。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、オブジェクトに ACL を追加する例です。
以下は、ACL をオブジェクトから削除する例です。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、オブジェクトに ACL を追加する例です。
以下は、ACL をオブジェクトから削除する例です。
REST API
JSON API
オブジェクトを作成するとき、リクエストの本文に acl[] プロパティを指定するか、insertリクエストに predefinedAcl クエリ パラメータを指定できます。既存のオブジェクトに対しては、patch リクエストまたはupdateリクエストに acl[] プロパティまたは predefinedAcl クエリ パラメータを指定します。
オブジェクトの ACL プロパティの定義については、ObjectAccessControls リソースをご覧ください。
ACL を JSON ファイル内に定義します。
たとえば、ACL がプロジェクト
867489160491のオーナーとユーザーjeffersonloveshiking@gmail.comにOWNER権限を付与し、gs-announceグループのメンバーにREADERを付与するとします。この場合、次のコンテンツを含むacls.jsonという名前のファイルを作成できます。{ "acl": [ { "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" } }, { "entity": "user-jeffersonloveshiking@gmail.com", "role": "OWNER", "email": "jeffersonloveshiking@gmail.com" }, { "entity": "group-gs-announce@googlegroups.com", "role": "READER", "email": "gs-announce@googlegroups.com" } ] }JSON ファイルを含む patch リクエストを送信し、ACL を設定するオブジェクトを指定します。
たとえば、次の curl コマンドは、ドキュメント acls.json の JSON ペイロードをバケット example-travel-maps 内の paris.jpg というオブジェクトに適用します。
curl -X PATCH --data @acls.json -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg
XML API
XML API では、ACL を XML 形式で扱います。バケットとオブジェクトの ACL を変更するには、XML ドキュメントをリクエストの本文に添付する必要があります。バケットとオブジェクトの ACL を取得すると、XML ドキュメントが返されます。XML ドキュメントには、バケットまたはオブジェクトの個々の ACL エントリが格納されています。
PUTBucket リクエストを使ってバケットを作成した後、?aclパラメータ付きでもう一度 PUT Bucket リクエストを使用し、バケットの ACL を変更します。PUTObject リクエストを使用してオブジェクトをアップロードした後、?aclパラメータまたはx-googl-aclリクエスト ヘッダー付きでもう一度 PUT リクエストを使用し、ACL を変更します。
たとえば、次の curl コマンドは、ドキュメント acls.xml の XML ペイロードをバケット example-travel-maps 内の paris.jpg というオブジェクトに適用します。
curl -X PUT --data-binary @acls.xml \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://storage.googleapis.com/example-travel-maps/paris.jpg?aclXML ドキュメントに次の ACL 構文を使用します。
| 要素 | 説明 |
|---|---|
AccessControlList |
Entries 要素と Owner 要素のコンテナ。 |
Owner |
DisplayName 要素と ID 要素のコンテナ。オブジェクトは、それをアップロードしたユーザーが常に所有するため、この要素はオブジェクトには不要です。この要素は、Amazon S3 ACL 構文を移行シナリオで使う場合に使用します。Amazon Simple Storage Service および Amazon S3 は、米国およびその他の国における Amazon.com, Inc. またはその関連会社の商標です。 |
ID |
バケット所有者の Cloud Storage ID。 |
DisplayName |
実装なし。この値は常に空の文字列です。 |
Entries |
ゼロ個以上の Entry 要素のコンテナ。 |
Entry |
Scope 要素と Permission 要素のコンテナ。Entry に含めるのは 1 つの Scope と 1 つの Permission 要素だけにする必要があります。 |
Scope |
ACL のスコープを定義する ID、EmailAddress、Domain 要素のコンテナ。この要素は次のいずれかの値を格納する type 属性を持っている必要があります。UserByID、UserByEmail、GroupByID、GroupByEmail、GroupByDomain、AllUsers、AllAuthenticatedUsers。 |
ID |
権限エントリが ID で指定される場合の利用者の ID。 |
EmailAddress |
権限エントリがメールで指定される場合の利用者のメール識別子。 |
Domain |
権限エントリがドメインで指定される場合の利用者のドメイン識別子。 |
Name |
指定できるオプション要素、またはスコープが UserByEmail または GroupByEmail の場合に自動的に追加できるオプション要素。 |
Permission |
付与される権限 READ、WRITE、FULL_CONTROL。 |
XML API を使って ACL の作業を行う場合には、以下の点に注意してください。
- 前述の XML 形式のみを使用できます。
重複するスコープは設定できません。
ACL XML には複数のエントリを指定できますが。スコープが重複するエントリを設定することはできません。たとえば、同じスコープ要素
jane@example.comを持つ 2 個のエントリを設定することはできません。
さまざまなバケット ACL エントリの例を以下に示します。
<?xml version="1.0" encoding="UTF-8"?>
<AccessControlList>
<Owner>
<ID>00b4903a9721...</ID>
</Owner>
<Entries>
<Entry>
<Scope type="GroupById">
<ID>00b4903a9722...</ID>
</Scope>
<Permission>FULL_CONTROL</Permission>
</Entry>
<Entry>
<Scope type="GroupByDomain">
<Domain>example.com</Domain>
</Scope>
<Permission>READ</Permission>
</Entry>
<Entry>
<Scope type="GroupByEmail">
<EmailAddress>gs-announce@googlegroups.com</EmailAddress>
</Scope>
<Permission>READ</Permission>
</Entry>
<Entry>
<Scope type="UserByEmail">
<EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress>
<Name>Jefferson</Name>
</Scope>
<Permission>FULL_CONTROL</Permission>
</Entry>
<Entry>
<Scope type="AllUsers"/>
<Permission>READ</Permission>
</Entry>
<Entry>
<Scope type="AllAuthenticatedUsers"/>
<Permission>READ</Permission>
</Entry>
</Entries>
</AccessControlList>
ACL XML で Name 要素を設定する
バケットまたはオブジェクトから ACL を取得すると、<Name> 要素が一部のエントリに追加されている場合があります。たとえば、エントリが次のようになっている場合があります:
<Entry>
<Scope type="UserByEmail">
<EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress>
<Name>Jefferson</Name>
</Scope>
<Permission>FULL_CONTROL</Permission>
</Entry>
オプションであるこれらの <Name> 要素は、次の 2 つの状況下で追加されます。
バケットまたはオブジェクトの ACL に要素として
<Name>が含まれている場合。ACL を設定するとき、ACL エントリに
<Name>要素を含めることができます。<Name>要素にはいずれの値も指定できます。指定した値は、ACL が削除または置換されるまで Cloud Storage に保存されます。この方法は、簡単に識別できない識別子を使用している場合に便利です。UserByEmailまたはGroupByEmailのスコープに Google 公開プロフィールが含まれている場合。これらのスコープのどちらかを使用していて、
<Name>要素を指定していない場合、Cloud Storage は、メールアドレスに関連付けられているユーザーまたはメールの Google グループに、公開名を含む Google 公開プロフィールが設定されているかどうかをチェックします。Google 公開プロフィールが設定されている場合は、Cloud Storage によりその公開名が<Name>要素に自動的に追加されます。
定義済み ACL を適用する
ACL 全体を設定する際は、前述のようにエントリを一度に 1 個ずつ指定することもできますが、定義済み ACL を使用することで、特定のシナリオ向けにカスタマイズされた複数のエントリを自動的に適用できます。定義済み ACL をバケットまたはオブジェクトに適用するには、Google Cloud CLI、JSON API、XML API のいずれかを使用します。
新しいオブジェクトの場合
定義済み ACL を、オブジェクトのアップロード時にオブジェクトに適用するには:
コンソール
Google Cloud コンソールでは、定義済み ACL を適用することはできません。代わりに gcloud storage を使用してください。
コマンドライン
gcloud storage cp コマンドを使用し、--predefined-acl フラグを指定します。
gcloud storage cp OBJECT gs://BUCKET_NAME --predefined-acl=PREDEFINED_ACL
たとえば、オブジェクト paris.jpg をバケット example-travel-maps にアップロードするときに定義済み ACL bucketOwnerRead を適用するには、次のようにします。
gcloud storage cp paris.jpg gs://example-travel-maps --predefined-acl=bucketOwnerRead
REST API
JSON API
事前定義された ACL を適用するには、insert リクエストに predefinedAcl クエリ文字列パラメータを使用します。
たとえば、オブジェクト paris.jpg をバケット example-travel-maps にアップロードするときに定義済み ACL bucketOwnerRead を適用するには、次のようにします。
curl -X POST --data-binary @paris.jpg -H "Content-Type: image/jpeg" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://storage.googleapis.com/upload/storage/v1/b/example-travel-maps/o?name=paris.jpg&predefinedAcl=bucketOwnerRead"
XML API
事前定義された ACL を適用するには、Put Object リクエストで x-goog-acl ヘッダーを使用します。
たとえば、オブジェクト paris.jpg をバケット example-travel-maps にアップロードするときに定義済み ACL bucket-owner-read を適用するには、次のようにします。
curl -X PUT --upload-file paris.jpg -H "x-goog-acl: bucket-owner-read" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://storage.googleapis.com/example-travel-maps/paris.jpg
既存のバケットまたはオブジェクトの場合
既存のバケットやオブジェクトに定義済み ACL を適用することもできます。これは、定義済み ACL を別のものに変更したい場合や、カスタム ACL を定義済み ACL に更新したい場合に便利です。
コンソール
Google Cloud コンソールでは、定義済み ACL を適用することはできません。代わりに gcloud storage を使用してください。
コマンドライン
objects update コマンドを使用し、--predefined-acl フラグを指定します。
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --predefined-acl=PREDEFINED_ACL_NAME
たとえば、定義済み ACL private をバケット example-travel-maps のオブジェクト paris.jpg に適用するには、次のようにします。
gcloud storage objects update gs://example-travel-maps/paris.jpg --predefined-acl=private
REST API
JSON API
事前定義された ACL を適用するには、patch リクエストに predefinedAcl クエリ文字列パラメータを使用し、空の acl プロパティを指定します。
たとえば、定義済み ACL private をバケット example-travel-maps のオブジェクト paris.jpg に適用するには、次のようにします。
curl -X PATCH --data '{"acl": []}' -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg?predefinedAcl=private
XML API
PUT Object リクエストで x-goog-acl ヘッダーを使用して acl クエリ文字列パラメータを指定します。ただし、発行するリクエストでは XML ドキュメントを指定しないでください。
たとえば、定義済み ACL private をバケット example-travel-maps のオブジェクト paris.jpg に適用するには、次のようにします。
curl -X PUT -H "Content-Length: 0" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-acl: private" \
https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
デフォルト オブジェクト ACL を設定する
新しいオブジェクトを作成するたびに ACL を設定しなくても済むように、バケットにデフォルト オブジェクト ACL を設定できます。その後は、そのバケットに追加される、ACL が明示的に指定されていないすべての新しいオブジェクトについて、デフォルトが適用されます。たとえば、あるユーザー グループのみが特定のバケット内のほとんどのオブジェクトへのアクセス権を所有するように指定するとします。デフォルト オブジェクト ACL を変更して、オブジェクトをバケットに追加できます。これらの追加されたオブジェクトには、指定したデフォルト オブジェクト ACL が自動的に適用されます。ただし、特定のオブジェクトに異なる ACL を指定することもできます。その場合はデフォルト ACL が適用されません。
バケットのデフォルト オブジェクト ACL を表示、変更するには:
コンソール
Google Cloud コンソールでは、デフォルト オブジェクト ACL を設定することはできません。代わりに gcloud storage を使用してください。
コマンドライン
buckets describeコマンドを--formatフラグとともに使用して、バケットのデフォルト オブジェクト ACL を取得します。gcloud storage buckets describe gs://BUCKET_NAME --format="default(default_acl)"
ここで、
BUCKET_NAMEは、デフォルトのオブジェクト ACL を表示するバケットの名前です。例:my-bucket目的のフラグを指定して
buckets updateコマンドを実行し、バケットのデフォルト オブジェクト ACL を変更します。gcloud storage buckets update gs://BUCKET_NAME FLAG
ここで
BUCKET_NAMEは、デフォルト オブジェクト ACL を変更するバケットの名前です。例:my-bucketFLAGは、次のいずれかです。--add-default-object-acl-grantと、バケットの全体的なデフォルト オブジェクト ACL に追加する権限。--default-object-acl-fileと、バケットの新しいデフォルト オブジェクト ACL を定義するローカル ファイルのパス。--predefined-default-object-aclと、バケットの既存のデフォルト オブジェクト ACL を置き換える事前定義オブジェクト ACL の名前。--remove-default-object-acl-grantとバケットのデフォルト オブジェクト ACL 全体から削除するエンティティ。
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、デフォルト オブジェクト ACL をバケットに追加する例です。
以下は、デフォルト オブジェクト ACL をバケットから削除する例です。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、バケットのデフォルト オブジェクト ACL を出力する例です。
以下は、デフォルト オブジェクト ACL をバケットに追加する例です。
以下は、デフォルト オブジェクト ACL をバケットから削除する例です。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、デフォルト オブジェクト ACL をバケットに追加する例です。
以下は、デフォルト オブジェクト ACL をバケットから削除する例です。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、デフォルト オブジェクト ACL をバケットに追加する例です。
以下は、デフォルト オブジェクト ACL をバケットから削除する例です。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、デフォルト オブジェクト ACL をバケットに追加する例です。
以下は、デフォルト オブジェクト ACL をバケットから削除する例です。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、デフォルト オブジェクト ACL をバケットに追加する例です。
以下は、デフォルト オブジェクト ACL をバケットから削除する例です。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、デフォルト オブジェクト ACL をバケットに追加する例です。
以下は、デフォルト オブジェクト ACL をバケットから削除する例です。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、デフォルト オブジェクト ACL をバケットに追加する例です。
以下は、デフォルト オブジェクト ACL をバケットから削除する例です。
REST API
JSON API
GET リクエストを使ってデフォルト オブジェクト ACL を取得します。例:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?projection=fullpatch リクエストを使用して、デフォルト オブジェクト ACL を置き換えます。たとえば、次のリクエストでは、バケット
example-travel-mapsのデフォルト オブジェクト ACL が、defacls.jsonで指定した ACL に置き換えられます。curl -X PATCH --data @defacls.json -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps以下に
defacls.jsonの例を示します。{ "defaultObjectAcl": [ { "email": "jeffersonloveshiking@gmail.com", "entity": "user-jeffersonloveshiking@gmail.com", "role": "READER" } ] }
XML API
GETリクエストを使用して、デフォルト オブジェクト ACL を取得します。リクエストのスコープはバケットと?defaultObjectAclパラメータです。次に例を示します。curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/BUCKET_NAME?defaultObjectAclバケットをスコープに設定して
PUTリクエストを使用します。?defaultObjectAclパラメータを使用して、acls.xmlに指定されている ACL に、デフォルト オブジェクト ACL を置き換えます。次に例を示します。curl -X PUT --data-binary @acls.xml -H "Authorization: Bearer $(gcloud auth print-access-token)" \ http://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl以下に
acls.xmlの例を示します。<AccessControlList> <Entries> <Entry> <Permission>FULL_CONTROL</Permission> <Scope type="UserByEmail"> <EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress> </Scope> </Entry> </Entries> </AccessControlList>
ACL の構文については、ACL の設定をご覧ください。定義済み ACL をデフォルト オブジェクト ACL として指定することもできます。
バケットのデフォルト オブジェクト ACL を定義済み ACL に設定するには:
コンソール
Google Cloud コンソールでは、デフォルト オブジェクト ACL を設定することはできません。代わりに gcloud storage を使用してください。
コマンドライン
buckets update コマンドを使用し、--predefined-default-object-acl フラグを指定します。
gcloud storage buckets update gs://BUCKET_NAME --predefined-default-object-acl=PREDEFINED_ACL
ここで
BUCKET_NAMEは、デフォルト オブジェクト ACL を変更するバケットの名前です。例:my-bucketPREDEFINED_ACLは、有効な定義済み ACL の名前です。例:projectPrivate
REST API
JSON API
PUT リクエストと predefinedAcl パラメータを使用します。
次に例を示します。
curl -X PUT -H "Content-Length: 0" -H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?predefinedAcl=private
XML API
バケットをスコープに設定して ?defaultObjectAcl パラメータと x-goog-acl ヘッダーを設定し、PUT リクエストを使用します。
次に例を示します。
curl -X PUT -H "x-goog-acl: project-private" -H "Content-Length: 0" -H "Authorization: Bearer $(gcloud auth print-access-token)" \
http://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
新しく作成したバケットのデフォルト オブジェクト ACL
次の例は、リクエストの一部として独自のデフォルト オブジェクト ACL を指定していない場合に、新しく作成したバケットに自動的に適用されるデフォルト オブジェクト ACL を示しています。バケットのデフォルト オブジェクト ACL が変更されたかどうかを確認するには、バケットの現在のデフォルト オブジェクト ACL を次の例と比較してください。
コンソール
Google Cloud コンソールでは、デフォルト オブジェクト ACL を操作できません。代わりに gcloud storage を使用してください。
コマンドライン
次の例で、プロジェクト ID は "123412341234" です。実際のプロジェクト ID は違ったものになります。
defaultObjectAcl:
– entity: project-owners-123412341234
etag: CAE=
kind: storage#objectAccessControl
projectTeam:
projectNumber: '123412341234'
team: owners
role: OWNER
– entity: project-editors-123412341234
etag: CAE=
kind: storage#objectAccessControl
projectTeam:
projectNumber: '123412341234'
team: editors
role: OWNER
– entity: project-viewers-123412341234
etag: CAE=
kind: storage#objectAccessControl
projectTeam:
projectNumber: '123412341234'
team: viewers
role: READER
REST API
JSON API
次の例で、プロジェクト ID は "123412341234" です。実際のプロジェクト ID は違ったものになります。
"defaultObjectAcl": [
{
"kind": "storage#objectAccessControl",
"entity": "project-owners-123412341234",
"role": "OWNER",
"projectTeam": {
"projectNumber": "123412341234",
"team": "owners"
}
},
{
"kind": "storage#objectAccessControl",
"entity": "project-editors-123412341234",
"role": "OWNER",
"projectTeam": {
"projectNumber": "123412341234",
"team": "editors"
}
},
{
"kind": "storage#objectAccessControl",
"entity": "project-viewers-123412341234",
"role": "READER",
"projectTeam": {
"projectNumber": "123412341234",
"team": "viewers"
}
}
]
XML API
次の例で、プロジェクトの役割 ID は「00b4903a97...」で始まっています。実際のプロジェクト ID は違ったものになります。
<?xml version='1.0' encoding='UTF-8'?>
<AccessControlList>
<Entries>
<Entry>
<Scope type='GroupById'>
<ID>00b4903a9721...</ID>
</Scope>
<Permission>FULL_CONTROL</Permission>
</Entry>
<Entry>
<Scope type='GroupById'>
<ID>00b4903a9722...</ID>
</Scope>
<Permission>FULL_CONTROL</Permission>
</Entry>
<Entry>
<Scope type='GroupById'>
<ID>00b4903a9723...</ID>
</Scope>
<Permission>READ</Permission>
</Entry>
</Entries>
</AccessControlList>
新たに作成したバケットのデフォルト オブジェクト ACL は定義済みの projectPrivate ACL と同等であるので注意してください。
ACL の取得
既存のリソースの ACL を取得するには:
コンソール
Google Cloud コンソールで Cloud Storage ブラウザに移動します。
Cloud Storage ブラウザに移動ACL を表示する対象のオブジェクトに移動します。
オブジェクトのプルダウン メニューから [アクセス権を編集] を選択します。
権限ダイアログにオブジェクトの権限が表示されます。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
オブジェクトの ACL を取得するには、
--formatフラグを指定してobjects describeコマンドを使用します。gcloud storage objects describe gs://BUCKET_NAME/OBJECT_NAME --format="default(acl)"
ここで
BUCKET_NAMEは、ACL を表示するオブジェクトが含まれるバケットの名前です。例:my-bucketOBJECT_NAMEは、ACL を表示するオブジェクトの名前です。例:paris.jpg
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、オブジェクトの ACL を取得する例です。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、オブジェクトの ACL を取得する例です。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、オブジェクトの ACL を取得する例です。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、オブジェクトの ACL を取得する例です。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、オブジェクトの ACL を取得する例です。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、オブジェクトの ACL を取得する例です。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、オブジェクトの ACL を取得する例です。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
以下は、オブジェクトの ACL を取得する例です。
REST API
JSON API
オブジェクトに対する
OWNER権限があることを確認します。GETリクエストを使用してオブジェクトの ACL を取得します。オブジェクトの ACL が JSON 形式で返され、レスポンスの本文に添付されます。
たとえば、バケット example-travel-maps 内のオブジェクト paris.jpg の ACL を返すには、次のように使用します。
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg?projection=full
次のようなレスポンスが表示されます。
{
"kind": "storage#object",
"id": "example-travel-maps/paris.jpg/1412805837131000",
"selfLink": "https://www.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg",
"name": "paris.jpg",
"bucket": "example-travel-maps",
...
"acl": [
{
...
"entity": "project-owners-867489160491",
"role": "OWNER",
"projectTeam": {
"projectNumber": "867489160491",
"team": "owners"
},
...
},
{
...
"entity": "user-jeffersonloveshiking@gmail.com",
"role": "OWNER",
"email": "jeffersonloveshiking@gmail.com",
...
},
{
...
"entity": "group-gs-announce@googlegroups.com",
"role": "READER",
"email": "gs-announce@googlegroups.com",
...
}
],
"owner": {
"entity": "user-jeffersonloveshiking@gmail.com"
},
...
}
objectAccessControls リソースの GET メソッドを使用してオブジェクトの ACL の個々のエントリを返すこともできます。
XML API
バケットまたはオブジェクトに対する
FULL_CONTROL権限を持っていることを確認します。GET Object リクエストで
aclクエリ文字列パラメータを使用して、バケットまたはオブジェクトの ACL を取得します。
ACL は XML で記述され、レスポンスの本文に添付されます。
たとえば、バケット example-travel-maps 内のオブジェクト paris.jpg の ACL を返すには、次のように使用します。
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
次のようなレスポンスが表示されます。
<?xml version="1.0" encoding="UTF-8"?>
<AccessControlList>
<Owner>
<ID>84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46</ID>
<Name>Owner Name</Name>
</Owner>
<Entries>
<Entry>
<Scope type="UserById">
<ID>84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46</ID>
<Name>Name</Name>
</Scope>
<Permission>FULL_CONTROL</Permission>
</Entry>
<Entry>
<Scope type="UserByEmail">
<EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress>
<Name>Jefferson</Name>
</Scope>
<Permission>FULL_CONTROL</Permission>
</Entry>
<Entry>
<Scope type="GroupByEmail">
<EmailAddress>gs-announce@googlegroups.com</EmailAddress>
</Scope>
<Permission>READ</Permission>
</Entry>
</Entries>
</AccessControlList>
また、ObjectAccessControls リソースの JSON GET メソッドを使用してオブジェクトの特定の ACL エントリを返すこともできます。
次のステップ
- ACL について学習する。
- 統一バケットレベルのアクセスを使用してアクセス制御を簡素化する方法を学習する。
- ACL 使用時のベスト プラクティスについて学習する。