Data Masking/Tokenization from Cloud Storage to BigQuery(using Cloud DLP)テンプレート

Data Masking/Tokenization from Cloud Storage to BigQuery テンプレートでは、Sensitive Data Protection を使用して、次の処理を行うストリーミング パイプラインを作成します。

  1. Cloud Storage バケットから CSV ファイルを読み取る。
  2. 匿名化のために Cloud Data Loss Prevention API(Sensitive Data Protection の一部)を呼び出す。
  3. 匿名化されたデータを指定した BigQuery テーブルに書き込む。

このテンプレートでは、Sensitive Data Protection の検査テンプレートと Sensitive Data Protection の匿名化テンプレートの両方を使用できます。そのため、このテンプレートは次の両方のタスクをサポートします。

  • 機密情報の可能性がある情報を検査し、データを匿名化する。
  • 列の匿名化が指定されていて、検査が不要な構造化データを匿名化する。

このテンプレートでは、匿名化テンプレートの場所にリージョンパスは使用できません。グローバルパスのみがサポートされています。

パイプラインの要件

  • トークン化する入力データが存在している必要があります。
  • Sensitive Data Protection テンプレート(DeidentifyTemplate や InspectTemplate)が存在している必要があります。詳細については、Sensitive Data Protection テンプレートをご覧ください。
  • BigQuery データセットが存在している必要があります。

テンプレートのパラメータ

パラメータ 説明
inputFilePattern 入力データレコードを読み込む CSV ファイル。ワイルドカードも使用できます。例: gs://mybucket/my_csv_filename.csvgs://mybucket/file-*.csv
dlpProjectId DLP API リソースを所有する Sensitive Data Protection プロジェクト ID。この Sensitive Data Protection プロジェクトは、Sensitive Data Protection テンプレートを所有するプロジェクトと同じプロジェクトにすることも、別のプロジェクトにすることもできます。たとえば、my_dlp_api_project のようにします。
deidentifyTemplateName API リクエストに使用する Sensitive Data Protection の匿名化テンプレート。projects/{template_project_id}/deidentifyTemplates/{deIdTemplateId} のパターンで指定します。たとえば、projects/my_project/deidentifyTemplates/100 のようにします。
datasetName トークン化された結果を送信するための BigQuery データセット。
batchSize 検索やトークン化解除するデータを送信するためのチャンク / バッチサイズ。CSV ファイルの場合、batchSize は全体の行数です。レコードのサイズとファイルのサイズに基づいてバッチサイズを決定する必要があります。DLP API では、ペイロードのサイズが API 呼び出しごとに 524 KB に制限されます。
inspectTemplateName (省略可)API リクエストに使用する Sensitive Data Protection 検査テンプレート。 projects/{template_project_id}/identifyTemplates/{idTemplateId} のパターンで指定します。たとえば、projects/my_project/identifyTemplates/100 のようにします。

テンプレートを実行する

コンソール

  1. Dataflow の [テンプレートからジョブを作成] ページに移動します。
  2. [テンプレートからジョブを作成] に移動
  3. [ジョブ名] フィールドに、固有のジョブ名を入力します。
  4. (省略可)[リージョン エンドポイント] で、プルダウン メニューから値を選択します。デフォルトのリージョンは us-central1 です。

    Dataflow ジョブを実行できるリージョンのリストについては、Dataflow のロケーションをご覧ください。

  5. [Dataflow テンプレート] プルダウン メニューから、the Data Masking/Tokenization from Cloud Storage to BigQuery (using Cloud DLP) template を選択します。
  6. 表示されたパラメータ フィールドに、パラメータ値を入力します。
  7. [ジョブを実行] をクリックします。

gcloud

シェルまたはターミナルで、テンプレートを実行します。

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Stream_DLP_GCS_Text_to_BigQuery \
    --region REGION_NAME \
    --staging-location STAGING_LOCATION \
    --parameters \
inputFilePattern=INPUT_DATA,\
datasetName=DATASET_NAME,\
batchSize=BATCH_SIZE_VALUE,\
dlpProjectId=DLP_API_PROJECT_ID,\
deidentifyTemplateName=projects/TEMPLATE_PROJECT_ID/deidentifyTemplates/DEIDENTIFY_TEMPLATE,\
inspectTemplateName=projects/TEMPLATE_PROJECT_ID/identifyTemplates/INSPECT_TEMPLATE_NUMBER

次のように置き換えます。

  • DLP_API_PROJECT_ID: DLP API プロジェクト ID
  • JOB_NAME: 一意の任意のジョブ名
  • REGION_NAME: Dataflow ジョブをデプロイするリージョン(例: us-central1
  • VERSION: 使用するテンプレートのバージョン

    使用できる値は次のとおりです。

    • latest: 最新バージョンのテンプレートを使用します。このテンプレートは、バケット内で日付のない親フォルダ(gs://dataflow-templates-REGION_NAME/latest/)にあります。
    • バージョン名(例: 2023-09-12-00_RC00)。特定のバージョンのテンプレートを使用します。このテンプレートは、バケット内で対応する日付の親フォルダ(gs://dataflow-templates-REGION_NAME/)にあります。
  • STAGING_LOCATION: ローカル ファイルをステージングする場所(例: gs://your-bucket/staging
  • INPUT_DATA: 入力ファイルのパス
  • DEIDENTIFY_TEMPLATE: Sensitive Data Protection 匿名化テンプレート番号
  • DATASET_NAME: BigQuery データセット名
  • INSPECT_TEMPLATE_NUMBER: Sensitive Data Protection 検査テンプレート番号
  • BATCH_SIZE_VALUE: バッチサイズ(CSV ファイルの場合は API ごとの行数)

REST

REST API を使用してテンプレートを実行するには、HTTP POST リクエストを送信します。API とその認可スコープの詳細については、projects.templates.launch をご覧ください。

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/Stream_DLP_GCS_Text_to_BigQuery
{
   "jobName": "JOB_NAME",
   "environment": {
       "ipConfiguration": "WORKER_IP_UNSPECIFIED",
       "additionalExperiments": []
   },
   "parameters": {
      "inputFilePattern":INPUT_DATA,
      "datasetName": "DATASET_NAME",
      "batchSize": "BATCH_SIZE_VALUE",
      "dlpProjectId": "DLP_API_PROJECT_ID",
      "deidentifyTemplateName": "projects/TEMPLATE_PROJECT_ID/deidentifyTemplates/DEIDENTIFY_TEMPLATE",
      "inspectTemplateName": "projects/TEMPLATE_PROJECT_ID/identifyTemplates/INSPECT_TEMPLATE_NUMBER"
   }
}

次のように置き換えます。

  • PROJECT_ID: Dataflow ジョブを実行する Google Cloud プロジェクトの ID
  • DLP_API_PROJECT_ID: DLP API プロジェクト ID
  • JOB_NAME: 一意の任意のジョブ名
  • LOCATION: Dataflow ジョブをデプロイするリージョン(例: us-central1
  • VERSION: 使用するテンプレートのバージョン

    使用できる値は次のとおりです。

    • latest: 最新バージョンのテンプレートを使用します。このテンプレートは、バケット内で日付のない親フォルダ(gs://dataflow-templates-REGION_NAME/latest/)にあります。
    • バージョン名(例: 2023-09-12-00_RC00)。特定のバージョンのテンプレートを使用します。このテンプレートは、バケット内で対応する日付の親フォルダ(gs://dataflow-templates-REGION_NAME/)にあります。
  • STAGING_LOCATION: ローカル ファイルをステージングする場所(例: gs://your-bucket/staging
  • INPUT_DATA: 入力ファイルのパス
  • DEIDENTIFY_TEMPLATE: Sensitive Data Protection 匿名化テンプレート番号
  • DATASET_NAME: BigQuery データセット名
  • INSPECT_TEMPLATE_NUMBER: Sensitive Data Protection 検査テンプレート番号
  • BATCH_SIZE_VALUE: バッチサイズ(CSV ファイルの場合は API ごとの行数)

次のステップ