バケットでの IAM ポリシーの設定と管理 (original) (raw)

メイン コンテンツにスキップ

概要

このページでは、バケットに Identity and Access Management(IAM)ポリシーを設定して、バケット内のオブジェクトとマネージド フォルダへのアクセスを制御する方法について説明します。

他のアクセス制御方法については、次のリソースをご覧ください。

必要なロール

バケットの IAM ポリシーの設定と管理に必要な権限を取得するには、バケットに対するストレージ管理者(roles/storage.admin)IAM ロールを付与するよう管理者に依頼してください。

このロールには、バケットの IAM ポリシーを設定および管理するために必要な次の権限が含まれています。

カスタムロールを使用して、これらの権限を取得することもできます。

バケットレベルのポリシーにプリンシパルを追加する

Cloud Storage のロールの詳細については、IAM ロールをご覧ください。IAM ロールを付与するエンティティの詳細については、プリンシパル ID をご覧ください。

コンソール

  1. Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
    [バケット] に移動
  2. バケットのリストで、プリンシパルにロールを付与するバケットの名前をクリックします。
  3. ページ上部にある [権限] タブを選択します。
  4. [ アクセス権を付与] ボタンをクリックします。
    [_プリンシパルの追加_] ダイアログが表示されます。
  5. [新しいプリンシパル] フィールドに、バケットへのアクセスが必要な ID を 1 つ以上入力します。
  6. [ロールを選択] プルダウン メニューからロールを選択します。選択したロールと付与する権限の簡単な説明がパネルに表示されます。
  7. [保存] をクリックします。

失敗した 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

ここで

クライアント ライブラリ

REST API

JSON

  1. gcloud CLI のインストールと初期化を行います。これにより、Authorization ヘッダーのアクセス トークンを生成できます。
  2. 次の情報が含まれる JSON ファイルを作成します。
    {
    "bindings":[
    {
    "role": "IAM_ROLE",
    "members":[
    "PRINCIPAL_IDENTIFIER"
    ]
    }
    ]
    }
    ここで
    • IAM_ROLE は、付与する IAM ロールです。例: roles/storage.objectViewer
    • PRINCIPAL_IDENTIFIER には、バケットのアクセス権を付与するユーザーを指定します。たとえば、user:jeffersonloveshiking@gmail.com のようにします。プリンシパル ID の形式の一覧については、プリンシパル ID をご覧ください。
  3. 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 ポリシーを表示する

コンソール

  1. Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
    [バケット] に移動
  2. バケットのリストで、ポリシーを表示するバケットの名前をクリックします。
  3. [バケットの詳細] ページで、[権限] タブをクリックします。
    バケットに適用される IAM ポリシーが [権限] セクションに表示されます。
  4. 省略可: [フィルタ] バーを使用して、結果を絞り込みます。
    プリンシパルで検索すると、プリンシパルが付与されている各ロールが結果に表示されます。

コマンドライン

buckets get-iam-policy コマンドを実行します。

gcloud storage buckets get-iam-policy gs://BUCKET_NAME

ここで、BUCKET_NAME は、IAM ポリシーを表示するバケットの名前です。例: my-bucket

クライアント ライブラリ

REST API

JSON

  1. gcloud CLI のインストールと初期化を行います。これにより、Authorization ヘッダーのアクセス トークンを生成できます。
  2. 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

バケットレベル ポリシーからプリンシパルを削除する

コンソール

  1. Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
    [バケット] に移動
  2. バケットのリストで、プリンシパルのロールを削除するバケットの名前をクリックします。
  3. [バケットの詳細] ページで、[権限] タブをクリックします。
    バケットに適用される IAM ポリシーが [権限] セクションに表示されます。
  4. [プリンシパル別に表示] タブで、削除するプリンシパルのチェックボックスをオンにします。
  5. [- アクセス権の削除] ボタンをクリックします。
  6. 表示されたオーバーレイ ウィンドウで、[確認] をクリックします。

失敗した 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

ここで

クライアント ライブラリ

REST API

JSON

  1. gcloud CLI のインストールと初期化を行います。これにより、Authorization ヘッダーのアクセス トークンを生成できます。
  2. バケットに適用されている既存のポリシーを取得します。これを行うには、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
  3. 前の手順で取得したポリシーが含まれる JSON ファイルを作成します。
  4. JSON ファイルを編集し、ポリシーからプリンシパルを削除します。
  5. 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 をご覧ください。

条件を追加する前に、バケットに対する均一なバケットレベルのアクセスを有効にする必要があります。

バケットに新しい条件を設定する

コンソール

  1. Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
    [バケット] に移動
  2. バケットのリストで、新しい条件を追加するバケットの名前をクリックします。
  3. [バケットの詳細] ページで、[権限] タブをクリックします。
    バケットに適用される IAM ポリシーが [権限] セクションに表示されます。
  4. [+ アクセスを許可] をクリックします。
  5. [新しいプリンシパル] に、バケットへのアクセス権を付与するプリンシパルを入力します。
  6. 条件を適用するロールごとに:
    1. プリンシパルを付与するロールを選択します。
    2. [条件を追加] をクリックして [条件を編集] フォームを開きます。
    3. 条件の [タイトル] を入力します。[説明] フィールドの入力は任意です。
    4. [条件作成ツール] を使用して条件を視覚的に構築するか、[条件エディタ] タブを使用して CEL 式を入力します。
    5. [保存] をクリックして、[プリンシパルを追加] フォームに戻ります。複数のロールを追加するには、[別のロールを追加] をクリックします。
  7. [保存] をクリックします。

失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。

コマンドライン

  1. 条件の title、条件の属性ベースの論理 expression、条件の description(任意)など、条件の定義を含む JSON または YAML ファイルを作成します。
    Cloud Storage がサポートするのは、expression 内の日時リソースタイプ、およびリソース名という属性のみです。
  2. 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

ここで

あるいは、--condition-from-file フラグではなく、--condition フラグを使用して条件をコマンドに直接追加することもできます。

クライアント ライブラリ

REST API

JSON

  1. gcloud CLI のインストールと初期化を行います。これにより、Authorization ヘッダーのアクセス トークンを生成できます。
  2. 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.json
    BUCKET_NAME は、該当するバケットの名前です。例: my-bucket
  3. テキスト エディタで tmp-policy.json ファイルを編集して、IAM ポリシー内のバインディングに新しい条件を追加します。
    {
    "version": VERSION,
    "bindings": [
    {
    "role": "IAM_ROLE",
    "members": [
    "PRINCIPAL_IDENTIFIER"
    ],
    "condition": {
    "title": "TITLE",
    "description": "DESCRIPTION",
    "expression": "EXPRESSION"
    }
    }
    ],
    "etag": "ETAG"
    }
    ここで
    • VERSIONIAM ポリシー バージョンです。IAM Conditions を使用するバケットでは 3 にする必要があります。
    • IAM_ROLE は、条件が適用されるロールです。例: roles/storage.objectViewer
    • PRINCIPAL_IDENTIFIER には、条件が適用されるユーザーを指定します。例: user:jeffersonloveshiking@gmail.comプリンシパル ID の形式の一覧については、プリンシパル ID をご覧ください。
    • TITLE は、条件のタイトルです。例: expires in 2019
    • DESCRIPTION は、条件の省略可能な説明です。例: Permission revoked on New Year's
    • EXPRESSION は、属性ベースの論理式です。例: request.time < timestamp(\"2019-01-01T00:00:00Z\")他の式の例については、条件属性のリファレンスをご覧ください。Cloud Storage がサポートするのは、日時リソースタイプ、およびリソース名という属性のみであるので注意してください。
      ETAG は変更しないでください。
  4. 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

バケットから条件を削除する

コンソール

  1. Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
    [バケット] に移動
  2. バケットのリストで、条件を削除するバケットの名前をクリックします。
  3. [バケットの詳細] ページで、[権限] タブをクリックします。
    バケットに適用される IAM ポリシーが [権限] セクションに表示されます。
  4. 条件に関連付けられたプリンシパルの編集アイコン()をクリックします。
  5. 表示された [アクセス権を編集] オーバーレイで、削除する条件の名前をクリックします。
  6. 表示された [条件を編集] オーバーレイで、[削除] をクリックしてから、[確認] をクリックします。
  7. [保存] をクリックします。

失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。

コマンドライン

  1. buckets get-iam-policy コマンドを使用して、バケットの IAM ポリシーを一時 JSON ファイルに保存します。
    gcloud storage buckets get-iam-policy gs://BUCKET_NAME > tmp-policy.json
  2. テキスト エディタで tmp-policy.json ファイルを編集し、IAM ポリシーから条件を削除します。
  3. buckets set-iam-policy を使用して、変更した IAM ポリシーをバケットに設定します。
    gcloud storage buckets set-iam-policy gs://BUCKET_NAME tmp-policy.json

コードサンプル

REST API

JSON

  1. gcloud CLI のインストールと初期化を行います。これにより、Authorization ヘッダーのアクセス トークンを生成できます。
  2. 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.json
    BUCKET_NAME は、アクセス権を付与するバケットの名前です。例: my-bucket
  3. テキスト エディタで tmp-policy.json ファイルを編集し、IAM ポリシーから条件を削除します。
  4. 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)ロールを付与します。

次のステップ

特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。

最終更新日 2025-12-15 UTC。