このドキュメントでは、BigQuery テーブルで機密データを検査し、検査結果を Knowledge Catalog に送信する方法について説明します。この操作により、BigQuery テーブルに関連付けられている Knowledge Catalog エントリにアスペクトが自動的に追加されます。
このドキュメントでは、組織やプロジェクト間で特定の側面値を持つデータを検索するために使用できるクエリの例についても説明します。
この機能は、Sensitive Data Protection の検査ジョブから得られたセンシティブ データの分類を使用して、Knowledge Catalog のメタデータを拡充する場合に便利です。
生成されたアスペクトには次の詳細が含まれます。
- 検査ジョブの名前
- テーブルで検出された情報タイプ(infoTypes)
Knowledge Catalog について
Knowledge Catalog は、 Google Cloud リソースの統合インベントリを提供します。
Knowledge Catalog では、アスペクトを使用して、データにビジネス メタデータとテクニカル メタデータを追加し、リソースのコンテキストと知識を取得できます。 これにより、組織全体でデータを検索して検出したり、データアセットに対するデータガバナンスを有効にしたりできます。詳細については、 アスペクトをご覧ください。
Data Catalog は 非推奨となりました。検査結果を Data Catalog に送信できる Sensitive Data Protection 機能も 非推奨となりました。非推奨のアクションを使用するように構成されているジョブトリガーを移行するには、このドキュメントのDataplex Universal Catalog に公開するアクションに移行するをご覧ください。仕組み
検査ジョブの結果に基づいて Knowledge Catalog アスペクトを自動的に作成するには、次の概要ワークフローに従います。
BigQuery テーブルを検査する検査ジョブを作成または編集します。 手順については、BigQuery テーブル を検査するをご覧ください。
[アクションを追加] ステップで、[Dataplex Universal Catalog に公開] を有効にします。
Sensitive Data Protection は、BigQuery テーブルに関連付けられている Knowledge Catalog entry の Sensitive Data Protection job result アスペクトを追加または更新します。その後、Knowledge Catalog で特定の側面値を使用して、組織やプロジェクトのすべてのデータを検索できます。クエリの例については、このドキュメントの検索
クエリの例をご覧ください。
結果の Knowledge Catalog アスペクトは、BigQuery テーブルと同じプロジェクトとリージョンに保存されます。
アスペクト フィールド
Sensitive Data Protection job result アスペクトには次のフィールドがあります。
- ジョブ名
- 検査ジョブの完全なリソース名(例:
projects/example-project/locations/us/dlpJobs/i-8992079400000000000)。 - infoType の数
- 検査ジョブで検索された infoType 名(検査構成で指定)と、各 infoType の検出数。
検出結果がない infoType の数は
0です。 - 終了時刻
- 検査ジョブが終了した日時。
- 完全スキャン
- 検査ジョブがテーブル内のすべての行をスキャンしたかどうか。たとえば、検査ジョブでサンプリングが有効になっている場合、このフィールドの値は
Falseになります。 - 検出結果あり
- 検査ジョブで、スキャン対象の infoType が検出されたかどうか。
Dataplex API を有効にする
アスペクトを追加するデータを含む各プロジェクトで Dataplex API を有効にする必要があります。このセクション では、単一のプロジェクト、または組織やフォルダ内の すべてのプロジェクトで Dataplex API を有効にする方法について説明します。
単一のプロジェクトで Dataplex API を有効にする
Dataplex API を有効にするプロジェクトを選択します。
-
Dataplex API を有効にする
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。
組織またはフォルダ内のすべてのプロジェクトで Dataplex API を有効にする
このセクションでは、組織またはフォルダ内のすべてのプロジェクトを検索し、それらの各プロジェクトで Dataplex API を有効にするスクリプトについて説明します。
組織またはフォルダ内のすべてのプロジェクトで Dataplex API を有効にするために必要な権限を取得するには、次の IAM ロールの付与を管理者に依頼してください。
- 組織またはフォルダに対する
roles/cloudasset.viewerCloud Asset 閲覧者 - Dataplex API を有効にする各プロジェクトに対する
roles/dlp.userDLP ユーザー
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには 組織またはフォルダ内のすべてのプロジェクトで Dataplex API を有効にするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
組織またはフォルダ内のすべてのプロジェクトで Dataplex API を有効にするには、次の権限が必要です。
-
組織またはフォルダ内のすべてのプロジェクトを検索するには:
cloudasset.assets.searchAllResources組織またはフォルダに対する -
Dataplex API を有効にするには:
serviceusage.services.useDataplex API を有効にする各プロジェクトに対する
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
組織またはフォルダ内のすべてのプロジェクトで Dataplex API を有効にするには、次の手順を行います。
-
コンソールで Cloud Shell をアクティブにします。 Google Cloud
コンソールの下部にある Google Cloud Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です 。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています 。セッションが初期化されるまで数秒かかることがあります。
次のスクリプトを実行します。
#!/bin/bash RESOURCE_ID="RESOURCE_ID" gcloud asset search-all-resources \ --scope="RESOURCE_TYPE/$RESOURCE_ID" \ --asset-types="cloudresourcemanager.googleapis.com/Project" \ --format="value(name)" | while read project_name; do project_id=$(echo "$project_name" | sed 's|.*/||') gcloud services enable "dataplex.googleapis.com" --project="$project_id" done次のように置き換えます。
RESOURCE_ID: プロジェクトを含むリソースの組織番号またはフォルダ番号RESOURCE_TYPE: プロジェクトを含むリソースのタイプ(organizationsまたはfolders)
アスペクトを表示するためのロールと権限
BigQuery テーブルに関連付けられたアスペクトを検索するために必要な権限を取得するには、テーブルに対する次の IAM ロールの付与を管理者に依頼してください。
- Dataplex Catalog 閲覧者 (
roles/dataplex.catalogViewer) - BigQuery データ閲覧者 (
roles/bigquery.dataViewer)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには BigQuery テーブルに関連付けられたアスペクトを検索するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
BigQuery テーブルに関連付けられたアスペクトを検索するには、次の権限が必要です。
-
Knowledge Catalog エントリを表示する:
-
dataplex.entries.list -
dataplex.entries.get
-
-
BigQuery データセットとテーブルを表示する:
-
bigquery.datasets.get -
bigquery.tables.get
-
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
Knowledge Catalog の使用に必要な権権の詳細については、Knowledge Catalog IAM 権限をご覧ください。
Sensitive Data Protection の検査ジョブを構成して実行する
Sensitive Data Protection の検査ジョブは、 the Google Cloud コンソールまたは DLP API を使用して構成および実行できます。
コンソール
-
コンソールで、[ジョブまたはジョブトリガーを作成] ページに移動します。 Google Cloud
- プロジェクトを選択します。
- 必要な検査ジョブの詳細と、検査する BigQuery テーブルの詳細を入力します。手順については、 BigQuery テーブルを検査するをご覧ください。Sensitive Data Protection で検査できる情報タイプの一覧については、infoType 検出機能リファレンスをご覧ください。
- [アクションを追加] で、[Dataplex Universal Catalog に公開] を有効にします。
- [作成] をクリックします。ジョブはすぐに実行されます。
REST
次の例では、
projects.locations.dlpJobs.create
リクエストを送信して BigQuery テーブルを検査し、結果を
Knowledge Catalog に送信します。
リクエストのデータを使用する前に、 次のように置き換えます。
-
PROJECT_ID: 実際の Google Cloud プロジェクト ID。プロジェクト ID は 英数字の文字列です。 -
LOCATION: リクエストを処理するリージョンまたはマルチリージョン(europe-west1、usなど)。使用可能な ロケーションについては、Sensitive Data Protection のロケーションをご覧ください。 -
BIGQUERY_DATASET_NAME: 検査するテーブルを含む BigQuery データセットの名前 -
BIGQUERY_TABLE_NAME: 検査する BigQuery テーブルの名前
HTTP メソッドと URL:
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/dlpJobs
リクエストの本文(JSON):
{
"inspectJob":
{
"storageConfig":
{
"bigQueryOptions":
{
"tableReference":
{
"projectId": "PROJECT_ID",
"datasetId": "BIGQUERY_DATASET_NAME",
"tableId": "BIGQUERY_TABLE_NAME"
}
}
},
"inspectConfig":
{
"infoTypes":
[
{
"name": "EMAIL_ADDRESS"
},
{
"name": "PERSON_NAME"
},
{
"name": "US_SOCIAL_SECURITY_NUMBER"
},
{
"name": "PHONE_NUMBER"
}
],
"includeQuote": true,
"minLikelihood": "UNLIKELY",
"limits":
{
"maxFindingsPerRequest": 100
}
},
"actions":
[
{
"publishFindingsToDataplexCatalog": {}
}
]
}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{
"name": "projects/PROJECT_ID/locations/LOCATION/dlpJobs/JOB_ID",
"type": "INSPECT_JOB",
"state": "PENDING",
"inspectDetails": {
"requestedOptions": {
"snapshotInspectTemplate": {},
"jobConfig": {
"storageConfig": {
"bigQueryOptions": {
"tableReference": {
"projectId": "PROJECT_ID",
"datasetId": "BIGQUERY_DATASET_NAME",
"tableId": "BIGQUERY_TABLE_NAME"
}
}
},
"inspectConfig": {
"infoTypes": [
{
"name": "EMAIL_ADDRESS"
},
{
"name": "PERSON_NAME"
},
{
"name": "US_SOCIAL_SECURITY_NUMBER"
},
{
"name": "PHONE_NUMBER"
}
],
"minLikelihood": "UNLIKELY",
"limits": {
"maxFindingsPerRequest": 100
},
"includeQuote": true
},
"actions": [
{
"publishFindingsToDataplexCatalog": {}
}
]
}
},
"result": {}
},
"createTime": "2025-09-09T00:29:55.951374Z",
"lastModified": "2025-09-09T00:29:58.022967Z"
}
DLP API を使用して検査ジョブの結果を取得する方法については、ジョブを取得するをご覧ください。
検索クエリの例
このセクションでは、Knowledge Catalog で特定の側面値で組織やプロジェクトのデータを検索するために使用できる検索クエリの例を示します。
検索できるのは、アクセス権を持つデータだけです。データアクセスは IAM 権限によって制御されます。詳細については、このドキュメントのアスペクトを表示するための ロールと権限をご覧ください。
これらのクエリの例は、Knowledge Catalog の [検索] ページの [検索] フィールドに入力できます。
クエリの作成方法については、 Knowledge Catalog の検索構文をご覧ください。
Sensitive Data Protection のジョブ結果アスペクトを持つすべてのテーブルのエントリを検索する
aspect:sensitive-data-protection-job-result
検出結果がある検査済みテーブルのエントリを検索する
aspect:sensitive-data-protection-job-result.hasFindings=True
検出結果がない検査済みテーブルのエントリを検索する
aspect:sensitive-data-protection-job-result.hasFindings=False
完全に検査されたテーブルのエントリを検索する
次のクエリは、Sensitive Data Protection が行ごとに検査したテーブルのエントリを返します。
aspect:sensitive-data-protection-job-result.isFullScan=True
完全に検査されなかったテーブルのエントリを検索する
次のクエリは、Sensitive Data Protection がサンプリングによって検査したテーブルのエントリを返します。
aspect:sensitive-data-protection-job-result.isFullScan=False
[Dataplex Universal Catalog に公開] アクションに移行する
非推奨の [Data Catalog に公開] アクションを使用するように構成されているジョブトリガーを移行するには、次の手順を行います。
- 検査結果を Data Catalog に公開するように構成されているジョブトリガーを編集します。ジョブ トリガーを開いて編集する方法については、既存のジョブ トリガーを更新するをご覧ください。
- [アクション] セクションで、[Data Catalog に公開] を無効にします。
- [Dataplex Universal Catalog に公開] を有効にします。
- [保存] をクリックします。