検査結果をアスペクトとして Dataplex Universal Catalog に送信する

このドキュメントでは、BigQuery テーブルで機密データを検査し、検査結果を Dataplex Universal Catalog に送信する方法について説明します。このアクションにより、BigQuery テーブルに関連付けられている Dataplex Universal Catalog エントリアスペクトが自動的に追加されます。

このドキュメントでは、特定のアスペクト値を使用して組織やプロジェクト間でデータを検索するために使用できるクエリの例も示します。

この機能は、センシティブ データの保護の検査ジョブから取得したセンシティブ データの分類を使用して、Dataplex Universal Catalog のメタデータの質を高める場合に便利です。

生成されたアスペクトには、次の詳細が含まれます。

  • 検査ジョブの名前
  • テーブルで検出された情報タイプ(infoTypes

Dataplex Universal Catalog について

Dataplex Universal Catalog は、 Google Cloud リソースの統合インベントリを提供します。

Dataplex Universal Catalog では、アスペクトを使用して、データにビジネス メタデータとテクニカル メタデータを追加し、リソースのコンテキストと知識を取得できます。これにより、組織全体でデータを検索して検出し、データアセットに対するデータ ガバナンスを有効にできます。詳細については、アスペクトをご覧ください。

仕組み

検査ジョブの結果に基づいて Dataplex Universal Catalog のアスペクトを自動的に作成するには、次の概要ワークフローを行います。

  1. BigQuery テーブルを検査する検査ジョブを作成または編集します。手順については、BigQuery テーブルを検査するをご覧ください。

  2. [アクションを追加] ステップで、[Dataplex Universal Catalog に公開] を有効にします。

機密データの保護は、BigQuery テーブルに関連付けられた Dataplex Universal Catalog エントリSensitive Data Protection job result アスペクトを追加または更新します。その後、Dataplex Universal Catalog で、特定のアスペクト値を持つ組織またはプロジェクトのすべてのデータを検索できます。クエリの例については、このドキュメントの検索クエリの例をご覧ください。

結果の Dataplex Universal Catalog アスペクトは、BigQuery テーブルと同じプロジェクトとリージョンに保存されます。

アスペクト フィールド

Sensitive Data Protection job result アスペクトには次のフィールドがあります。

ジョブ名
検査ジョブの完全なリソース名(例: projects/example-project/locations/us/dlpJobs/i-8992079400000000000)。
InfoType の数
検査ジョブが検索した infoType の名前(検査構成で指定)と、各 infoType の検出数。結果がない infoType のカウントは 0 です。
終了時刻
検査ジョブが終了した日時。
Is Full Scan
検査ジョブがテーブル内のすべての行をスキャンしたかどうか。たとえば、検査ジョブでサンプリングが有効になっている場合、このフィールドの値は False になります。
検出結果あり
検査ジョブでスキャンした infoType が検出されたかどうか。

Dataplex API を有効にする

アスペクトを追加するデータを含む各プロジェクトで、Dataplex API を有効にする必要があります。このセクションでは、単一のプロジェクトまたは組織またはフォルダ内のすべてのプロジェクトで Dataplex API を有効にする方法について説明します。

単一のプロジェクトで Dataplex API を有効にする

  1. Dataplex API を有効にするプロジェクトを選択します。

    プロジェクト セレクタに移動

  2. Enable the Dataplex API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

組織またはフォルダ内のすべてのプロジェクトで Dataplex API を有効にする

このセクションでは、組織またはフォルダ内のすべてのプロジェクトを検索し、それらの各プロジェクトで Dataplex API を有効にするスクリプトについて説明します。

組織またはフォルダ内のすべてのプロジェクトで Dataplex API を有効にするために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

  • 組織またはフォルダに対する Cloud Asset 閲覧者 roles/cloudasset.viewer
  • Dataplex API を有効にする各プロジェクトに対する DLP ユーザー roles/dlp.user

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、組織またはフォルダ内のすべてのプロジェクトで Dataplex API を有効にするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

組織またはフォルダ内のすべてのプロジェクトで Dataplex API を有効にするには、次の権限が必要です。

  • 組織またはフォルダ内のすべてのプロジェクトを検索する: 組織またはフォルダに対する cloudasset.assets.searchAllResources
  • Dataplex API を有効にするには: Dataplex API を有効にする各プロジェクトに対する serviceusage.services.use

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

組織またはフォルダ内のすべてのプロジェクトで Dataplex API を有効にするには、次の操作を行います。

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. 次のスクリプトを実行します。

    #!/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
  3. アスペクトを表示するためのロールと権限

    BigQuery テーブルに関連付けられたアスペクトを検索するために必要な権限を取得するには、テーブルに対する次の IAM ロールを付与するよう管理者に依頼してください。

    ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

    これらの事前定義ロールには、BigQuery テーブルに関連付けられたアスペクトを検索するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

    必要な権限

    BigQuery テーブルに関連付けられたアスペクトを検索するには、次の権限が必要です。

    • Dataplex Universal Catalog エントリを表示する:
      • dataplex.entries.list
      • dataplex.entries.get
    • BigQuery データセットとテーブルを表示する:
      • bigquery.datasets.get
      • bigquery.tables.get

    カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

    Dataplex Universal Catalog の使用に必要な権限の詳細については、Dataplex Universal Catalog の IAM 権限をご覧ください。

    機密データの保護の検査ジョブを構成して実行する

    機密データの保護の検査ジョブは、 Google Cloud コンソールまたは DLP API を使用して構成および実行できます。

    コンソール

    1. Google Cloud コンソールで、[ジョブまたはジョブトリガーを作成] ページに移動します。

      [ジョブまたはジョブトリガーを作成] に移動

    2. プロジェクトを選択します。
    3. 必要な検査ジョブの詳細と、検査する BigQuery テーブルの詳細を入力します。手順については、BigQuery テーブルを検査するをご覧ください。Sensitive Data Protection で検査できる情報の種類の一覧については、infoType 検出器リファレンスをご覧ください。
    4. [アクションを追加] で、[Dataplex Universal Catalog に公開] を有効にします。
    5. [作成] をクリックします。ジョブはすぐに実行されます。

    REST

    次の例では、BigQuery テーブルを検査し、結果を Dataplex Universal Catalog に送信する projects.locations.dlpJobs.create リクエストを送信します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です。
    • LOCATION: リクエストを処理するリージョンまたはマルチリージョン(europe-west1us など)。使用可能なロケーションについては、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 を使用して検査ジョブの結果を取得する方法については、ジョブを取得するをご覧ください。

    検索クエリの例

    このセクションでは、Dataplex Universal Catalog で特定のアスペクト値を持つ組織やプロジェクトのデータを検索するために使用できる検索クエリの例を示します。

    検索できるのは、アクセス権を持つデータだけです。データ アクセスは IAM 権限によって制御されます。詳細については、このドキュメントのアスペクトを表示するためのロールと権限をご覧ください。

    これらのクエリ例は、Dataplex Universal Catalog の [検索] ページの [検索] フィールドに入力できます。

    検索に移動

    クエリの作成方法については、Dataplex Universal 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
    

    完全に検査されたテーブルのエントリを見つける

    次のクエリは、機密データの保護が行ごとに検査したテーブルのエントリを返します。

    aspect:sensitive-data-protection-job-result.isFullScan=True
    

    完全に検査されなかったテーブルのエントリを見つける

    次のクエリは、機密データの保護がサンプリングによって検査したテーブルのエントリを返します。

    aspect:sensitive-data-protection-job-result.isFullScan=False