このページでは、Identity and Access Management(IAM)権限を使用して、バケットとオブジェクトのアクセス制御を行う方法について説明します。IAM を使用すると、バケットとオブジェクトにアクセスできるユーザーを制御できます。
バケットとオブジェクトへのアクセスを制御するその他の方法については、アクセス制御の概要をご覧ください。バケット内のオブジェクトのアクセスを個別に制御する方法については、アクセス制御リストをご覧ください。
バケットで IAM を使用する
以下のセクションでは、バケットで基本的な IAM タスクを行う方法について説明します。
バケットレベルのポリシーにプリンシパルを追加する
Cloud Storage のロールの詳細については、IAM ロールをご覧ください。IAM ロールを付与するエンティティの詳細については、プリンシパルのタイプをご覧ください。
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
バケットのリストで、プリンシパルにロールを付与するバケットの名前をクリックします。
ページ上部にある [権限] タブを選択します。
[+ アクセスを許可] ボタンをクリックします。
[プリンシパルを追加] ダイアログ ボックスが表示されます。
[新しいプリンシパル] フィールドに、バケットへのアクセスが必要な ID を 1 つ以上入力します。
[ロールを選択] プルダウン メニューからロールを選択します。選択したロールと付与する権限の簡単な説明がパネルに表示されます。
[保存] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
gcloud
buckets add-iam-policy-binding
コマンドを使用します。
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=PRINCIPAL_TYPE:PRINCIPAL_NAME --role=IAM_ROLE
ここで
BUCKET_NAME
は、プリンシパルのアクセス権を付与するバケットの名前です。例:my-bucket
PRINCIPAL_TYPE
は、バケットのアクセス権を付与するプリンシパルのタイプです。例:user
PRINCIPAL_NAME
は、バケットのアクセス権を付与するプリンシパルの名前です。例:jane@gmail.com
IAM_ROLE
は、プリンシパルに付与する IAM ロールです。例:objectViewer
gsutil
gsutil iam ch
コマンドを使用します。
gsutil iam ch PRINCIPAL_TYPE:PRINCIPAL_NAME:IAM_ROLE gs://BUCKET_NAME
ここで
PRINCIPAL_TYPE
は、バケットのアクセス権を付与するプリンシパルのタイプです。例:user
PRINCIPAL_NAME
は、バケットのアクセス権を付与するプリンシパルの名前です。例:jane@gmail.com
IAM_ROLE
は、プリンシパルに付与する IAM ロールです。例:objectViewer
BUCKET_NAME
は、プリンシパルのアクセス権を付与するバケットの名前です。例:my-bucket
PRINCIPAL_TYPE:PRINCIPAL_NAME:IAM_ROLE
のフォーマットに関するその他の例については、gsutil iam ch
リファレンス ページをご覧ください。
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
JSON
- OAuth 2.0 Playground から認証アクセス トークンを取得します。固有の OAuth 認証情報を使用するように Playground を構成します。手順については、API 認証をご覧ください。
次の情報が含まれる JSON ファイルを作成します。
{ "bindings":[ { "role": "IAM_ROLE", "members":[ "PRINCIPAL_NAME" ] } ] }
ここで
cURL
を使用して、PUT setIamPolicy
リクエストで JSON API を呼び出します。curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
ここで
JSON_FILE_NAME
は、手順 2 で作成したファイルのパスです。OAUTH2_TOKEN
は、手順 1 で生成したアクセス トークンです。BUCKET_NAME
は、プリンシパルのアクセス権を付与するバケットの名前です。例:my-bucket
バケットの IAM ポリシーを表示する
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
ポリシーを表示するバケットに関連付けられた [バケット オーバーフロー] メニュー(
)をクリックします。
[アクセス権を編集] を選択します。
必要なロールを開いて、そのロールを持つプリンシパルを表示します。
(省略可)検索バーを使用して、ロールまたはプリンシパルで結果をフィルタリングします。
プリンシパルで検索すると、プリンシパルが付与されている各ロールが結果に表示されます。
コマンドライン
gcloud
buckets get-iam-policy
コマンドを使用します。
gcloud storage buckets get-iam-policy gs://BUCKET_NAME
ここで、BUCKET_NAME
は、IAM ポリシーを表示するバケットの名前です。例: my-bucket
gsutil
gsutil iam get
コマンドを使用します。
gsutil iam get gs://BUCKET_NAME
ここで、BUCKET_NAME
は、IAM ポリシーを表示するバケットの名前です。例: my-bucket
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
JSON
- OAuth 2.0 Playground から認証アクセス トークンを取得します。固有の OAuth 認証情報を使用するように Playground を構成します。手順については、API 認証をご覧ください。
cURL
を使用して、GET getIamPolicy
リクエストで JSON API を呼び出します。curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
ここで
OAUTH2_TOKEN
は、手順 1 で生成したアクセス トークンです。BUCKET_NAME
は、IAM ポリシーを表示するバケットの名前です。例:my-bucket
バケットレベル ポリシーからプリンシパルを削除する
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
プリンシパルのロールを削除するバケットと関連がある [バケット オーバーフロー] メニュー(
)をクリックします。
[アクセス権を編集] を選択します。
削除するプリンシパルが含まれているロールを開きます。
ゴミ箱アイコンをクリックします。
上に重なったウィンドウで [削除] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
gcloud
buckets remove-iam-policy-binding
コマンドを使用します。
gcloud storage buckets remove-iam-policy-binding gs://BUCKET_NAME --member=PRINCIPAL_TYPE:PRINCIPAL_NAME --role=IAM_ROLE
ここで
BUCKET_NAME
は、アクセス権を取り消すバケットの名前です。例:my-bucket
PRINCIPAL_TYPE
は、アクセス権を取り消すプリンシパルのタイプです。例:user
PRINCIPAL_NAME
は、アクセス権を取り消すプリンシパルの名前です。例:jane@gmail.com
IAM_ROLE
は、取り消す IAM ロールです。例:objectViewer
gsutil
gsutil iam ch
コマンドを使用して、-d
フラグを指定します。
gsutil iam ch -d PRINCIPAL_TYPE:PRINCIPAL_NAME gs://BUCKET_NAME
ここで
PRINCIPAL_TYPE
は、ポリシーから削除するプリンシパルのタイプです。例:user
PRINCIPAL_NAME
は、ポリシーから削除するプリンシパルの名前です。例:jane@gmail.com
BUCKET_NAME
は、アクセス権を削除するバケットの名前です。例:my-bucket
PRINCIPAL_TYPE:PRINCIPAL_NAME
のフォーマットに関するその他の例については、gsutil iam ch
リファレンス ページをご覧ください。
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
JSON
- OAuth 2.0 Playground から認証アクセス トークンを取得します。固有の OAuth 認証情報を使用するように Playground を構成します。手順については、API 認証をご覧ください。
バケットに適用されている既存のポリシーを取得します。これを行うには、
cURL
を使用して、GET getIamPolicy
リクエストで JSON API を呼び出します。curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
ここで
OAUTH2_TOKEN
は、手順 1 で生成したアクセス トークンです。BUCKET_NAME
は、IAM ポリシーを表示するバケットの名前です。例:my-bucket
前の手順で取得したポリシーが含まれる JSON ファイルを作成します。
JSON ファイルを編集し、ポリシーからプリンシパルを削除します。
cURL
を使用して、PUT setIamPolicy
リクエストで JSON API を呼び出します。curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
ここで
JSON_FILE_NAME
は、手順 3 で作成したファイルのパスです。OAUTH2_TOKEN
は、手順 1 で生成したアクセス トークンです。BUCKET_NAME
は、アクセス権を削除するバケットの名前です。例:my-bucket
バケットで IAM Conditions を使用する
以降のセクションでは、バケットで IAM Conditions を追加、削除する方法を説明します。バケットの IAM Conditions を表示するには、バケットに適用される IAM ポリシーを表示するをご覧ください。Cloud Storage での IAM Conditions の使用について詳しくは、Conditions をご覧ください。
条件を追加する前に、バケットに対する均一なバケットレベルのアクセスを有効にする必要があります。
バケットに新しい条件を設定する
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
バケットに関連付けられた行の右端にある [その他の操作] メニュー(
)をクリックします。
[アクセス権を編集] を選択します。
[プリンシパルを追加] をクリックします。
[新しいプリンシパル] に、バケットへのアクセス権を付与するプリンシパルを入力します。
条件を適用するロールごとに:
プリンシパルを付与するロールを選択します。
[条件を追加] をクリックして [条件を編集] フォームを開きます。
条件の [タイトル] を入力します。[説明] 欄の入力は任意です。
[条件ビルダー] を使用して条件を視覚的に構築するか、[条件エディタ] タブを使用して CEL 式を入力します。
[保存] をクリックして、[プリンシパルを追加] フォームに戻ります。複数のロールを追加するには、[別のロールを追加] をクリックします。
[保存] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
gcloud
条件の
title
(条件の属性ベースのロジックexpression
や、必要に応じて条件のdescription
)を含む条件を定義する JSON または YAML ファイルを作成します。Cloud Storage がサポートするのは、
expression
内の日時、リソースタイプ、およびリソース名という属性のみであることに注意してください。buckets add-iam-policy-binding
コマンドを使用し、--condition-from-file
フラグを指定します。
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=PRINCIPAL_TYPE:PRINCIPAL_NAME --role=IAM_ROLE --condition-from-file=CONDITION_FILE
ここで
BUCKET_NAME
は、プリンシパルのアクセス権を付与するバケットの名前です。例:my-bucket
PRINCIPAL_TYPE
は、バケットのアクセス権を付与するプリンシパルのタイプです。例:user
PRINCIPAL_NAME
は、バケットのアクセス権を付与するプリンシパルの名前です。例:jane@gmail.com
IAM_ROLE
は、プリンシパルに付与する IAM ロールです。例:objectViewer
CONDITION_FILE
は前の手順で作成したファイルです。
あるいは、--condition-from-file
フラグではなく、--condition
フラグを使用して条件をコマンドに直接追加することもできます。
gsutil
gsutil iam
コマンドを使用して、バケットの IAM ポリシーを一時 JSON ファイルに保存します。gsutil iam get gs://BUCKET_NAME > tmp-policy.json
ここで、
BUCKET_NAME
は、IAM ポリシーを取得するバケットの名前です。例:my-bucket
テキスト エディタで
tmp-policy.json
ファイルを編集して、IAM ポリシー内のバインディングに新しい条件を追加します。{ "version": VERSION, "bindings": [ { "role": "IAM_ROLE", "members": [ "PRINCIPAL_NAME" ], "condition": { "title": "TITLE", "description": "DESCRIPTION", "expression": "EXPRESSION" } } ], "etag": "ETAG" }
ここで
VERSION
は IAM ポリシー バージョンです。IAM Conditions を使用するバケットでは 3 にする必要があります。IAM ROLE
は、条件が適用されるロールです。例:roles/storage.objectViewer
PRINCIPAL_NAME
は、条件が適用されるプリンシパルです。例:jane@gmail.com
TITLE
は、条件のタイトルです。例:expires in 2019
DESCRIPTION
は、条件の省略可能な説明です。例:Permission revoked on New Year's
EXPRESSION
は、属性ベースの論理式です。例:request.time < timestamp(\"2019-01-01T00:00:00Z\")
。他の式の例については、条件属性のリファレンスをご覧ください。Cloud Storage がサポートするのは、日時、リソースタイプ、およびリソース名という属性のみであるので注意してください。
ETAG
は変更しないでください。gsutil iam
を使用して、変更した IAM ポリシーをバケットに設定します。gsutil iam set tmp-policy.json gs://BUCKET_NAME
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
JSON
- OAuth 2.0 Playground から認証アクセス トークンを取得します。固有の OAuth 認証情報を使用するように Playground を構成します。手順については、API 認証をご覧ください。
GET getIamPolicy
リクエストを使用して、バケットの IAM ポリシーを一時 JSON ファイルに保存します。curl \ 'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam' \ --header 'Authorization: Bearer OAUTH2_TOKEN' > tmp-policy.json
ここで
OAUTH2_TOKEN
は、手順 1 で生成したアクセス トークンです。
テキスト エディタで
tmp-policy.json
ファイルを編集して、IAM ポリシー内のバインディングに新しい条件を追加します。{ "version": VERSION, "bindings": [ { "role": "IAM_ROLE", "members": [ "PRINCIPAL_NAME" ], "condition": { "title": "TITLE", "description": "DESCRIPTION", "expression": "EXPRESSION" } } ], "etag": "ETAG" }
ここで
VERSION
は IAM ポリシー バージョンです。IAM Conditions を使用するバケットでは 3 にする必要があります。IAM_ROLE
は、条件が適用されるロールです。例:roles/storage.objectViewer
PRINCIPAL_NAME
は、条件が適用されるプリンシパルです。例:user:jane@gmail.com
TITLE
は、条件のタイトルです。例:expires in 2019
。DESCRIPTION
は、条件の省略可能な説明です。例:Permission revoked on New Year's
EXPRESSION
は、属性ベースの論理式です。例:request.time < timestamp(\"2019-01-01T00:00:00Z\")
他の式の例については、条件属性のリファレンスをご覧ください。Cloud Storage がサポートするのは、日時、リソースタイプ、およびリソース名という属性のみであるので注意してください。ETAG
は変更しないでください。
PUT setIamPolicy
リクエストを使用して、変更した IAM ポリシーをバケットに設定します。curl -X PUT --data-binary @tmp-policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
ここで
OAUTH2_TOKEN
は、手順 1 で生成したアクセス トークンです。
バケットから条件を削除する
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
バケットに関連付けられた行の右端にある [その他の操作] メニュー(
)をクリックします。
[アクセス権を編集] を選択します。
削除する条件を含むロールを開きます。
条件に関連付けられたプリンシパルの [編集] メニュー(
)をクリックします。
表示された [アクセス権を編集] オーバーレイで、削除する条件の名前をクリックします。
表示された [条件を編集] オーバーレイで、[削除] をクリックしてから、[確認] をクリックします。
[保存] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
gcloud
buckets get-iam-policy
コマンドを使用して、バケットの IAM ポリシーを一時 JSON ファイルに保存します。gcloud storage buckets get-iam-policy gs://BUCKET_NAME > tmp-policy.json
テキスト エディタで
tmp-policy.json
ファイルを編集し、IAM ポリシーから条件を削除します。buckets set-iam-policy
を使用して、変更した IAM ポリシーをバケットに設定します。gcloud storage buckets set-iam-policy gs://BUCKET_NAME tmp-policy.json
gsutil
gsutil iam
コマンドを使用して、バケットの IAM ポリシーを一時 JSON ファイルに保存します。gsutil iam get gs://BUCKET_NAME > tmp-policy.json
テキスト エディタで
tmp-policy.json
ファイルを編集し、IAM ポリシーから条件を削除します。gsutil iam
を使用して、変更した IAM ポリシーをバケットに設定します。gsutil iam set tmp-policy.json gs://BUCKET_NAME
コードサンプル
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
JSON
- OAuth 2.0 Playground から認証アクセス トークンを取得します。固有の OAuth 認証情報を使用するように Playground を構成します。手順については、API 認証をご覧ください。
GET getIamPolicy
リクエストを使用して、バケットの IAM ポリシーを一時 JSON ファイルに保存します。curl \ 'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam' \ --header 'Authorization: Bearer OAUTH2_TOKEN' > tmp-policy.json
ここで
BUCKET_NAME
は、アクセス権を付与するバケットの名前です。例:my-bucket
OAUTH2_TOKEN
は、手順 1 で生成したアクセス トークンです。
テキスト エディタで
tmp-policy.json
ファイルを編集し、IAM ポリシーから条件を削除します。PUT setIamPolicy
リクエストを使用して、変更した IAM ポリシーをバケットに設定します。curl -X PUT --data-binary @tmp-policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
ここで
OAUTH2_TOKEN
は、手順 1 で生成したアクセス トークンです。BUCKET_NAME
は、IAM ポリシーを変更するバケットの名前です。例:my-bucket
プロジェクトで IAM を使用する
プロジェクト レベル以上での IAM ロールの付与と取り消しに関するガイドについては、プロジェクト、フォルダ、組織へのアクセスの管理をご覧ください。
次のステップ
- データを公開して共有する方法を学習する。
- 共有と共同作業の例を確認する。
- データへのアクセスを制御するオプションについて学習する。
- IAM 使用時のベスト プラクティスについて学習する。
- バケットにロールの推奨事項を使用する方法を学習する。