このページでは、BigQuery データセットの権限の使用に関する機械学習ベースの分析結果である、データセットレベルのポリシーの分析情報を管理する方法について説明します。ポリシーの分析情報により、不要な権限を持つプリンシパルを特定できます。
このページでは、データセットでのポリシーの分析情報に重点を置いて説明します。Recommender は、次のリソースタイプに関するポリシーの分析情報も提供します。
データセット レベルのポリシーの分析情報は、ロールの推奨事項に関連付けられている場合があります。ロールの推奨事項は、データセット レベルのポリシーの分析情報で特定された問題を修正するために実行できるアクションを提案します。
始める前に
-
Enable the Recommender API.
- IAM ロールの推奨事項を十分に理解してください。
- (省略可)Recommender の分析情報をご覧ください。
必要なロール
データセットレベルのポリシーの分析情報を管理するために必要な権限を取得するには、プロジェクトに対して次の IAM ロールを付与するよう管理者に依頼してください。
- BigQuery データオーナー(roles/bigquery.dataOwner)
- IAM 推奨事項の管理者(roles/recommender.iamAdmin)
- gcloud CLI または REST API を使用して、データセット レベルのポリシーの分析情報を管理します。 Service Usage コンシューマ(`roles/serviceusage.serviceUsageConsumer`)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、データセット レベルのポリシーの分析情報を管理するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
データセット レベルのポリシーの分析情報を管理するには、次の権限が必要です。
-
データセット レベルのポリシーの分析情報を表示します。
-
recommender.iamPolicyInsights.get
-
recommender.iamPolicyInsights.list
-
-
データセット レベルのポリシーの分析情報を変更します。
recommender.iamPolicyInsights.update
-
gcloud CLI または REST API を使用して、データセット レベルのポリシーの分析情報を管理します。
serviceusage.services.use
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
データセットレベルのポリシーの分析情報を一覧表示する
プロジェクトのデータセットレベルのポリシーに関する分析情報をすべて一覧表示するには、次のいずれかの方法を使用します。gcloud
プロジェクトのデータセット レベルのポリシーに関する分析情報をすべて表示するには、gcloud recommender
insights list
コマンドを使用します。
コマンドを実行する前に、次の値を置き換えます。
PROJECT_ID
: 分析情報を一覧表示するプロジェクトの ID。LOCATION
: 分析情報を一覧表示するデータセットの場所。
gcloud recommender insights list --insight-type=google.iam.policy.Insight \ --project=PROJECT_ID \ --location=LOCATION\ --filter="insightSubtype:PERMISSIONS_USAGE_BIGQUERY_DATASET"
出力には、指定した場所に存在するプロジェクトのデータセット レベルのポリシーに関する分析情報がすべて一覧表示されます。次に例を示します。
INSIGHT_ID CATEGORY INSIGHT_STATE LAST_REFRESH_TIME SEVERITY INSIGHT_SUBTYPE DESCRIPTION 101d03ad-6148-4628-943e-fcf1a3af6b57 SECURITY ACTIVE 2024-02-02T08:00:00Z LOW PERMISSIONS_USAGE_BIGQUERY_DATASET 0 of the permissions in this role binding were used in the past 90 days. 15133dd9-4cbc-41e9-8990-b189241676d8 SECURITY ACTIVE 2024-02-02T08:00:00Z LOW PERMISSIONS_USAGE_BIGQUERY_DATASET 0 of the permissions in this role binding were used in the past 90 days. 1590aeae-d5bf-4e3d-b7d5-e230212f5faf SECURITY ACTIVE 2024-02-02T08:00:00Z LOW PERMISSIONS_USAGE_BIGQUERY_DATASET 4 of the permissions in this role binding were used in the past 90 days. 280e5a14-4d09-4ac6-8e14-be7407611ad7 SECURITY ACTIVE 2024-02-02T08:00:00Z LOW PERMISSIONS_USAGE_BIGQUERY_DATASET 0 of the permissions in this role binding were used in the past 90 days. 34102078-085f-45d3-ae72-81da16c75781 SECURITY ACTIVE 2024-02-02T08:00:00Z LOW PERMISSIONS_USAGE_BIGQUERY_DATASET 10 of the permissions in this role binding were used in the past 90 days.
REST
Recommender API の insights.list
メソッドを使用して、プロジェクトのデータセット レベルのポリシーに関する分析情報をすべて一覧表示します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID
: 分析情報を一覧表示するプロジェクトの ID。LOCATION
: 分析情報を一覧表示するデータセットの場所。
HTTP メソッドと URL:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights?filter=insightSubtype%20%3D%20PERMISSIONS_USAGE_BIGQUERY_DATASET
リクエストを送信するには、次のいずれかのオプションを展開します。
レスポンスには、指定した場所に存在するプロジェクトのデータセット レベルのポリシーに関する分析情報が一覧表示されます。次に例を示します。
{ "insights": [ { "name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57", "description": "0 of the permissions in this role binding were used in the past 90 days.", "content": { "role": "roles/bigquery.dataEditor", "member": "projectEditor:my-project", "condition": { "expression": "", "title": "", "description": "", "location": "" }, "exercisedPermissions": [], "inferredPermissions": [], "currentTotalPermissionsCount": "37" }, "lastRefreshTime": "2024-02-02T08:00:00Z", "observationPeriod": "7779600s", "stateInfo": { "state": "ACTIVE" }, "category": "SECURITY", "associatedRecommendations": [ { "recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f952-1ceb-488e-9e49-f17eb21f6e5e" } ], "targetResources": [ "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" ], "insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET", "etag": "\"35d4af47524d3f0c\"", "severity": "LOW" }, { "name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/15133dd9-4cbc-41e9-8990-b189241676d8", "description": "0 of the permissions in this role binding were used in the past 90 days.", "content": { "role": "roles/bigquery.dataViewer", "member": "projectViewer:my-project", "condition": { "expression": "", "title": "", "description": "", "location": "" }, "exercisedPermissions": [], "inferredPermissions": [], "currentTotalPermissionsCount": "17" }, "lastRefreshTime": "2024-02-02T08:00:00Z", "observationPeriod": "7779600s", "stateInfo": { "state": "ACTIVE" }, "category": "SECURITY", "associatedRecommendations": [ { "recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/bc9b4c28-cc93-4a91-97ea-ff67e3cef1b4" } ], "targetResources": [ "//bigquery.googleapis.com/projects/my-project/datasets/dataset-2" ], "insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET", "etag": "\"eafa79df1b329063\"", "severity": "LOW" } ] }
分析情報のコンポーネントの詳細については、このページのデータセットレベルのポリシーの分析情報を確認するをご覧ください。
1 つのデータセットレベルのポリシーに関する分析情報を取得する
1 つの分析情報に関する詳細(分析情報の説明、ステータス、推奨事項など)を取得するには、次のいずれかの方法を使用します。
gcloud
分析情報の ID を指定して gcloud recommender
insights describe
コマンドを使用すると、1 つの分析結果に関する情報を表示できます。
-
INSIGHT_ID
: 表示する分析情報の ID。ID を確認するには、プロジェクトの分析情報の一覧を表示します。 PROJECT_ID
: 分析情報を管理するプロジェクトの ID。LOCATION
: 分析情報を取得するデータセットの場所。
gcloud recommender insights describe INSIGHT_ID \ --insight-type=google.iam.policy.Insight \ --project=PROJECT_ID \ --location=LOCATION
出力に分析情報の詳細が表示されます。たとえば、次のインサイトは、プロジェクト my-project
(projectEditor:my-project
)のEditorロールを持つすべてのユーザーが、データセット dataset-1
のBigQuery Data Editorロール(roles/bigquery.dataEditor
)を持っているが、そのロールの権限は過去90日間に1つも使用されていないことを示しています:
associatedRecommendations: - recommendation: projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f951-1ceb-488e-9e49-f17eb21f6e5e category: SECURITY content: condition: description: '' expression: '' location: '' title: '' currentTotalPermissionsCount: '37' exercisedPermissions: [] inferredPermissions: [] member: projectEditor:my-project role: roles/bigquery.dataEditor description: 0 of the permissions in this role binding were used in the past 90 days. etag: '"5f2f352a738f7a24"' insightSubtype: PERMISSIONS_USAGE_BIGQUERY_DATASET lastRefreshTime: '2024-02-04T08:00:00Z' name: projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57 observationPeriod: 7776000s severity: LOW stateInfo: state: ACTIVE targetResources: - //bigquery.googleapis.com/projects/my-project/datasets/dataset-1
分析情報のコンポーネントの詳細については、このページのデータセットレベルのポリシーの分析情報を確認するをご覧ください。
REST
1 つの分析情報を取得するには、Recommender API の insights.get
メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
-
PROJECT_ID
: 分析情報を管理するプロジェクトの ID。 LOCATION
: 分析情報を取得するデータセットの場所。-
INSIGHT_ID
: 表示する分析情報の ID。分析情報 ID が不明な場合は、プロジェクト内で分析情報を一覧表示することにより確認できます。分析情報のname
フィールドのinsights/
より後の部分が分析情報の ID です。
HTTP メソッドと URL:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID
リクエストを送信するには、次のいずれかのオプションを展開します。
レスポンスに分析情報が含まれます。たとえば、次のインサイトは、プロジェクト my-project
(projectEditor:my-project
)のEditorロールを持つすべてのユーザーが、データセット dataset-1
のBigQuery Data Editorロール(roles/bigquery.dataEditor
)を持っているが、そのロールの権限は過去90日間に1つも使用されていないことを示しています:
{ "name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57", "description": "0 of the permissions in this role binding were used in the past 90 days.", "content": { "role": "roles/bigquery.dataEditor", "member": "projectEditor:my-project", "condition": { "expression": "", "title": "", "description": "", "location": "" }, "exercisedPermissions": [], "inferredPermissions": [], "currentTotalPermissionsCount": "37" }, "lastRefreshTime": "2024-02-02T08:00:00Z", "observationPeriod": "7779600s", "stateInfo": { "state": "ACTIVE" }, "category": "SECURITY", "associatedRecommendations": [ { "recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f952-1ceb-488e-9e49-f17eb21f6e5e" } ], "targetResources": [ "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" ], "insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET", "etag": "\"35d4af47524d3f0c\"", "severity": "LOW" }
分析情報のコンポーネントの詳細については、このページのデータセットレベルのポリシーの分析情報を確認するをご覧ください。
データセットレベルのポリシーの分析情報を確認する
1 回の分析情報を取得したら、その内容を確認して、ハイライトされたリソース使用量のパターンを確認できます。
分析情報のコンテンツはサブタイプによって決まります。バケットレベルのポリシーの分析情報(google.iam.policy.Insight
)の分析情報には、PERMISSIONS_USAGE_BIGQUERY_DATASET
サブタイプがあります。
PERMISSIONS_USAGE_BIGQUERY_DATASET
の分析情報は次のコンポーネントから構成されます(順番は異なる場合があります)。
-
associatedRecommendations
: 分析情報に関連付けられている推奨事項の ID。分析情報に関連付けられた推奨事項がない場合、このフィールドは空白になります。 category
: IAM 分析情報のカテゴリは常にSECURITY
になります。-
content
: 特定のロールのプリンシパル権限の使用状況を報告します。このフィールドには次のコンポーネントが含まれます。condition
: プリンシパルにロールを付与するバインディングに関連付けられている条件。条件がない場合、このフィールドには空の条件が含まれます。exercisedPermissions
: モニタリング期間中にプリンシパルが使用したロールの権限。inferredPermissions
: ML により、使用された権限に基づいて、プリンシパルが必要とする可能性があると Recommender が特定したロールの権限。member
: 権限の使用状況が分析されたプリンシパル。role
: 権限の使用状況が分析されたロール。
description
: 人が読める形式の分析情報の概要。-
etag
: 分析情報の現在の状態の一意の ID。分析情報が変わるたびに、新しいetag
値が割り当てられます。分析情報の状態を変更するには、既存の分析情報の
etag
を指定する必要があります。etag
を使用すると、最後に取得した後に分析情報が変更されていない場合にのみ、オペレーションを実行できます。 -
insightSubtype
: 分析情報のサブタイプ。 -
lastRefreshTime
: 分析情報が最後に更新された日付。分析情報の生成に使用されたデータの鮮度を表します。 -
name
: 分析情報の名前。次の形式になります。projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID
プレースホルダの値は次のとおりです。
PROJECT_ID
: 分析情報が生成されたプロジェクトの ID。LOCATION
: 分析情報の対象となるデータセットの場所。INSIGHT_ID
: 分析情報の一意の ID。
-
observationPeriod
: 分析情報の期間。分析情報の生成に使用されるソースデータはlastRefreshTime
で終了し、lastRefreshTime
からobservationPeriod
を引いた時間に開始します。 -
stateInfo
: 分析情報が提案後、多くの状態遷移が発生します。-
ACTIVE
: 分析情報が生成されていますが、アクションが実行されていません。あるいは、分析情報の状態を更新せずに処理が行われています。アクティブな分析情報は、基になるデータが変更されると更新されます。 -
ACCEPTED
: 分析情報に基づいて一部の操作が行われています。関連する推奨事項がCLAIMED
、SUCCEEDED
、FAILED
のいずれかにマークされるか、もしくは分析情報が直接承認されると、分析情報は承認された状態になります。分析情報がACCEPTED
状態の場合、分析情報のコンテンツは変更できません。承認された分析情報は、承認後 90 日間保持されます。
-
-
targetResources
: 分析情報の対象となるデータセットの完全なリソース名。例://bigquery.googleapis.com/projects/my-project/datasets/my-dataset
データセット レベルのポリシーの分析情報を ACCEPTED
とマークする
アクティブな分析情報に基づいてアクションを実行する場合は、その分析情報を ACCEPTED
としてマークします。ACCEPTED
状態は、この分析情報に基づいてアクションを実行したことを Recommender API に通知します。この情報は推奨事項の改善に役立ちます。
承諾された分析情報は、ACCEPTED
とマークされてから 90 日間保持されます。
gcloud
分析情報 ID を指定して gcloud recommender insights mark-accepted
コマンドを使用し、分析情報を ACCEPTED
とマークします。
-
INSIGHT_ID
: 表示する分析情報の ID。ID を確認するには、プロジェクトの分析情報の一覧を表示します。 PROJECT_ID
: 分析情報を管理するプロジェクトの ID。LOCATION
: 分析情報をACCEPTED
としてマークするデータセットの場所。-
ETAG
: 分析情報のバージョンの ID。etag
を取得する方法は次のとおりです。gcloud recommender insights describe
コマンドで分析情報を取得します。-
出力から
etag
値を見つけてコピーします(引用符も含む)。例:"d3cdec23cc712bd0"
gcloud recommender insights mark-accepted INSIGHT_ID \ --insight-type=google.iam.policy.Insight \ --project=PROJECT_ID \ --location=LOCATION \ --etag=ETAG
出力に、ACCEPTED
状態の分析情報が表示されます。
associatedRecommendations: - recommendation: projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f951-1ceb-488e-9e49-f17eb21f6e5e category: SECURITY content: condition: description: '' expression: '' location: '' title: '' currentTotalPermissionsCount: '37' exercisedPermissions: [] inferredPermissions: [] member: projectEditor:my-project role: roles/bigquery.dataEditor description: 0 of the permissions in this role binding were used in the past 90 days. etag: '"5f2f352a738f7a24"' insightSubtype: PERMISSIONS_USAGE_BIGQUERY_DATASET lastRefreshTime: '2024-02-04T08:00:00Z' name: projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57 observationPeriod: 7776000s severity: LOW stateInfo: state: ACCEPTED targetResources: - //bigquery.googleapis.com/projects/my-project/datasets/dataset-1
分析情報の状態の詳細については、このページのデータセットレベルのポリシーの分析情報を確認するをご覧ください。
REST
Recommender API の insights.markAccepted
メソッドを使用して、分析情報を ACCEPTED
としてマークします。
リクエストのデータを使用する前に、次のように置き換えます。
-
PROJECT_ID
: 分析情報を管理するプロジェクトの ID。 LOCATION
: 分析情報をACCEPTED
としてマークするデータセットの場所。-
INSIGHT_ID
: 表示する分析情報の ID。分析情報 ID が不明な場合は、プロジェクト内で分析情報を一覧表示することにより確認できます。分析情報のname
フィールドのinsights/
より後の部分が分析情報の ID です。 -
ETAG
: 分析情報のバージョンの ID。etag
を取得する方法は次のとおりです。insights.get
メソッドで分析情報を取得します。- レスポンスから
etag
値を見つけてコピーします。
HTTP メソッドと URL:
POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID:markAccepted
リクエストの本文(JSON):
{ "etag": "ETAG" }
リクエストを送信するには、次のいずれかのオプションを展開します。
レスポンスには、状態が ACCEPTED
の分析情報が含まれます。
{ "name": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/101d03ad-6148-4628-943e-fcf1a3af6b57", "description": "0 of the permissions in this role binding were used in the past 90 days.", "content": { "role": "roles/bigquery.dataEditor", "member": "projectEditor:my-project", "condition": { "expression": "", "title": "", "description": "", "location": "" }, "exercisedPermissions": [], "inferredPermissions": [], "currentTotalPermissionsCount": "37" }, "lastRefreshTime": "2024-02-02T08:00:00Z", "observationPeriod": "7779600s", "stateInfo": { "state": "ACCEPTED" }, "category": "SECURITY", "associatedRecommendations": [ { "recommendation": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/9327f952-1ceb-488e-9e49-f17eb21f6e5e" } ], "targetResources": [ "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" ], "insightSubtype": "PERMISSIONS_USAGE_BIGQUERY_DATASET", "etag": "\"35d4af47524d3f0c\"", "severity": "LOW" }
分析情報の状態の詳細については、このページのデータセットレベルのポリシーの分析情報を確認するをご覧ください。
次のステップ
- BigQuery データセットのポリシー推奨事項を表示して適用する方法を学習する。
- Recommendation Hub を使用して、プロジェクトに対するすべての推奨事項(IAM の推奨事項を含む)を表示し、管理する。