マネージド フォルダの IAM ポリシーを設定して管理する

このページでは、マネージド フォルダIdentity and Access Management(IAM)ポリシーを設定する方法について説明します。これにより、バケット内の特定のオブジェクト グループに対して、きめ細かいアクセス制御を行うことができます。

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

必要なロール

マネージド フォルダの IAM ポリシーを設定および管理するために必要な権限を取得するには、マネージド フォルダを含むバケットに対するストレージのストレージ フォルダ管理者(roles/storage.folderAdmin)IAM ロールを付与するよう管理者に依頼してください。

このロールには、マネージド フォルダの IAM ポリシーを設定および管理するために必要な次の権限が含まれています。

  • storage.managedfolders.getIamPolicy

  • storage.managedfolders.setIamPolicy

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

バケットのロールの付与については、バケットでの IAM ポリシーの設定と管理をご覧ください。

マネージド フォルダに IAM ポリシーを設定する

コンソール

  1. Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、IAM ポリシーを設定するマネージド フォルダを含むバケットの名前をクリックします。

  3. [バケットの詳細] ページの [フォルダ ブラウザ] ペインで、IAM ポリシーを設定するマネージド フォルダの横にあるその他のオプション アイコン をクリックします。

    アクセスを制御するフォルダがシミュレートされたフォルダの場合は、マネージド フォルダを作成するの手順に沿って、シミュレートされたフォルダをマネージド フォルダに変換します。

  4. [アクセス権を編集] をクリックします。

  5. [MANAGED_FOLDER_NAME の権限] タブで、[プリンシパルを追加] をクリックします。

  6. [新しいプリンシパル] フィールドに、アクセス権を付与するプリンシパルを入力します。追加できるプリンシパルの詳細については、プリンシパル ID をご覧ください。

  7. [ロールの割り当て] セクションで、[ロールを選択] プルダウンを使用して、プリンシパルに付与するアクセスレベルを指定します。

  8. [保存] をクリックします。

コマンドライン

  1. 次の情報が含まれる JSON ファイルを作成します。

    {
      "bindings":[
        {
          "role": "IAM_ROLE",
          "members":[
            "PRINCIPAL_IDENTIFIER"
          ]
        }
      ]
    }

    ここで

    • IAM_ROLE は、付与する IAM ロールです。例: roles/storage.objectViewer

    • PRINCIPAL_IDENTIFIER は、マネージド フォルダへのアクセスを許可するユーザーを指定します。例: user:jane@gmail.comプリンシパル ID の形式の一覧については、プリンシパル ID をご覧ください。

  2. gcloud storage managed-folders set-iam-policy コマンドを実行します。

    gcloud storage managed-folders set-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME POLICY_FILE

    ここで

    • BUCKET_NAME は、IAM ポリシーを適用するマネージド フォルダを含むバケットの名前です。例: my-bucket

    • MANAGED_FOLDER_NAME は、IAM ポリシーを適用するマネージド フォルダの名前です。例: my-managed-folder/

    • POLICY_FILE は、ステップ 1 で作成した JSON ファイルのパスです。

REST API

JSON

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、Authorization ヘッダーに含めることもできます。

  2. 次の情報が含まれる JSON ファイルを作成します。

    {
      "bindings":[
        {
          "role": "IAM_ROLE",
          "members":[
            "PRINCIPAL_IDENTIFIER"
          ]
        }
      ]
    }

    ここで

    • IAM_ROLE は、付与する IAM ロールです。例: roles/storage.objectViewer

    • PRINCIPAL_IDENTIFIER は、マネージド フォルダへのアクセスを許可するユーザーを指定します。例: user:jane@gmail.comプリンシパル ID の形式の一覧については、プリンシパル ID をご覧ください。

  3. cURL を使用して、PUT setIamPolicy リクエストで JSON API を呼び出します。

    curl -X PUT --data-binary @POLICY_FILE \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"

    ここで

    • POLICY_FILE は、前の手順で作成した JSON ポリシー ファイルのパスです。

    • BUCKET_NAME は、IAM ポリシーを適用するマネージド フォルダを含むバケットの名前です。例: my-bucket

    • MANAGED_FOLDER_NAME は、プリンシパルにアクセス権を付与するマネージド フォルダの名前です。例: my-managed-folder/

マネージド フォルダの IAM ポリシーを表示する

コンソール

  1. Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、IAM ポリシーを表示するマネージド フォルダを含むバケットの名前をクリックします。

  3. [バケットの詳細] ページの [フォルダ ブラウザ] ペインで、IAM ポリシーを表示するマネージド フォルダの横にあるその他のオプション アイコン をクリックします。

  4. [アクセス権を編集] をクリックします。

[FOLDER_NAME の権限] ペインに、プリンシパル、ロール、継承されたロール、IAM 条件など、マネージド フォルダの権限が表示されます。

コマンドライン

gcloud storage managed-folder get-iam-policy コマンドを実行します。

gcloud storage managed-folders get-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME

ここで

  • BUCKET_NAME は、IAM ポリシーを表示するマネージド フォルダを含むバケットの名前です。例: my-bucket

  • MANAGED_FOLDER_NAME は、IAM ポリシーを表示するマネージド フォルダの名前です。例: my-managed-folder/

REST API

JSON

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、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/managedFolders/MANAGED_FOLDER_NAME/iam"

    ここで

    • BUCKET_NAME は、IAM ポリシーを表示するマネージド フォルダを含むバケットの名前です。例: my-bucket

    • MANAGED_FOLDER_NAME は、IAM ポリシーを表示するマネージド フォルダの名前です。例: my-managed-folder/

マネージド フォルダ ポリシーからプリンシパルを削除する

コンソール

  1. Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、IAM ポリシーを表示するマネージド フォルダを含むバケットの名前をクリックします。

  3. [バケットの詳細] ページの [フォルダ ブラウザ] ペインで、プリンシパルを削除するマネージド フォルダの横にあるその他のオプション アイコン をクリックします。

  4. [アクセス権を編集] をクリックします。

  5. [FOLDER_NAME の権限] ペインで、[フィルタ] フィールドにプリンシパルの名前を入力します。

  6. 削除アイコン をクリックしてプリンシパルを削除します。

Cloud Storage がマネージド フォルダからプリンシパルを削除します。

コマンドライン

gcloud storage managed-folder remove-iam-policy-binding コマンドを実行します。

gcloud storage managed-folders remove-iam-policy-binding  gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE

ここで

  • BUCKET_NAME は、アクセス権を取り消すマネージド フォルダを含むバケットの名前です。例: my-bucket

  • MANAGED_FOLDER_NAME は、IAM ポリシーを削除するマネージド フォルダの名前です。例: my-managed-folder/

  • PRINCIPAL_IDENTIFIER には、アクセス権を取り消すユーザーを指定します。たとえば、user:jane@gmail.com のようにします。プリンシパル ID の形式の一覧については、プリンシパル ID をご覧ください。

  • IAM_ROLE は、取り消す IAM ロールです。例: roles/storage.objectViewer

REST API

JSON

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、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/managedFolders/MANAGED_FOLDER_NAME/iam"

    ここで

    • BUCKET_NAME は、アクセス権を取り消すマネージド フォルダを含むバケットの名前です。例: my-bucket

    • MANAGED_FOLDER_NAME は、IAM ポリシーを削除するマネージド フォルダの名前です。例: my-managed-folder/

  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/managedFolders/MANAGED_FOLDER_NAME/iam"

    ここで

    • JSON_FILE_NAME は、手順 3 で作成したファイルのパスです。

    • BUCKET_NAME は、アクセス権を取り消すマネージド フォルダを含むバケットの名前です。例: my-bucket

    • MANAGED_FOLDER_NAME は、IAM ポリシーを削除するマネージド フォルダの名前です。例: my-managed-folder/

マネージド フォルダで IAM Conditions を使用する

以降のセクションでは、マネージド フォルダで IAM Conditions を追加および削除する方法について説明します。マネージド フォルダの IAM Conditions を表示するには、マネージド フォルダの IAM ポリシーの表示をご覧ください。Cloud Storage での IAM Conditions の使用について詳しくは、Conditions をご覧ください。

マネージド フォルダに条件を追加する前に、バケットに対して均一なバケットレベルのアクセスを有効にする必要があります。

マネージド フォルダに新しい条件を設定する

コマンドライン

  1. 条件の title、条件の属性ベースの論理 expression、条件の description(任意)など、条件の定義を含む JSON または YAML ファイルを作成します。

    Cloud Storage がサポートするのは、expression 内の日時リソースタイプ、およびリソース名という属性のみです。

  2. --condition-from-file フラグを指定して gcloud storage managed-folders add-iam-policy-binding コマンドを使用します。

gcloud storage managed-folders add-iam-policy-binding  gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE --condition-from-file=CONDITION_FILE

ここで

  • BUCKET_NAME は、プリンシパルにアクセス権を付与するマネージド フォルダを含むバケットの名前です。例: my-bucket

  • MANAGED_FOLDER_NAME は、プリンシパルにアクセス権を付与するマネージド フォルダの名前です。例: my-managed-folder/

  • PRINCIPAL_IDENTIFIER には、条件が適用されるユーザーを指定します。たとえば、user:jane@gmail.com のようにします。プリンシパル ID の形式の一覧については、プリンシパル ID をご覧ください。

  • IAM_ROLE は、プリンシパルに付与する IAM ロールです。例: roles/storage.objectViewer

  • CONDITION_FILE は前の手順で作成したファイルです。

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

REST API

JSON

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、Authorization ヘッダーに含めることもできます。

  2. GET getIamPolicy リクエストを使用して、マネージド フォルダの IAM ポリシーを一時 JSON ファイルに保存します。

    curl \
    'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam' \
    --header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.json

    ここで

    • BUCKET_NAME は、IAM 条件を設定するマネージド フォルダを含むバケットの名前です。

    • MANAGED_FOLDER_NAME は、IAM Conditions を設定するマネージド フォルダの名前です。

  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:jane@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/managedFoldersMANAGED_FOLDER_NAME/iam"

    ここで

    • BUCKET_NAME は、IAM 条件を設定するマネージド フォルダを含むバケットの名前です。

    • MANAGED_FOLDER_NAME は、IAM Conditions を設定するマネージド フォルダの名前です。

マネージド フォルダから条件を削除する

コマンドライン

  1. gcloud storage managed-folders get-iam-policy コマンドを使用して、マネージド フォルダの IAM ポリシーを一時 JSON ファイルに保存します。

    gcloud storage managed-folders get-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME > tmp-policy.json
  2. テキスト エディタで tmp-policy.json ファイルを編集し、IAM ポリシーから条件を削除します。

  3. gcloud storage managed-folders set-iam-policy コマンドを使用して、変更した IAM ポリシーを管理フォルダに設定します。

    gcloud storage managed-folders set-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME tmp-policy.json

REST API

JSON

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、Authorization ヘッダーに含めることもできます。

  2. GET getIamPolicy リクエストを使用して、マネージド フォルダの IAM ポリシーを一時 JSON ファイルに保存します。

    curl \
    'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam' \
    --header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.json

    ここで

    • BUCKET_NAME は、アクセス権を変更するマネージド フォルダを含むバケットの名前です。例: my-bucket

    • MANAGED_FOLDER_NAME は、アクセス権を変更するマネージド フォルダの名前です。例: my-managed-folder/

  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/managedFolders/MANAGED_FOLDER_NAMEiam"

    ここで

    • BUCKET_NAME は、アクセス権を変更するマネージド フォルダを含むバケットの名前です。例: my-bucket

    • MANAGED_FOLDER_NAME は、アクセス権を変更するマネージド フォルダの名前です。例: my-managed-folder/

プロジェクトで IAM を使用する

プロジェクト レベル以上での IAM ロールの付与と取り消しに関するガイドについては、プロジェクト、マネージド フォルダ、組織へのアクセスの管理をご覧ください。

ベスト プラクティス

プリンシパルに必要なアクセス権を付与する、最小権限のロールを設定する必要があります。たとえば、チームのメンバーがバケット内のマネージド フォルダの表示のみを行う必要がある場合は、ストレージ フォルダ管理者(roles/storage.folderAdmin)ロールではなく、Storage オブジェクト管理者(roles/storage.objectAdmin)ロールを付与します。同様に、チームのメンバーがバケット内のマネージド フォルダに対してすべての操作を行う必要がある場合は、ストレージ管理者(roles/storage.admin)ロールではなく、ストレージ フォルダ管理者(roles/storage.folderAdmin)ロールを付与します。

次のステップ