このページでは、マネージド フォルダに Identity and Access Management(IAM)ポリシーを設定する方法について説明します。これにより、バケット内の特定のオブジェクト グループに対して、きめ細かいアクセス制御を行うことができます。
他のアクセス制御方法については、次のリソースをご覧ください。
バケット全体とバケット内のオブジェクトへのアクセスを制御する方法については、バケットの IAM ポリシーの設定と管理をご覧ください。
バケット内の個々のオブジェクトへのアクセスを制御する方法については、アクセス制御リストをご覧ください。
Cloud Storage リソースへのアクセスの制御について詳しくは、アクセス制御の概要をご覧ください。
必要なロール
マネージド フォルダの IAM ポリシーを設定および管理するために必要な権限を取得するには、マネージド フォルダを含むバケットに対するストレージのストレージ フォルダ管理者(roles/storage.folderAdmin
)IAM ロールを付与するよう管理者に依頼してください。
このロールには、マネージド フォルダの IAM ポリシーを設定および管理するために必要な次の権限が含まれています。
storage.managedfolders.getIamPolicy
storage.managedfolders.setIamPolicy
カスタムロールを使用して、これらの権限を取得することもできます。
バケットのロールの付与については、バケットでの IAM ポリシーの設定と管理をご覧ください。
マネージド フォルダに IAM ポリシーを設定する
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
バケットのリストで、IAM ポリシーを設定するマネージド フォルダを含むバケットの名前をクリックします。
[バケットの詳細] ページの [フォルダ ブラウザ] ペインで、IAM ポリシーを設定するマネージド フォルダの横にあるその他のオプション アイコン
をクリックします。アクセスを制御するフォルダがシミュレートされたフォルダの場合は、マネージド フォルダを作成するの手順に沿って、シミュレートされたフォルダをマネージド フォルダに変換します。
[アクセス権を編集] をクリックします。
[
MANAGED_FOLDER_NAME
の権限] タブで、[プリンシパルを追加] をクリックします。[新しいプリンシパル] フィールドに、アクセス権を付与するプリンシパルを入力します。追加できるプリンシパルの詳細については、プリンシパル ID をご覧ください。
[ロールの割り当て] セクションで、[ロールを選択] プルダウンを使用して、プリンシパルに付与するアクセスレベルを指定します。
[保存] をクリックします。
コマンドライン
次の情報が含まれる JSON ファイルを作成します。
{ "bindings":[ { "role": "IAM_ROLE", "members":[ "PRINCIPAL_IDENTIFIER" ] } ] }
ここで
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
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。次の情報が含まれる JSON ファイルを作成します。
{ "bindings":[ { "role": "IAM_ROLE", "members":[ "PRINCIPAL_IDENTIFIER" ] } ] }
ここで
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 ポリシーを表示する
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
バケットのリストで、IAM ポリシーを表示するマネージド フォルダを含むバケットの名前をクリックします。
[バケットの詳細] ページの [フォルダ ブラウザ] ペインで、IAM ポリシーを表示するマネージド フォルダの横にあるその他のオプション アイコン
をクリックします。[アクセス権を編集] をクリックします。
[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
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
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/managedFolders/MANAGED_FOLDER_NAME/iam"
ここで
BUCKET_NAME
は、IAM ポリシーを表示するマネージド フォルダを含むバケットの名前です。例:my-bucket
MANAGED_FOLDER_NAME
は、IAM ポリシーを表示するマネージド フォルダの名前です。例:my-managed-folder/
マネージド フォルダ ポリシーからプリンシパルを削除する
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
バケットのリストで、IAM ポリシーを表示するマネージド フォルダを含むバケットの名前をクリックします。
[バケットの詳細] ページの [フォルダ ブラウザ] ペインで、プリンシパルを削除するマネージド フォルダの横にあるその他のオプション アイコン
をクリックします。[アクセス権を編集] をクリックします。
[
FOLDER_NAME
の権限] ペインで、[フィルタ] フィールドにプリンシパルの名前を入力します。削除アイコン
をクリックしてプリンシパルを削除します。
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
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
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/managedFolders/MANAGED_FOLDER_NAME/iam"
ここで
BUCKET_NAME
は、アクセス権を取り消すマネージド フォルダを含むバケットの名前です。例:my-bucket
MANAGED_FOLDER_NAME
は、IAM ポリシーを削除するマネージド フォルダの名前です。例:my-managed-folder/
前の手順で取得したポリシーが含まれる 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/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 をご覧ください。
マネージド フォルダに条件を追加する前に、バケットに対して均一なバケットレベルのアクセスを有効にする必要があります。
マネージド フォルダに新しい条件を設定する
コマンドライン
条件の
title
、条件の属性ベースの論理expression
、条件のdescription
(任意)など、条件の定義を含む JSON または YAML ファイルを作成します。Cloud Storage がサポートするのは、
expression
内の日時、リソースタイプ、およびリソース名という属性のみです。--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
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。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 を設定するマネージド フォルダの名前です。
テキスト エディタで
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.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
は変更しないでください。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 を設定するマネージド フォルダの名前です。
マネージド フォルダから条件を削除する
コマンドライン
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
テキスト エディタで
tmp-policy.json
ファイルを編集し、IAM ポリシーから条件を削除します。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
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。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/
テキスト エディタで
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/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
)ロールを付与します。
次のステップ
データを公開して共有する方法を学習する。
共有と共同作業の例を確認する。
IAM 使用時のベスト プラクティスについて学習する。
IAM のロールと権限に関連する失敗したオペレーションのトラブルシューティングを行う。トラブルシューティングをご覧ください。