このチュートリアルでは、PII データセットの DLP 匿名化変換テンプレートの作成チュートリアルで使用したサンプル データセットを匿名化するために、自動化された Dataflow パイプラインを実行する方法について説明します。サンプル データセットには、大量の個人情報(PII)が含まれています。
このドキュメントはシリーズの一部です。
- Cloud DLP を使用した大規模なデータセットにおける PII の匿名化と再識別
- PII データセット用の Cloud DLP 匿名化変換テンプレートの作成
- 自動化された Dataflow パイプラインの実行による PII データセットの匿名化(このドキュメント)
- BigQuery での PII データセットの検証と自動化されたパイプラインを使用した再識別
このチュートリアルでは、読者がシェル スクリプトと Dataflow パイプラインに精通していることを前提としています。
リファレンス アーキテクチャ
このチュートリアルでは、次の図に示すデータ匿名化パイプラインについて説明します。
データ匿名化ストリーミング パイプラインは、Dataflow を使用してテキスト コンテンツ内の機密データを匿名化します。このパイプラインは、複数の変換やユースケースで再利用できます。
目標
- Dataflow パイプラインをトリガーしてモニタリングし、サンプル データセットを匿名化します。
- パイプラインの背後にあるコードを理解します。
費用
このチュートリアルでは、課金対象である次の Google Cloud コンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。新しい Google Cloud ユーザーは無料トライアルをご利用いただけます。
このチュートリアルを終了した後、作成したリソースを削除すると、それ以上の請求は発生しません。詳しくは、クリーンアップをご覧ください。
始める前に
- シリーズのパート 2 を完了します。
パイプライン パラメータの確認
このチュートリアルでは、Apache Beam Java SDK を使用して開発された Dataflow パイプラインを使用します。大規模なデータ関連の一般的なタスクを繰り返し解決するために、Dataflow には Google 提供のテンプレートというフレームワークが用意されています。これらのテンプレートを使用すると、パイプライン コードの記述や保守を行う必要がなくなります。このチュートリアルでは、次のパラメータで自動化された Cloud DLP を使用した Cloud Storage から BigQuery へのデータ マスキング / トークン化パイプラインをトリガーします。
パイプライン パラメータ | 値 | 注 |
---|---|---|
numWorkers
|
5 | デフォルトで設定 |
maxNumWorkers
|
10 | |
machineType
|
n1-standard-4
|
|
pollingInterval
|
30 秒 | |
windowInterval
|
30 秒 | |
inputFilePattern
|
gs://${DATA_STORAGE_BUCKET}/CCRecords_*.csv
|
チュートリアルのパート 2 で作成されます。 |
deidentifyTemplateName
|
${DEID_TEMPLATE_NAME}
|
|
inspectTemplateName
|
${INSPECT_TEMPLATE_NAME}
|
|
datasetName
|
deid_dataset
|
|
batchSize
|
500
|
バッチサイズが 500 で合計 10 万レコードの場合、200 の API 呼び出しが同時に実行されます。デフォルトでは、バッチサイズは 100 に設定されています。
|
dlpProjectName
|
${PROJECT_ID}
|
このチュートリアルでは、デフォルトの Google Cloud プロジェクトが使用されます。 |
jobId
|
my-deid-job
|
Dataflow のジョブ ID |
パイプラインの実行
Cloud Shell で、アプリケーションのデフォルト認証情報を設定します。
gcloud auth activate-service-account \ ${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com \ --key-file=service-account-key.json --project=${PROJECT_ID} export GOOGLE_APPLICATION_CREDENTIALS=service-account-key.json
パイプラインの実行:
export JOB_ID=my-deid-job gcloud dataflow jobs run ${JOB_ID} \ --gcs-location gs://dataflow-templates/latest/Stream_DLP_GCS_Text_to_BigQuery \ --region ${REGION} --parameters \ "inputFilePattern=gs://${DATA_STORAGE_BUCKET}/CCRecords_1564602825.csv,dlpProjectId=${PROJECT_ID},deidentifyTemplateName=${DEID_TEMPLATE_NAME},inspectTemplateName=${INSPECT_TEMPLATE_NAME},datasetName=deid_dataset,batchSize=500"
パイプラインをモニタリングするには、Google Cloud Console で [Dataflow] ページに移動します。
ジョブ ID(
my-deid-job
)をクリックします。ジョブのグラフが表示されます。パイプラインによって処理されたデータの量を検証するには、[Process Tokenized Data] をクリックします。
DLP-Tokenization 変換に追加される要素の数は 200 で、Process Tokenized Data 変換に追加される要素の数は 100,000 です。
BigQuery テーブルに挿入されたレコードの合計数を検証するには、[
Write To BQ
] をクリックします。Process Tokenized Data 変換に追加される要素の数は 100,000 です。
パイプラインでの例外の処理
DLP API では、デフォルトで 1 分あたりの API 呼び出しは 600 に制限されています。パイプラインは、指定されたバッチサイズに基づいてリクエストを並列処理します。
パイプラインは最大 10 個の n1-standard-4
ワーカーを持つように構成されています。大規模なデータセットを Google 提供のテンプレートのデフォルト構成よりも高速に処理する必要がある場合は、パイプラインをカスタマイズしてワーカー数とマシンタイプを更新します。ワーカー数を増やす場合は、Cloud プロジェクトの vCPU 数、使用中の IP アドレス、SSD のデフォルトの割り当てを増やす必要があります。
パイプライン コードの確認
完全なパイプライン コードは GitHub リポジトリにあります。
このパイプラインは、組み込みの Beam File IO 変換を使用して、パイプラインの自動バージョン用に構成された新しいファイルを 30 秒ごとにポーリングします。パイプラインは、停止または終了するまで継続的に新しいファイルを探します。
読み取り可能なファイルには同じヘッダーを含めることができます。すべての要素のヘッダーを作成する代わりに、パイプラインでは副入力と呼ばれるデザイン パターンを使用します。ヘッダーはウィンドウに対して 1 回だけ作成して、他の変換への入力として渡すことができます。
Cloud DLP の最大ペイロード サイズは API リクエストあたり 512 KB で、1 分あたりの同時 API 呼び出しは 600 です。この制限を管理するために、パイプラインではユーザー定義のバッチサイズをパラメータとして使用します。たとえば、サンプル データセットには 50 万行あります。バッチサイズが 1000 の場合、各リクエストが最大ペイロード サイズを超えないという前提で、500 の DLP API 呼び出しが並行して実行されます。バッチサイズを小さくすると、API 呼び出しの回数が増えます。このバッチサイズにより
quota resource exception
が発生する可能性があります。割り当ての上限を増やす必要がある場合は、割り当ての増加をご覧ください。パイプラインでは、組み込みの BigQuery IO 変換コネクタを使用して BigQuery に書き込みます。このコネクタは、ダイナミック デスティネーション機能を使用して BigQuery テーブルとスキーマを自動的に作成します。低レイテンシを実現するために、パイプラインでは BigQuery のストリーミング挿入も使用します。
このチュートリアルは正常に完了しました。Cloud DLP テンプレートを使用して自動化された匿名化パイプラインをトリガーし、大規模なデータセットを処理しました。次のチュートリアルでは、BigQuery で匿名化されたデータセットを検証し、別の Dataflow パイプラインを使用してデータを再識別します。
クリーンアップ
シリーズのチュートリアルを続行する予定がない場合、課金を停止する最も簡単な方法は、チュートリアル用に作成した Cloud プロジェクトを削除することです。また、リソースを個別に削除することもできます。
プロジェクトの削除
- Cloud Console で [リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
次のステップ
- BigQuery での匿名化されたデータの検証と PII データの再識別。
- PII データセット用の Cloud DLP 匿名化変換テンプレートの作成。
- Cloud DLP を使用した大規模なデータセットにおける PII の匿名化と再識別。
- GitHub の Dataflow と Cloud DLP を使用した BigQuery 内のセンシティブ データの移行のリポジトリにあるサンプルコードを確認する。
- その他のパターン認識ソリューションを確認する。
- Google Cloud のその他の機能を試す。チュートリアルをご覧ください。