バケットでの IAM ポリシーの設定と管理 (original) (raw)
Discover
使ってみる
バケットを作成する
バケットにアクセスして管理する
オブジェクトのアップロードとダウンロード
オブジェクトにアクセスして管理する
保存されているデータの分析情報を取得する
オブジェクトをキャッシュに保存する
データ ライフサイクルを管理する
リクエストを行う
データを保護する
アクセス制御
データと使用状況をモニタリングする
保護、バックアップ、復元
削除(復元可能)
Cloud Storage FUSE でバケットをマウントする
パフォーマンス
プロダクト、クラウド、プラットフォームをまたいだ作業
トラブルシューティング
このページでは、バケットに Identity and Access Management(IAM)ポリシーを設定して、バケット内のオブジェクトとマネージド フォルダへのアクセスを制御する方法について説明します。
他のアクセス制御方法については、次のリソースをご覧ください。
- オブジェクトのグループをきめ細かく制御する方法については、マネージド フォルダに IAM ポリシーを設定して管理するをご覧ください。
- バケット内の個々のオブジェクトへのアクセスを制御する別の方法については、アクセス制御リストをご覧ください。
- Cloud Storage リソースへのアクセスの制御について詳しくは、アクセス制御の概要をご覧ください。
必要なロール
バケットの IAM ポリシーの設定と管理に必要な権限を取得するには、バケットに対するストレージ管理者(roles/storage.admin)IAM ロールを付与するよう管理者に依頼してください。
このロールには、バケットの IAM ポリシーを設定および管理するために必要な次の権限が含まれています。
storage.buckets.getstorage.buckets.getIamPolicystorage.buckets.setIamPolicystorage.buckets.updatestorage.buckets.list- この権限は、Google Cloud コンソールを使用してこのページのタスクを実施する場合にのみ必要です。
カスタムロールを使用して、これらの権限を取得することもできます。
バケットレベルのポリシーにプリンシパルを追加する
Cloud Storage のロールの詳細については、IAM ロールをご覧ください。IAM ロールを付与するエンティティの詳細については、プリンシパル ID をご覧ください。
コンソール
- Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
[バケット] に移動 - バケットのリストで、プリンシパルにロールを付与するバケットの名前をクリックします。
- ページ上部にある [権限] タブを選択します。
- [ アクセス権を付与] ボタンをクリックします。
[_プリンシパルの追加_] ダイアログが表示されます。 - [新しいプリンシパル] フィールドに、バケットへのアクセスが必要な ID を 1 つ以上入力します。
- [ロールを選択] プルダウン メニューからロールを選択します。選択したロールと付与する権限の簡単な説明がパネルに表示されます。
- [保存] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
buckets add-iam-policy-binding コマンドを使用します。
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE
ここで
BUCKET_NAMEは、プリンシパルのアクセス権を付与するバケットの名前です。例:my-bucketPRINCIPAL_IDENTIFIERには、バケットのアクセス権を付与するユーザーを指定します。例:user:jeffersonloveshiking@gmail.comプリンシパル ID の形式の一覧については、プリンシパル ID をご覧ください。IAM_ROLEは、プリンシパルに付与する IAM ロールです。例:roles/storage.objectViewer
クライアント ライブラリ
REST API
JSON
- gcloud CLI のインストールと初期化を行います。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。 - 次の情報が含まれる JSON ファイルを作成します。
{
"bindings":[
{
"role": "IAM_ROLE",
"members":[
"PRINCIPAL_IDENTIFIER"
]
}
]
}
ここで - cURL を使用して、PUT setIamPolicy リクエストで JSON API を呼び出します。
curl -X PUT --data-binary @JSON_FILE_NAME \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
ここでJSON_FILE_NAMEは、手順 2 で作成したファイルのパスです。BUCKET_NAMEは、プリンシパルのアクセス権を付与するバケットの名前です。例:my-bucket
バケットの IAM ポリシーを表示する
コンソール
- Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
[バケット] に移動 - バケットのリストで、ポリシーを表示するバケットの名前をクリックします。
- [バケットの詳細] ページで、[権限] タブをクリックします。
バケットに適用される IAM ポリシーが [権限] セクションに表示されます。 - 省略可: [フィルタ] バーを使用して、結果を絞り込みます。
プリンシパルで検索すると、プリンシパルが付与されている各ロールが結果に表示されます。
コマンドライン
buckets get-iam-policy コマンドを実行します。
gcloud storage buckets get-iam-policy gs://BUCKET_NAME
ここで、BUCKET_NAME は、IAM ポリシーを表示するバケットの名前です。例: my-bucket
クライアント ライブラリ
REST API
JSON
- gcloud CLI のインストールと初期化を行います。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。 - cURL を使用して、GET getIamPolicy リクエストで JSON API を呼び出します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
ここで、BUCKET_NAMEは、IAM ポリシーを表示するバケットの名前です。例:my-bucket
バケットレベル ポリシーからプリンシパルを削除する
コンソール
- Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
[バケット] に移動 - バケットのリストで、プリンシパルのロールを削除するバケットの名前をクリックします。
- [バケットの詳細] ページで、[権限] タブをクリックします。
バケットに適用される IAM ポリシーが [権限] セクションに表示されます。 - [プリンシパル別に表示] タブで、削除するプリンシパルのチェックボックスをオンにします。
- [- アクセス権の削除] ボタンをクリックします。
- 表示されたオーバーレイ ウィンドウで、[確認] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
buckets remove-iam-policy-binding コマンドを使用します。
gcloud storage buckets remove-iam-policy-binding gs://BUCKET_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE
ここで
BUCKET_NAMEは、アクセス権を取り消すバケットの名前です。例:my-bucketPRINCIPAL_IDENTIFIERには、アクセス権を取り消すユーザーを指定します。例:user:jeffersonloveshiking@gmail.comプリンシパル ID の形式の一覧については、プリンシパル ID をご覧ください。IAM_ROLEは、取り消す IAM ロールです。例:roles/storage.objectViewer
クライアント ライブラリ
REST API
JSON
- gcloud CLI のインストールと初期化を行います。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。 - バケットに適用されている既存のポリシーを取得します。これを行うには、cURL を使用して、GET getIamPolicy リクエストで JSON API を呼び出します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
ここで、BUCKET_NAMEは、IAM ポリシーを表示するバケットの名前です。例:my-bucket - 前の手順で取得したポリシーが含まれる JSON ファイルを作成します。
- JSON ファイルを編集し、ポリシーからプリンシパルを削除します。
- cURL を使用して、PUT setIamPolicy リクエストで JSON API を呼び出します。
curl -X PUT --data-binary @JSON_FILE_NAME \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
ここでJSON_FILE_NAMEは、手順 3 で作成したファイルのパスです。BUCKET_NAMEは、アクセス権を削除するバケットの名前です。例:my-bucket
バケットで IAM Conditions を使用する
以降のセクションでは、バケットで IAM Conditions を追加、削除する方法を説明します。バケットの IAM Conditions を表示するには、バケットに適用される IAM ポリシーを表示するをご覧ください。Cloud Storage での IAM Conditions の使用について詳しくは、Conditions をご覧ください。
条件を追加する前に、バケットに対する均一なバケットレベルのアクセスを有効にする必要があります。
バケットに新しい条件を設定する
コンソール
- Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
[バケット] に移動 - バケットのリストで、新しい条件を追加するバケットの名前をクリックします。
- [バケットの詳細] ページで、[権限] タブをクリックします。
バケットに適用される IAM ポリシーが [権限] セクションに表示されます。 - [+ アクセスを許可] をクリックします。
- [新しいプリンシパル] に、バケットへのアクセス権を付与するプリンシパルを入力します。
- 条件を適用するロールごとに:
- プリンシパルを付与するロールを選択します。
- [条件を追加] をクリックして [条件を編集] フォームを開きます。
- 条件の [タイトル] を入力します。[説明] フィールドの入力は任意です。
- [条件作成ツール] を使用して条件を視覚的に構築するか、[条件エディタ] タブを使用して CEL 式を入力します。
- [保存] をクリックして、[プリンシパルを追加] フォームに戻ります。複数のロールを追加するには、[別のロールを追加] をクリックします。
- [保存] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
- 条件の
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_IDENTIFIER --role=IAM_ROLE --condition-from-file=CONDITION_FILE
ここで
BUCKET_NAMEは、プリンシパルのアクセス権を付与するバケットの名前です。例:my-bucketPRINCIPAL_IDENTIFIERには、条件が適用されるユーザーを指定します。たとえば、user:jeffersonloveshiking@gmail.comのようにします。プリンシパル ID の形式の一覧については、プリンシパル ID をご覧ください。IAM_ROLEは、プリンシパルに付与する IAM ロールです。例:roles/storage.objectViewerCONDITION_FILEは前の手順で作成したファイルです。
あるいは、--condition-from-file フラグではなく、--condition フラグを使用して条件をコマンドに直接追加することもできます。
クライアント ライブラリ
REST API
JSON
- gcloud CLI のインストールと初期化を行います。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。 - GET getIamPolicy リクエストを使用して、バケットの IAM ポリシーを一時 JSON ファイルに保存します。
curl \
'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam' \
--header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.jsonBUCKET_NAMEは、該当するバケットの名前です。例:my-bucket - テキスト エディタで
tmp-policy.jsonファイルを編集して、IAM ポリシー内のバインディングに新しい条件を追加します。
{
"version": VERSION,
"bindings": [
{
"role": "IAM_ROLE",
"members": [
"PRINCIPAL_IDENTIFIER"
],
"condition": {
"title": "TITLE",
"description": "DESCRIPTION",
"expression": "EXPRESSION"
}
}
],
"etag": "ETAG"
}
ここでVERSIONは IAM ポリシー バージョンです。IAM Conditions を使用するバケットでは 3 にする必要があります。IAM_ROLEは、条件が適用されるロールです。例:roles/storage.objectViewerPRINCIPAL_IDENTIFIERには、条件が適用されるユーザーを指定します。例:user:jeffersonloveshiking@gmail.comプリンシパル ID の形式の一覧については、プリンシパル ID をご覧ください。TITLEは、条件のタイトルです。例:expires in 2019。DESCRIPTIONは、条件の省略可能な説明です。例:Permission revoked on New Year'sEXPRESSIONは、属性ベースの論理式です。例: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 $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"BUCKET_NAMEは、該当するバケットの名前です。例:my-bucket
バケットから条件を削除する
コンソール
- Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
[バケット] に移動 - バケットのリストで、条件を削除するバケットの名前をクリックします。
- [バケットの詳細] ページで、[権限] タブをクリックします。
バケットに適用される IAM ポリシーが [権限] セクションに表示されます。 - 条件に関連付けられたプリンシパルの編集アイコン()をクリックします。
- 表示された [アクセス権を編集] オーバーレイで、削除する条件の名前をクリックします。
- 表示された [条件を編集] オーバーレイで、[削除] をクリックしてから、[確認] をクリックします。
- [保存] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
- 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
コードサンプル
REST API
JSON
- gcloud CLI のインストールと初期化を行います。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。 - GET getIamPolicy リクエストを使用して、バケットの IAM ポリシーを一時 JSON ファイルに保存します。
curl \
'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam' \
--header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.jsonBUCKET_NAMEは、アクセス権を付与するバケットの名前です。例:my-bucket - テキスト エディタで
tmp-policy.jsonファイルを編集し、IAM ポリシーから条件を削除します。 - PUT setIamPolicy リクエストを使用して、変更した IAM ポリシーをバケットに設定します。
curl -X PUT --data-binary @tmp-policy.json \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
ここで、BUCKET_NAMEは、IAM ポリシーを変更するバケットの名前です。例:my-bucket
ベスト プラクティス
プリンシパルに必要なアクセス権を付与するために必要な最小限のロールを設定します。たとえば、チームのメンバーがバケットに保存されているオブジェクトの読み取りだけを行う場合には、Storage オブジェクト管理者(roles/storage.objectAdmin)ロールではなく、Storage オブジェクト閲覧者(roles/storage.objectViewer)ロールを付与します。同様に、チームのメンバーがバケット内のオブジェクトに対してあらゆる操作を行えるようにする必要がある場合(ただし、バケット自体の操作は行わない場合)には、ストレージ管理者(roles/storage.admin)ロールではなく、Storage オブジェクト管理者(roles/storage.objectAdmin)ロールを付与します。
次のステップ
- データを公開して共有する方法を学習する。
- 共有と共同作業の例を確認する。
- IAM 使用時のベスト プラクティスについて学習する。
- バケットにロールの推奨事項を使用する方法を学習する。
- IAM のロールと権限に関連する失敗したオペレーションのトラブルシューティングを行う。トラブルシューティングをご覧ください。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-12-15 UTC。