このページでは、BigQuery データセットの権限の使用に関する機械学習ベースの分析結果である、データセットレベルのポリシーの分析情報を管理する方法について説明します。ポリシーの分析情報により、不要な権限を持つプリンシパルを特定できます。
このページでは、データセットでのポリシーの分析情報に重点を置いて説明します。Recommender は、次のリソースタイプに関するポリシーの分析情報も提供します。
データセット レベルのポリシーの分析情報は、ロールの推奨事項に関連付けられている場合があります。ロールの推奨事項は、データセット レベルのポリシーの分析情報で特定された問題を修正するために実行できるアクションを提案します。
始める前に
-
Enable the Recommender API.
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. - IAM ロールの推奨事項を十分に理解してください。
- Security Command Center のプレミアム ティアまたはエンタープライズ ティアが 組織レベルまたはプロジェクト レベルで有効になっていることを確認します。詳細については、 お支払いについてをご覧ください。
- (省略可)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 データセットのポリシーの推奨事項を確認して適用する方法を学習する。
- Active Assist を使用して、プロジェクトに対するすべての推奨事項(IAM の推奨事項を含む)を表示し、管理する。