このページでは、BigQuery データセットの IAM ロールの推奨事項を表示、理解、適用する方法について説明します。ロールの推奨事項により、プリンシパルが実際に必要な権限のみを持つようにすることで、最小権限の原則を徹底できます。
始める前に
Enable the IAM and Recommender APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.Security Command Center のプレミアム ティアまたはエンタープライズ ティアが組織レベルまたはプロジェクト レベルで有効になっていることを確認します。詳しくは、お支払いについてをご覧ください。
ロールに関する推奨事項について理解する。
認証を設定する。
Select the tab for how you plan to use the samples on this page:
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
必要な IAM のロール
データセット レベルのロールの推奨事項を管理するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
プロジェクトに対するロール閲覧者 (
roles/iam.roleViewer) -
プロジェクトに対する IAM Recommender 管理者 (
roles/recommender.iamAdmin) -
データセットに対する BigQuery データオーナー (
roles/bigquery.dataOwner)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、データセット レベルのロールの推奨事項を管理するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
データセット レベルのロールの推奨事項を管理するには、次の権限が必要です。
-
推奨事項を表示するには:
-
プロジェクトに対する
iam.roles.get - プロジェクトに対する
iam.roles.list - プロジェクトに対する
recommender.iamPolicyRecommendations.get - プロジェクトに対する
recommender.iamPolicyRecommendations.list - プロジェクトに対する
recommender.iamPolicyInsights.get -
プロジェクトに対する
recommender.iamPolicyInsights.list -
データセットに対する
bigquery.datasets.getIamPolicy
-
プロジェクトに対する
-
推奨事項を適用、拒否するには:
-
プロジェクトに対する
recommender.iamPolicyRecommendations.update -
データセットに対する
bigquery.datasets.setIamPolicy
-
プロジェクトに対する
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
推奨事項の確認と適用
データセット レベルのロールの推奨事項を確認して適用するには、Google Cloud CLI と Recommender API を使用します。
gcloud
推奨事項を確認する:
データセット レベルの推奨事項を一覧表示するには、
gcloud recommender recommendations listコマンドを実行し、BigQuery データセットの推奨事項のみをフィルタします。gcloud recommender recommendations list \ --location=LOCATION \ --recommender=google.iam.policy.Recommender \ --project=PROJECT_ID \ --format=json \ --filter="recommenderSubtype:REMOVE_ROLE_BIGQUERY_DATASET OR recommenderSubtype:REPLACE_ROLE_BIGQUERY_DATASET"次の値を置き換えます。
LOCATION: Cloud Storage データセットが配置されているリージョン(例:usやus-central1)。PROJECT_ID: BigQuery データセットを含む Google Cloud プロジェクトの ID。プロジェクト ID は英数字からなる文字列です(例:my-project)。
レスポンスは次の例のようになります。この例では、プロジェクト
my-projectに対する編集者のロール(projectEditor:my-project)を持つすべてのユーザーが、データセットdataset-1で BigQuery データ編集者のロール(roles/bigquery.dataEditor)を持ちます。ただし、このロールは過去 90 日間使用されていません。そのため、ロールの推奨事項により、次のロールは取り消しが提案されます。[ { "associatedInsights": [ { "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/984eccca-0241-472f-baab-2557dd0d7282" } ], "content": { "operationGroups": [ { "operations": [ { "action": "remove", "path": "/iamPolicy/bindings/*/members/*", "pathFilters": { "/iamPolicy/bindings/*/condition/expression": "", "/iamPolicy/bindings/*/members/*": "projectEditor:my-project", "/iamPolicy/bindings/*/role": "roles/bigquery.dataEditor" }, "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1", "resourceType": "bigquery.googleapis.com/Dataset" } ] } ], "overview": { "addedRoles": [], "member": "projectEditor:my-project", "minimumObservationPeriodInDays": "0", "removedRole": "roles/bigquery.dataEditor", "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" } }, "description": "This role has not been used during the observation window.", "etag": "\"3b123bc08d028128\"", "lastRefreshTime": "2024-02-04T08:00:00Z", "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/0e9831fe-6810-476b-b14d-2b64bda17288", "primaryImpact": { "category": "SECURITY", "securityProjection": { "details": { "revokedIamPermissionsCount": 37 } } }, "priority": "P4", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "ACTIVE" }, "targetResources": [ "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" ] }, { "associatedInsights": [ { "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/9d11057e-9c71-410f-ad55-fc82d87761d0" } ], "content": { "operationGroups": [ { "operations": [ { "action": "remove", "path": "/iamPolicy/bindings/*/members/*", "pathFilters": { "/iamPolicy/bindings/*/condition/expression": "", "/iamPolicy/bindings/*/members/*": "user:alicexz@google.com", "/iamPolicy/bindings/*/role": "roles/bigquery.dataOwner" }, "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1", "resourceType": "bigquery.googleapis.com/Dataset" } ] } ], "overview": { "addedRoles": [], "member": "user:alicexz@google.com", "minimumObservationPeriodInDays": "0", "removedRole": "roles/bigquery.dataOwner", "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" } }, "description": "This role has not been used during the observation window.", "etag": "\"1da285f7aa6438f1\"", "lastRefreshTime": "2024-02-04T08:00:00Z", "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/56013294-cf81-402a-8cde-25489545777c", "primaryImpact": { "category": "SECURITY", "securityProjection": { "details": { "revokedIamPermissionsCount": 64 } } }, "priority": "P4", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "ACTIVE" }, "targetResources": [ "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" ] } ]
推奨事項を慎重に確認し、それによってプリンシパルの Google Cloud リソースへのアクセスがどのように変化するかを見極めてください。gcloud CLI から推奨事項を確認する方法については、このページの推奨事項を確認するをご覧ください。
推奨事項を適用するには:
gcloud recommender recommendations mark-claimedコマンドを使用して、推奨事項の状態をCLAIMED,に変更します。これにより、推奨事項を適用している間は変更できなくなります。gcloud recommender recommendations mark-claimed \ RECOMMENDATION_ID \ --location=LOCATION \ --recommender=google.iam.policy.Recommender \ --project=PROJECT_ID \ --format=FORMAT \ --etag=ETAG \ --state-metadata=STATE_METADATA次の値を置き換えてください。
-
RECOMMENDATION_ID: レコメンデーションの一意の識別子。この値は、レコメンデーションのnameフィールドの最後に表示されます。たとえば、nameフィールドがprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0fの場合、推奨事項 ID はfb927dc1-9695-4436-0000-f0f285007c0fです。 -
LOCATION: BigQuery データセットが配置されているリージョン(例:usやus-central1)。 -
PROJECT_ID: BigQuery データセットを含む Google Cloud プロジェクトの ID。プロジェクト ID は英数字からなる文字列です(例:my-project)。 -
FORMAT: レスポンスの形式。jsonまたはyamlを使用してください。 -
ETAG: レコメンデーションのetagフィールドの値("dd0686e7136a4cbb"など)。この値には引用符を含めることができます。 -
STATE_METADATA: 省略可。レコメンデーションに関する任意のメタデータを含むカンマで区切られた Key-Value ペア。たとえば、--state-metadata=reviewedBy=alice,priority=highです。メタデータにより、レコメンデーションのstateInfo.stateMetadataフィールドが置き換わります。
コマンドが成功した場合、レスポンスは次の例のように
CLAIMEDステータスにレコメンデーションを表示します。この例では、わかりやすくするためにほとんどのフィールドを省略しています。... "priority": "P1", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "CLAIMED" } ...
-
データセットの許可ポリシーを取得し、推奨事項が反映されるように許可ポリシーを変更して設定します。
レコメンデーションを適用できた場合はレコメンデーションのステータスを
SUCCEEDEDに更新し、レコメンデーションを適用できない場合はFAILEDに更新します。gcloud recommender recommendations COMMAND \ RECOMMENDATION_ID \ --location=LOCATION \ --recommender=google.iam.policy.Recommender \ --project=PROJECT_ID \ --format=FORMAT \ --etag=ETAG \ --state-metadata=STATE_METADATA次の値を置き換えてください。
COMMAND: レコメンデーションを適用できた場合はmark-succeededを使用し、レコメンデーションを適用できなかった場合はmark-failedを使用します。-
RECOMMENDATION_ID: レコメンデーションの一意の識別子。この値は、レコメンデーションのnameフィールドの最後に表示されます。たとえば、nameフィールドがprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0fの場合、推奨事項 ID はfb927dc1-9695-4436-0000-f0f285007c0fです。 -
LOCATION: BigQuery データセットが配置されているリージョン(例:usやus-central1)。 -
PROJECT_ID: BigQuery データセットを含む Google Cloud プロジェクトの ID。プロジェクト ID は英数字からなる文字列です(例:my-project)。 -
FORMAT: レスポンスの形式。jsonまたはyamlを使用してください。 -
ETAG: レコメンデーションのetagフィールドの値("dd0686e7136a4cbb"など)。この値には引用符を含めることができます。 -
STATE_METADATA: 省略可。レコメンデーションに関する任意のメタデータを含むカンマで区切られた Key-Value ペア。たとえば、--state-metadata=reviewedBy=alice,priority=highです。メタデータにより、レコメンデーションのstateInfo.stateMetadataフィールドが置き換わります。
たとえば、レコメンデーションを「完了」に設定した場合、レスポンスにより
SUCCEEDEDステータスにレコメンデーションが表示されます。この例では、わかりやすくするためにほとんどのフィールドを省略しています。... "priority": "P1", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "SUCCEEDED" } ...
REST
推奨事項を確認する:
BigQuery データセットで利用可能なすべての推奨事項を一覧表示するには、Recommender API の
recommendations.listメソッドを使用します。リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID: BigQuery データセットを含むGoogle Cloud プロジェクトの ID。プロジェクト ID は英数字からなる文字列です(例:my-project)。LOCATION: BigQuery データセットが配置されているリージョン(例:usやus-central1)。-
PAGE_SIZE: 省略可。このリクエストから返される結果の最大数。指定しなかった場合、サーバーが結果数を決定します。推奨事項の数がページサイズより大きい場合、レスポンスにページ設定トークンが含まれます。このトークンを使用して、結果の次のページを取得できます。 -
PAGE_TOKEN: 省略可。以前のレスポンスでこのメソッドから返されたページ設定トークン。指定すると、前のリクエストが終了した時点から推奨事項のリストが開始します。 PROJECT_ID: 実際の Google Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です(例:my-project)。
HTTP メソッドと URL:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations?filter=recommenderSubtype%20%3D%20REMOVE_ROLE_BIGQUERY_DATASET%20OR%20recommenderSubtype%20%3D%20REPLACE_ROLE_BIGQUERY_DATASET&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN
リクエストを送信するには、次のいずれかのオプションを展開します。
レスポンスは次の例のようになります。この例では、プロジェクト「my-project」に対する編集者の役割を持つすべてのユーザー(
projectEditor:my-project)が、データセットdataset-1で BigQuery データ編集者のロール(roles/bigquery.dataEditor)を持ちます。 ただし、このロールは過去 90 日間使用されていません。そのため、ロールの推奨事項により、次のロールは取り消しが提案されます。{ "recommendations": [ { "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/0e9831fe-6810-476b-b14d-2b64bda17288", "description": "This role has not been used during the observation window.", "lastRefreshTime": "2024-02-02T08:00:00Z", "primaryImpact": { "category": "SECURITY", "securityProjection": { "details": { "revokedIamPermissionsCount": 37 } } }, "content": { "operationGroups": [ { "operations": [ { "action": "remove", "resourceType": "bigquery.googleapis.com/Dataset", "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1", "path": "/iamPolicy/bindings/*/members/*", "pathFilters": { "/iamPolicy/bindings/*/condition/expression": "", "/iamPolicy/bindings/*/members/*": "projectEditor:my-project", "/iamPolicy/bindings/*/role": "roles/bigquery.dataEditor" } } ] } ], "overview": { "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1", "member": "projectEditor:my-project", "removedRole": "roles/bigquery.dataEditor", "addedRoles": [], "minimumObservationPeriodInDays": "0" } }, "stateInfo": { "state": "ACTIVE" }, "etag": "\"d008ad3780bad5e0\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "associatedInsights": [ { "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/984eccca-0241-472f-baab-2557dd0d7282" } ], "priority": "P4", "targetResources": [ "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" ] } ] }推奨事項を慎重に確認し、それによってプリンシパルの Google Cloud リソースへのアクセスがどのように変化するかを見極めてください。REST API から推奨事項を確認する方法については、このページの推奨事項を確認するをご覧ください。
推奨事項を適用するには、次の手順を行います。
レコメンデーションを
CLAIMEDとマークします。推奨事項を
CLAIMEDとしてマークし、適用中に推奨事項を変更できないようにするには、Recommender API のrecommendations.markClaimedメソッドを使用します。リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID: BigQuery データセットを含むGoogle Cloud プロジェクトの ID。プロジェクト ID は英数字からなる文字列です(例:my-project)。LOCATION: BigQuery データセットが配置されているリージョン(例:usやus-central1)。RECOMMENDATION_ID: 推奨事項の一意の識別子。この値は、レコメンデーションのnameフィールドの最後に表示されます。たとえば、nameフィールドがprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0fの場合、レコメンデーション ID はfb927dc1-9695-4436-0000-f0f285007c0fです。ETAG: レコメンデーションのetagフィールドの値("dd0686e7136a4cbb"など)。バックスラッシュを使用して引用符をエスケープします(例:"\"df7308cca9719dcc\"")。STATE_METADATA: 省略可。レコメンデーションに関する任意のメタデータと Key-Value ペアを含むオブジェクト。例:{"reviewedBy": "alice", "priority": "high"}メタデータにより、レコメンデーションのstateInfo.stateMetadataフィールドが置き換わります。
HTTP メソッドと URL:
POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markClaimed
リクエストの本文(JSON):
{ "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }リクエストを送信するには、次のいずれかのオプションを展開します。
レスポンスでは、次の例のように
CLAIMEDステータスにレコメンデーションが表示されます。この例では、わかりやすくするためにほとんどのフィールドを省略しています。... "stateInfo": { "state": "CLAIMED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...レコメンデーションを適用できた場合はレコメンデーションのステータスを
SUCCEEDEDに更新し、レコメンデーションを適用できない場合はFAILEDに更新します。SUCCEEDED推奨事項を
SUCCEEDEDとしてマークして、適用可能であることを示すには、Recommender API のrecommendations.markSucceededメソッドを使用します。リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID: BigQuery データセットを含むGoogle Cloud プロジェクトの ID。プロジェクト ID は英数字からなる文字列です(例:my-project)。LOCATION: BigQuery データセットが配置されているリージョン(例:usやus-central1)。RECOMMENDATION_ID: 推奨事項の一意の識別子。この値は、レコメンデーションのnameフィールドの最後に表示されます。たとえば、nameフィールドがprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0fの場合、レコメンデーション ID はfb927dc1-9695-4436-0000-f0f285007c0fです。ETAG: レコメンデーションのetagフィールドの値("dd0686e7136a4cbb"など)。バックスラッシュを使用して引用符をエスケープします(例:"\"df7308cca9719dcc\"")。STATE_METADATA: 省略可。レコメンデーションに関する任意のメタデータと Key-Value ペアを含むオブジェクト。例:{"reviewedBy": "alice", "priority": "high"}メタデータにより、レコメンデーションのstateInfo.stateMetadataフィールドが置き換わります。
HTTP メソッドと URL:
POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markSucceeded
リクエストの本文(JSON):
{ "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }リクエストを送信するには、次のいずれかのオプションを展開します。
レスポンスでは、次の例のように
SUCCEEDEDステータスにレコメンデーションが表示されます。この例では、わかりやすくするためにほとんどのフィールドを省略しています。... "stateInfo": { "state": "SUCCEEDED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...FAILED推奨事項を適用できなかったことを示す
FAILEDとマークするには、Recommender API のrecommendations.markFailedメソッドを使用します。リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID: BigQuery データセットを含むGoogle Cloud プロジェクトの ID。プロジェクト ID は英数字からなる文字列です(例:my-project)。LOCATION: BigQuery データセットが配置されているリージョン(例:usやus-central1)。RECOMMENDATION_ID: 推奨事項の一意の識別子。この値は、レコメンデーションのnameフィールドの最後に表示されます。たとえば、nameフィールドがprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0fの場合、レコメンデーション ID はfb927dc1-9695-4436-0000-f0f285007c0fです。ETAG: レコメンデーションのetagフィールドの値("dd0686e7136a4cbb"など)。バックスラッシュを使用して引用符をエスケープします(例:"\"df7308cca9719dcc\"")。STATE_METADATA: 省略可。レコメンデーションに関する任意のメタデータと Key-Value ペアを含むオブジェクト。例:{"reviewedBy": "alice", "priority": "high"}メタデータにより、レコメンデーションのstateInfo.stateMetadataフィールドが置き換わります。
HTTP メソッドと URL:
POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markFailed
リクエストの本文(JSON):
{ "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }リクエストを送信するには、次のいずれかのオプションを展開します。
レスポンスでは、次の例のように
FAILEDステータスにレコメンデーションが表示されます。この例では、わかりやすくするためにほとんどのフィールドを省略しています。... "stateInfo": { "state": "FAILED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...
推奨事項について
各推奨事項には、それが作られた理由の理解に役立つ情報が含まれます。
推奨事項のフィールドの詳細については、
Recommendationリファレンスをご覧ください。この推奨事項のベースとなる権限の使用状況を確認するには、推奨事項に関連付けられたポリシー分析情報を表示します。これらの分析情報は
associatedInsightsフィールドにリストされています。推奨事項に関連付けられたポリシー分析情報を表示するには、次のようにします。- 関連付けられた分析情報の ID をコピーします。ID は、
insightフィールドのinsights/より後の部分です。たとえば、insightフィールドがprojects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/7849add9-73c0-419e-b169-42b3671173fbの場合、分析情報 ID は7849add9-73c0-419e-b169-42b3671173fbです。 - コピーした分析情報 ID を使用して、手順どおりに操作を行い、ポリシーの分析情報を取得します。
次のステップ
- Recommender の詳細を確認する。
- BigQuery データセットの許可ポリシーの分析情報を使用する方法を確認する。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-10-19 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["わかりにくい","hardToUnderstand","thumb-down"],["情報またはサンプルコードが不正確","incorrectInformationOrSampleCode","thumb-down"],["必要な情報 / サンプルがない","missingTheInformationSamplesINeed","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-10-19 UTC。"],[],[]]-
プロジェクトに対するロール閲覧者 (