ストレージ リポジトリに保存されている機密データを適切に管理する第一歩は、ストレージの分類です。これは、機密データが置かれているリポジトリ内の場所、機密データのタイプ、機密データの使用方法を識別することです。これを知っていると、アクセス制御および共有権限を適切に設定するのに役立ち、継続的なモニタリング計画に含めることができます。
機密データの保護により、Cloud Storage のロケーション、Datastore の種類、BigQuery テーブルに保存されている機密データを検出して分類できます。Cloud Storage の領域にあるファイルをスキャンする場合、機密データの保護では、バイナリ、テキスト、画像、Microsoft Word、Microsoft Excel、Microsoft PowerPoint、PDF、Apache Avro ファイルのスキャンがサポートされます。認識されない形式のファイルは、バイナリ ファイルとしてスキャンされます。サポートされているファイル形式の詳細については、サポートされているファイル形式をご覧ください。
ストレージとデータベースの機密データを検査するには、データのロケーションと、機密データの保護が必要とする機密データの種類を指定します。機密データの保護では、指定された場所のデータを検査し、コンテンツ内の infoType やlikelihood の値などに関する詳細を使用できるようにするジョブを開始します。
ストレージとデータベースの検査は、Google Cloud コンソールの機密データの保護、RESTful DLP API、または機密データの保護クライアント ライブラリ(複数の言語で利用可能)を使用してプログラムから設定できます。
このトピックには以下の情報が含まれます。
- Google Cloud Storage リポジトリとデータベースのスキャンを設定するためのベスト プラクティス。
- Google Cloud コンソールで機密データの保護を使用して検査スキャンを設定する手順と、オプションで定期的な検査スキャンをスケジュールする手順。
- Google Cloud Storage の各リポジトリ タイプ(Cloud Storage、Datastore モードの Firestore(Datastore)、BigQuery)別の JSON の例とコードサンプル。
- スキャンジョブの構成オプションの詳細。
- スキャン結果の取得方法と、正常に行われた各リクエストから作成されたスキャンジョブの管理方法に関する手順。
ベスト プラクティス
スキャンを特定して優先順位を付ける
まずアセットを評価し、どのアセットに対するスキャンの優先度を最も高くするかを指定することが重要です。開始直後は、分類が必要なデータのバックログが大量にあるため、すべてをすぐにスキャンすることはできません。アクセス頻度が高いデータ、大勢がアクセスできるデータ、不明なデータなど、潜在的なリスクが最も高いデータを最初に選択します。
機密データの保護がデータにアクセスできることを確認する
機密データの保護は、スキャン対象のデータにアクセスできる必要があります。機密データの保護のサービス アカウントにリソースの読み取りを許可してください。
最初のスキャンの範囲を制限する
最良の結果を得るには、最初のジョブで全データをスキャンするのではなく、範囲を制限します。1 つのテーブル、1 つのバケット、または少数のファイルから開始し、サンプリングを使用します。最初のスキャンの範囲を限定することで、有効にする検出器と除外ルールを効果的に決定できます。これにより、誤検出が減り、検出結果がより有意なものなります。誤検出や役に立たない検出結果により、リスクの評価が難しくなる可能性があるため、その必要がないときにすべての infoType をオンにすることは避けてください。DATE
、TIME
、DOMAIN_NAME
、URL
などの infoType は幅広い検出結果に一致するため、特定のシナリオを除き、大規模なデータスキャンでの使用は逆効果になる可能性があります。
CSV、TSV、Avro ファイルなどの構造化ファイルをサンプリングする場合、サンプルサイズがファイルのヘッダーとデータ行の全体に対応できるほど十分なサイズであることを確認してください。詳細については、構造化解析モードで構造化ファイルをスキャンするをご覧ください。
スキャンのスケジュールを設定する
機密データの保護のジョブトリガーを使用して、スキャンを自動的に実行し、毎日、毎週、または四半期ごとに検出結果を生成します。 また、前回のスキャン以降に変更されたデータのみを検査するように構成することもできるため、時間とコストを節約できます。定期的にスキャンを実行すると、スキャン結果の傾向や異常を特定できます。
ジョブのレイテンシ
ジョブとジョブトリガーに対するサービスレベル目標(SLO)は保証されません。レイテンシは、スキャンするデータの量、スキャン対象のストレージ リポジトリ、スキャン対象の infoType のタイプと数、ジョブが処理されるリージョン、そのリージョンで使用可能なコンピューティング リソースなどさまざまな要因に影響を受けます。したがって、検査ジョブのレイテンシは事前に決定できません。
ジョブのレイテンシを短縮するため、次の方法を試すことができます。
- ジョブまたはジョブトリガーでサンプリングを利用できる場合は、有効にします。
不要な infoType は有効にしないでください。以下は特定のシナリオで有用ですが、これらの infoType により、リクエストの実行速度がこれらを含まないリクエストよりもはるかに遅くなる可能性があります。
PERSON_NAME
FEMALE_NAME
MALE_NAME
FIRST_NAME
LAST_NAME
DATE_OF_BIRTH
LOCATION
STREET_ADDRESS
ORGANIZATION_NAME
infoType は常に明示的に指定します。空の infoType リストを使用しないでください。
可能であれば、処理を行う別のリージョンを使用します。
これらの手法を試してもジョブに関するレイテンシの問題が解決しない場合は、ジョブではなく content.inspect
リクエストまたは content.deidentify
リクエストの使用を検討してください。これらのメソッドは、サービスレベル契約の対象となります。詳細については、機密データの保護のサービスレベル契約をご覧ください。
準備
このトピックで説明する手順は、次のことを前提としています。
課金を有効にしている。
機密データの保護を有効にしている。
ストレージの分類には OAuth スコープ https://www.googleapis.com/auth/cloud-platform
が必要です。詳細については、DLP API に対する認証をご覧ください。
Cloud Storage のロケーションを検査する
Cloud Storage のローケーションの機密データの保護の検査は、Google Cloud コンソール、REST または RPC リクエストでの Cloud DLP API を使用、またはクライアント ライブラリ(複数の言語で利用可能)を使用してプログラムから設定できます。次の JSON とコードサンプルに含まれるパラメータの詳細については、このトピックで後述する「ストレージ検査を構成する」をご覧ください。
機密データの保護は、ファイル拡張子とメディア(MIME)タイプを使用して、スキャンするファイルの形式と、適用するスキャンモードを識別します。たとえば、機密データの保護では、通常は構造化解析モードでスキャンされる CSV ファイルとしてファイルが構造化されている場合でも、書式なしテキストモードで .txt
ファイルをスキャンします。
機密データの保護を使用して Cloud Storage バケットのスキャンジョブを設定するには、次のようにします。
コンソール
このセクションでは、Cloud Storage バケットまたはフォルダの検査方法について説明します。機密データの保護でデータの匿名化コピーも作成する場合は、Google Cloud コンソールを使用して Cloud Storage に保存されている機密データを匿名化するをご覧ください。
Google Cloud コンソール の [機密データの保護] セクションで、[ジョブまたはジョブトリガーを作成] ページに移動します。
機密データの保護ジョブの情報を入力し、[続行] をクリックして各手順を完了します。
ステップ 1: 入力データの選択では、[名前] フィールドに値を入力して、ジョブに名前を付けます。[ロケーション] セクションで、[ストレージの種類] メニューから [Google Cloud Storage] を選択し、スキャンするデータのロケーションを入力します。[サンプリング] セクションは、データに対してサンプル スキャンを実行するように事前構成されています。大量のデータがある場合、[バケット内のスキャン対象オブジェクトの割合] フィールドを調整することでリソースを節約できます。詳細については、入力データの選択をご覧ください。
(省略可)ステップ 2: 検出の構成では、「infoType」と呼ばれる検索するデータのタイプを構成できます。事前定義済みの infoType リストから選択するか、テンプレートが存在する場合はテンプレートを選択することもできます。詳細については、検出の構成をご覧ください。
(省略可)ステップ 3: アクションの追加では、[メールで通知] が有効になっていることを確認します。
[BigQuery に保存] を有効にして、機密データの保護の検出結果を BigQuery テーブルに公開します。次のフィールドを入力します。
- [プロジェクト ID] には、結果を保存するプロジェクト ID を入力します。
- [データセット ID] には、結果を保存するデータセットの名前を入力します。
- (省略可)[テーブル ID] には、結果を保存するテーブルの名前を入力します。テーブル ID が指定されていない場合、デフォルト名は
dlp_googleapis_[DATE]_1234567890
のような新しいテーブルに割り当てられます。[DATE]
は、スキャンの実行日を表します。既存のテーブルを指定した場合は、検出結果がそのテーブルに追加されます。 - (省略可)infoType 検出器に一致する文字列を含めるには、[見積もりを含める] を有効にします。引用は機密である可能性があるため、デフォルトで機密データの保護では検出結果に含まれません。
データが BigQuery テーブルに書き込まれると、課金と割り当て使用量は、宛先テーブルが含まれるプロジェクトに適用されます。
データの匿名化されたコピーを作成する場合は、[匿名化されたコピーを作成] を有効にします。詳細については、Google Cloud コンソールを使用して Cloud Storage に保存されている機密データを匿名化するをご覧ください。
Pub/Sub、Security Command Center、Data Catalog、Cloud Monitoring に結果を保存することもできます。詳細については、アクションの追加をご覧ください。
(省略可)ステップ 4: スケジュールでは、スキャンを実行するのが 1 度のみの場合、このメニューを [なし] のままにします。スキャンを定期的に実行するには、[周期スケジュールでジョブを実行するトリガーを作成] をクリックします。詳細については、スケジュールをご覧ください。
[作成] をクリックします。
機密データの保護ジョブが完了すると、ジョブの詳細ページにリダイレクトされ、メールで通知されます。検査の結果はジョブの詳細ページで確認できます。
(省略可)機密データの保護の検出結果を BigQuery に公開することを選択した場合は、[ジョブの詳細] ページで [検出結果を BigQuery で表示] をクリックすると、BigQuery ウェブ UI にテーブルが開きます。その後、テーブルをクエリし、検出結果を分析できます。BigQuery での結果のクエリの詳細については、BigQuery で機密データ保護の検出結果をクエリするをご覧ください。
プロトコル
以下は、POST リクエストによって、指定された機密データの保護 REST エンドポイントに送信できるサンプル JSON です。この JSON の例では、DLP API を使用して Cloud Storage バケットを検査する方法について説明します。リクエストに含まれるパラメータの詳細については、このトピックで後述する「ストレージ検査を構成する」をご覧ください。
これは、content.inspect
のリファレンスページの API Explorer で簡単に試すことができます。
API Explorer でリクエストが成功した場合でも、新しいスキャンジョブが作成されます。スキャンジョブを制御する方法については、このトピックで後述する「検査結果を取得する」をご覧ください。JSON を使用して DLP API にリクエストを送信する方法については、JSON クイックスタートをご覧ください。
JSON 入力:
POST https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/dlpJobs?key={YOUR_API_KEY}
{
"inspectJob":{
"storageConfig":{
"cloudStorageOptions":{
"fileSet":{
"url":"gs://[BUCKET-NAME]/*"
},
"bytesLimitPerFile":"1073741824"
},
"timespanConfig":{
"startTime":"2017-11-13T12:34:29.965633345Z",
"endTime":"2018-01-05T04:45:04.240912125Z"
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"PHONE_NUMBER"
}
],
"excludeInfoTypes":false,
"includeQuote":true,
"minLikelihood":"LIKELY"
},
"actions":[
{
"saveFindings":{
"outputConfig":{
"table":{
"projectId":"[PROJECT-ID]",
"datasetId":"[DATASET-ID]"
}
}
}
}
]
}
}
JSON 出力:
{
"name":"projects/[PROJECT-ID]/dlpJobs/[JOB-ID]",
"type":"INSPECT_JOB",
"state":"PENDING",
"inspectDetails":{
"requestedOptions":{
"snapshotInspectTemplate":{
},
"jobConfig":{
"storageConfig":{
"cloudStorageOptions":{
"fileSet":{
"url":"gs://[BUCKET-NAME]/*"
},
"bytesLimitPerFile":"1073741824"
},
"timespanConfig":{
"startTime":"2017-11-13T12:34:29.965633345Z",
"endTime":"2018-01-05T04:45:04.240912125Z"
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"PHONE_NUMBER"
}
],
"minLikelihood":"LIKELY",
"limits":{
},
"includeQuote":true
},
"actions":[
{
"saveFindings":{
"outputConfig":{
"table":{
"projectId":"[PROJECT-ID]",
"datasetId":"[DATASET-ID]",
"tableId":"[NEW-TABLE-ID]"
}
}
}
}
]
}
}
},
"createTime":"2018-11-07T18:01:14.225Z"
}
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Datastore の種類を検査する
Datastore の種類の検査は、Google Cloud Console、REST や RPC リクエストでの DLP API、またはクライアント ライブラリ(複数の言語で利用可能)を使用するプログラムから設定できます。
機密データの保護を使用して Datastore の種類のスキャンジョブを設定するには:
コンソール
機密データの保護を使用して Datastore の種類のスキャンジョブを設定するには:
Google Cloud Console の [機密データ保持] セクションで、[ジョブまたはジョブトリガーを作成] ページに移動します。
機密データの保護ジョブの情報を入力し、[続行] をクリックして各手順を完了します。
ステップ 1: 入力データの選択では、スキャンするプロジェクトの識別子、名前空間(オプション)、種類を入力します。詳細については、入力データの選択をご覧ください。
(省略可)ステップ 2: 検出の構成では、「infoType」と呼ばれる検索するデータのタイプを構成できます。事前定義済みの infoType リストから選択するか、テンプレートが存在する場合はテンプレートを選択することもできます。詳細については、検出の構成をご覧ください。
(省略可)ステップ 3: アクションの追加では、[メールで通知] が有効になっていることを確認します。
[BigQuery に保存] を有効にして、機密データの保護の検出結果を BigQuery テーブルに公開します。次のフィールドを入力します。
- [プロジェクト ID] には、結果を保存するプロジェクト ID を入力します。
- [データセット ID] には、結果を保存するデータセットの名前を入力します。
- (省略可)[テーブル ID] には、結果を保存するテーブルの名前を入力します。テーブル ID が指定されていない場合、デフォルト名は
dlp_googleapis_[DATE]_1234567890
のように新しいテーブルに割り当てられます。既存のテーブルを指定した場合は、検出結果がそのテーブルに追加されます。
データが BigQuery テーブルに書き込まれると、課金と割り当て使用量は、宛先テーブルが含まれるプロジェクトに適用されます。
表示されるその他のアクションの詳細については、アクションの追加をご覧ください。
(省略可)ステップ 4: スケジュールでは、[期間を指定] または [周期スケジュールでジョブを実行するトリガーを作成] を選択して、期間またはスケジュールを構成します。詳細については、スケジュールをご覧ください。
[作成] をクリックします。
機密データの保護ジョブが完了すると、ジョブの詳細ページにリダイレクトされ、メールで通知されます。検査の結果はジョブの詳細ページで確認できます。
(省略可)機密データの保護の検出結果を BigQuery に公開することを選択した場合は、[ジョブの詳細] ページで [結果を BigQuery で表示] をクリックすると、BigQuery ウェブ UI にテーブルが開きます。その後、テーブルをクエリし、検出結果を分析できます。BigQuery での結果のクエリの詳細については、BigQuery で機密データの保護の検索結果をクエリするをご覧ください。
プロトコル
以下は、POST リクエストによって、指定された DLP API REST エンドポイントに送信できるサンプル JSON です。この JSON の例では、Cloud DLP API を使用して、Datastore の種類を検査する方法を示します。リクエストに含まれるパラメータの詳細については、このトピックで後述する「ストレージ検査を構成する」をご覧ください。
これは、dlpJobs.create
のリファレンスページの API Explorer で簡単に試すことができます。
API Explorer でリクエストが成功した場合でも、新しいスキャンジョブが作成されます。スキャンジョブを制御する方法については、このトピックで後述する検査結果を取得するをご覧ください。JSON を使用して DLP API にリクエストを送信する方法については、JSON クイックスタートをご覧ください。
JSON 入力:
POST https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/dlpJobs?key={YOUR_API_KEY}
{
"inspectJob":{
"storageConfig":{
"datastoreOptions":{
"kind":{
"name":"Example-Kind"
},
"partitionId":{
"namespaceId":"[NAMESPACE-ID]",
"projectId":"[PROJECT-ID]"
}
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"PHONE_NUMBER"
}
],
"excludeInfoTypes":false,
"includeQuote":true,
"minLikelihood":"LIKELY"
},
"actions":[
{
"saveFindings":{
"outputConfig":{
"table":{
"projectId":"[PROJECT-ID]",
"datasetId":"[BIGQUERY-DATASET-NAME]",
"tableId":"[BIGQUERY-TABLE-NAME]"
}
}
}
}
]
}
}
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
BigQuery テーブルを検査する
BigQuery テーブルの検査は、REST リクエストで機密データの保護を使用するか、クライアント ライブラリ(複数の言語で利用可能)を使用するプログラムから設定できます。
機密データの保護機能を使用して BigQuery テーブルのスキャン ジョブを設定するには:
コンソール
機密データの保護機能を使用して BigQuery テーブルのスキャン ジョブを設定するには:
Google Cloud Console の [機密データ保持] セクションで、[ジョブまたはジョブトリガーを作成] ページに移動します。
機密データの保護ジョブの情報を入力し、[続行] をクリックして各手順を完了します。
ステップ 1: 入力データの選択では、[名前] フィールドに値を入力して、ジョブに名前を付けます。[ロケーション] セクションで、[ストレージの種類] メニューから [BigQuery] を選択し、スキャンするテーブルの情報を入力します。
[サンプリング] セクションでは、データに対してサンプル スキャンを実行するように事前構成されています。大量のデータがある場合は、[行の上限] と [最大行数] フィールドを調整してリソースを節約します。詳細については、入力データの選択をご覧ください。
(省略可)各検出結果を、それを含む行にリンクできるようにする場合は、[識別フィールド] のフィールドを設定します。
テーブル内の各行を一意に識別する列の名前を入力します。必要に応じて、ドット表記を使用してネストされたフィールドを指定します。追加できるフィールドの数に制限はありません。
また、検出結果を BigQuery にエクスポートするには、[BigQuery に保存] アクションを有効にする必要があります。検出結果が BigQuery にエクスポートされると、各検出結果には識別フィールドのそれぞれの値が含まれます。詳細については、
identifyingFields
をご覧ください。(省略可)ステップ 2: 検出の構成では、「infoType」と呼ばれる検索するデータのタイプを構成できます。事前定義済みの infoType リストから選択するか、テンプレートが存在する場合はテンプレートを選択することもできます。詳細については、検出の構成をご覧ください。
(省略可)ステップ 3: アクションの追加では、[メールで通知] が有効になっていることを確認します。
[BigQuery に保存] を有効にして、機密データの保護の検出結果を BigQuery テーブルに公開します。次のフィールドを入力します。
- [プロジェクト ID] には、結果を保存するプロジェクト ID を入力します。
- [データセット ID] には、結果を保存するデータセットの名前を入力します。
- (省略可)[テーブル ID] には、結果を保存するテーブルの名前を入力します。テーブル ID が指定されていない場合、デフォルト名は
dlp_googleapis_[DATE]_1234567890
のように新しいテーブルに割り当てられます。既存のテーブルを指定した場合は、検出結果がそのテーブルに追加されます。
データが BigQuery テーブルに書き込まれると、課金と割り当て使用量は、宛先テーブルが含まれるプロジェクトに適用されます。
Pub/Sub、Security Command Center、Data Catalog に結果を保存することもできます。詳細については、アクションの追加をご覧ください。
(省略可)ステップ 4: スケジュールでは、スキャンを実行するのが 1 度のみの場合、このメニューを [なし] のままにします。スキャンを定期的に実行するには、[周期スケジュールでジョブを実行するトリガーを作成] をクリックします。詳細については、スケジュールをご覧ください。
[作成] をクリックします。
機密データの保護ジョブが完了すると、ジョブの詳細ページにリダイレクトされ、メールで通知されます。検査の結果はジョブの詳細ページで確認できます。
(省略可)機密データの保護の検出結果を BigQuery に公開することを選択した場合は、[ジョブの詳細] ページで [結果を BigQuery で表示] をクリックすると、BigQuery ウェブ UI にテーブルが開きます。その後、テーブルをクエリし、検出結果を分析できます。BigQuery での結果のクエリの詳細については、BigQuery で機密データの保護の検索結果をクエリするをご覧ください。
プロトコル
以下は、POST リクエストによって、指定された DLP API REST エンドポイントに送信できるサンプル JSON です。この JSON の例では、DLP API を使用して、BigQuery テーブルを検査する方法を示します。 リクエストに含まれるパラメータの詳細については、このトピックで後述する「ストレージ検査を構成する」をご覧ください。これは、dlpJobs.create
のリファレンスページの API Explorer で簡単に試すことができます。
API Explorer でリクエストが成功した場合でも、新しいスキャンジョブが作成されます。スキャンジョブを制御する方法については、このトピックで後述する「検査結果を取得する」をご覧ください。JSON を使用して DLP API にリクエストを送信する方法については、JSON クイックスタートをご覧ください。
JSON 入力:
POST https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/dlpJobs?key={YOUR_API_KEY}
{
"inspectJob":{
"storageConfig":{
"bigQueryOptions":{
"tableReference":{
"projectId":"[PROJECT-ID]",
"datasetId":"[BIGQUERY-DATASET-NAME]",
"tableId":"[BIGQUERY-TABLE-NAME]"
},
"identifyingFields":[
{
"name":"id"
}
]
},
"timespanConfig":{
"startTime":"2017-11-13T12:34:29.965633345Z ",
"endTime":"2018-01-05T04:45:04.240912125Z "
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"PHONE_NUMBER"
}
],
"excludeInfoTypes":false,
"includeQuote":true,
"minLikelihood":"LIKELY"
},
"actions":[
{
"saveFindings":{
"outputConfig":{
"table":{
"projectId":"[PROJECT-ID]",
"datasetId":"[BIGQUERY-DATASET-NAME]",
"tableId":"[BIGQUERY-TABLE-NAME]"
},
"outputSchema": "BASIC_COLUMNS"
}
}
}
]
}
}
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
ストレージ検査を構成する
Cloud Storage のロケーション、Datastore の種類、BigQuery のテーブルを検査するには、少なくともスキャンするデータの場所と対象を指定して、DLP API の projects.dlpJobs.create
メソッドにリクエストを送信します。これらの必須パラメータの他に、スキャン結果、サイズ、可能性のしきい値を書き込む場所を指定することもできます。リクエストが成功すると、DlpJob
オブジェクトのインスタンスが作成されます。これについては、「検査結果の取得」で説明しています。
使用可能な構成オプションの要約を以下に示します。
InspectJobConfig
オブジェクト: 検査ジョブの構成情報を指定します。InspectJobConfig
オブジェクトは、JobTriggers
オブジェクトでDlpJob
の作成をスケジュールするためにも使用されることに注意してください。このオブジェクトには次のものが含まれます。StorageConfig
オブジェクト: 必須。スキャンするストレージ リポジトリに関する詳細を指定します。スキャン対象のストレージ リポジトリのタイプに応じて、
StorageConfig
オブジェクトに次のいずれかを含める必要があります。CloudStorageOptions
オブジェクト: スキャンする Cloud Storage のバケットに関する情報を指定します。DatastoreOptions
オブジェクト: スキャンする Datastore のデータに関する情報を指定します。BigQueryOptions
オブジェクト: スキャンする BigQuery テーブル(および、オプションで識別フィールド)に関する情報を指定します。このオブジェクトでは、結果のサンプリングも有効になります。詳細については、後述の結果のサンプリングの有効化をご覧ください。TimespanConfig
オブジェクト: 省略可。スキャンに含める項目のタイムスパンを指定します。
InspectConfig
オブジェクト: 必須。スキャンの対象(infoType や可能性の値など)を指定します。InfoType
オブジェクト: 必須。スキャンする 1 つ以上の infoType 値。Likelihood
列挙型: 省略可。設定すると、機密データの保護は、この可能性しきい値以上の結果のみを返します。この列挙値を省略した場合のデフォルト値はPOSSIBLE
です。FindingLimits
オブジェクト: 省略可。このオブジェクトを設定すると、戻される結果の数に対する制限を指定できます。includeQuote
パラメータ: 省略可。デフォルトはfalse
です。true
に設定すると、トリガーされたデータからのコンテキスト データが、各結果に含められます。excludeInfoTypes
パラメータ: 省略可。デフォルトはfalse
です。true
に設定すると、スキャン結果から結果のタイプ情報が除外されます。CustomInfoType
オブジェクト: ユーザー作成の 1 つ以上のカスタム infoType。カスタム infoType の作成の詳細については、カスタム infoType 検出器の作成をご覧ください。
inspectTemplateName
文字列: 省略可。InspectConfig
オブジェクトにデフォルト値を入れるために使用するテンプレートを指定します。InspectConfig
をすでに指定している場合、テンプレートの値はマージされます。Action
オブジェクト: 省略可。ジョブの完了時に実行される 1 つ以上のアクション。各アクションは、リストされている順序で実行されます。ここでは、結果を書き込む場所や、通知を Pub/Sub トピックに公開するかどうかを指定します。
jobId
: 省略可。機密データの保護から返されるジョブの識別子。jobId
が省略されるか空の場合、システムがジョブの ID を作成します。指定すると、ジョブにこの ID 値が割り当てられます。ジョブ ID は一意でなければならず、また大文字、小文字、数字、ハイフンを含めることができます。つまり、正規表現[a-zA-Z\\d-]+
に一致する必要があります。
検査するコンテンツの量を制限する
BigQuery テーブルや Cloud Storage バケットをスキャンする場合、機密データの保護にはデータセットのサブセットをスキャンする方法が含まれます。この方法では、データセット全体をスキャンするというコストは発生せず、一方でスキャン結果のサンプリングを行うことができます。
次のセクションでは、Cloud Storage スキャンと BigQuery スキャンのサイズを制限する方法について説明します。
Cloud Storage のスキャンを制限する
スキャンするデータの量を制限することで、Cloud Storage でサンプリングを有効にできます。特定のサイズ未満のファイルのみや、特定の種類のファイルのみ、そして入力ファイルセット内のファイルの総数の特定割合のみをスキャンするように DLP API に指示できます。これを行うには、CloudStorageOptions
内の次のオプション フィールドを指定します。
bytesLimitPerFile
: ファイルからスキャンする最大バイト数を設定します。スキャンしたファイルのサイズがこの値より大きい場合、残りのバイトは省略されます。 このフィールドを設定しても、特定のファイル形式には影響しません。詳細については、ファイルごとにスキャンされるバイト数の制限をご覧ください。fileTypes[]
: スキャンに含めるFileTypes
をリストにします。次の列挙型を 1 つ以上設定できます。filesLimitPercent
: スキャンするファイルの数を入力のFileSet
の特定の割合に制限します。0
または100
を指定すると、制限は行われません。sampleMethod
: すべてのバイトをスキャンしない場合にバイトをサンプリングする方法。この値は、bytesLimitPerFile
と組合せて使用する場合にのみ、指定する意味があります。未指定の場合、スキャンは上から開始されます。このフィールドは、次の 2 つの値のいずれかに設定できます。TOP
: 上からスキャンを開始します。RANDOM_START
:bytesLimitPerFile
で指定されたサイズより大きい各ファイルについて、スキャンを開始するオフセットをランダムに選択します。スキャンされるバイトは連続しているバイトです。
次の例では、DLP API を使用して、人名が保存されている Cloud Storage バケットの 90% のサブセットをスキャンします。スキャンはデータセット内のランダムな位置から開始され、200 バイト未満のテキスト ファイルのみ対象となります。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
JSON 入力:
POST https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/dlpJobs?key={YOUR_API_KEY}
{
"inspectJob":{
"storageConfig":{
"cloudStorageOptions":{
"fileSet":{
"url":"gs://[BUCKET-NAME]/*"
},
"bytesLimitPerFile":"200",
"fileTypes":[
"TEXT_FILE"
],
"filesLimitPercent":90,
"sampleMethod":"RANDOM_START"
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"excludeInfoTypes":true,
"includeQuote":true,
"minLikelihood":"POSSIBLE"
},
"actions":[
{
"saveFindings":{
"outputConfig":{
"table":{
"projectId":"[PROJECT-ID]",
"datasetId":"testingdlp"
},
"outputSchema":"BASIC_COLUMNS"
}
}
}
]
}
}
POST リクエストの JSON 入力を指定したエンドポイントに送信した後、機密データの保護ジョブが作成され、API により次のレスポンスが送信されます。
JSON 出力:
{
"name":"projects/[PROJECT-ID]/dlpJobs/[JOB-ID]",
"type":"INSPECT_JOB",
"state":"PENDING",
"inspectDetails":{
"requestedOptions":{
"snapshotInspectTemplate":{
},
"jobConfig":{
"storageConfig":{
"cloudStorageOptions":{
"fileSet":{
"url":"gs://[BUCKET_NAME]/*"
},
"bytesLimitPerFile":"200",
"fileTypes":[
"TEXT_FILE"
],
"sampleMethod":"TOP",
"filesLimitPercent":90
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"minLikelihood":"POSSIBLE",
"limits":{
},
"includeQuote":true,
"excludeInfoTypes":true
},
"actions":[
{
"saveFindings":{
"outputConfig":{
"table":{
"projectId":"[PROJECT-ID]",
"datasetId":"[DATASET-ID]",
"tableId":"[TABLE-ID]"
},
"outputSchema":"BASIC_COLUMNS"
}
}
}
]
}
}
},
"createTime":"2018-05-30T22:22:08.279Z"
}
BigQuery のスキャンを制限する
スキャンするデータの量を制限することによって BigQuery でサンプリングを有効にするには、BigQueryOptions
内の次のオプション フィールドを指定します。
rowsLimit
: スキャンする行の最大数。テーブルにこの値より多くの行がある場合、残りの行は省略されます。これを設定しない場合、または 0 に設定した場合、すべての行がスキャンされます。rowsLimitPercent
: スキャンする行の最大割合(0~100)。残りの行は省略されます。この値を 0 または 100 に設定すると、制限は設定されません。デフォルトは 0 です。rowsLimit
とrowsLimitPercent
のいずれかのみを指定できます。sampleMethod
: すべての行をスキャンしない場合に行をサンプリングする方法。未指定の場合、スキャンは上から開始されます。このフィールドは、次の 2 つの値のいずれかに設定できます。TOP
: 上からスキャンを開始します。RANDOM_START
: ランダムに選択された行からスキャンを開始します。
excludedFields
: 読み取りから除外する列を一意に識別するテーブル フィールド。これにより、スキャンされるデータの量を減らし、検査ジョブの全体的なコストを削減できます。includedFields
: スキャンするテーブル内の特定の行を一意に識別するテーブル フィールド。
特にパーティション分割テーブルをスキャンする場合に役立つ、スキャン対象データを制限するもう 1 つの機能は TimespanConfig
です。TimespanConfig
を使用すると、開始時間と終了時間の値を指定して期間を定義することで、BigQuery テーブルの行をフィルタアウトできます。次に、機密データの保護は、その期間内のタイムスタンプを含む行のみをスキャンします。
次の例では、DLP API を使用して BigQuery テーブルの 1,000 行のサブセットをスキャンします。スキャンはランダムな行から開始されます。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
JSON 入力:
POST https://dlp.googleapis.com/v2/projects/[PROJECT-ID]/dlpJobs?key={YOUR_API_KEY}
{
"inspectJob":{
"storageConfig":{
"bigQueryOptions":{
"tableReference":{
"projectId":"bigquery-public-data",
"datasetId":"usa_names",
"tableId":"usa_1910_current"
},
"rowsLimit":"1000",
"sampleMethod":"RANDOM_START",
"includedFields":[
{
"name":"name"
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"FIRST_NAME"
}
],
"includeQuote":true
},
"actions":[
{
"saveFindings":{
"outputConfig":{
"table":{
"projectId":"[PROJECT-ID]",
"datasetId":"testingdlp",
"tableId":"bqsample3"
},
"outputSchema":"BASIC_COLUMNS"
}
}
}
]
}
}
POST リクエストの JSON 入力を指定したエンドポイントに送信した後、機密データの保護ジョブが作成され、API により次のレスポンスが送信されます。
JSON 出力:
{
"name": "projects/[PROJECT-ID]/dlpJobs/[JOB-ID]",
"type": "INSPECT_JOB",
"state": "PENDING",
"inspectDetails": {
"requestedOptions": {
"snapshotInspectTemplate": {},
"jobConfig": {
"storageConfig": {
"bigQueryOptions": {
"tableReference": {
"projectId": "bigquery-public-data",
"datasetId": "usa_names",
"tableId": "usa_1910_current"
},
"rowsLimit": "1000",
"sampleMethod": "RANDOM_START",
"includedFields": [
{
"name": "name"
}
]
}
},
"inspectConfig": {
"infoTypes": [
{
"name": "FIRST_NAME"
}
],
"limits": {},
"includeQuote": true
},
"actions": [
{
"saveFindings": {
"outputConfig": {
"table": {
"projectId": "[PROJECT-ID]",
"datasetId": "[DATASET-ID]",
"tableId": "bqsample"
},
"outputSchema": "BASIC_COLUMNS"
}
}
}
]
}
},
"result": {}
},
"createTime": "2022-11-04T18:53:48.350Z"
}
検査ジョブの実行が終了し、その結果が BigQuery によって処理されると、指定の BigQuery 出力テーブルでスキャンの結果を使用できるようになります。検査結果の取得について詳しくは、次のセクションをご覧ください。
検査結果を取得する
projects.dlpJobs.get
メソッドを使用して DlpJob
の概要を取得できます。返される DlpJob
には InspectDataSourceDetails
オブジェクトが含まれます。このオブジェクトには、ジョブの構成の概要(RequestedOptions
)とジョブの結果の概要(Result
)の両方が含まれます。結果の概要には次の項目が含まれます。
processedBytes
: 処理されたバイトの合計サイズ。totalEstimatedBytes
: 処理する残りのバイト数の見積もり。InfoTypeStatistics
オブジェクト: 検査ジョブ中に見つかった各 infoType のインスタンス数の統計。
完全な検査ジョブの結果に関しては、複数の選択肢があります。選択した Action
に応じて、検査ジョブは次のようになります。
- 指定したテーブルの BigQuery(
SaveFindings
オブジェクト)に保存される。結果の表示や分析を行う前に、下記のprojects.dlpJobs.get
メソッドを使用して、ジョブが完了していることを確認してください。OutputSchema
オブジェクトを使用して検出結果を保存するためのスキーマを指定できます。 - Pub/Sub トピック(
PublishToPubSub
オブジェクト)に公開される。このトピックでは、通知を送信するDlpJob
を実行する機密データの保護サービス アカウントに対して、公開アクセス権を付与する必要があります。 - Security Command Center に公開される。
- Data Catalog に公開される。
- Cloud Monitoring に公開される。
機密データの保護によって生成される大量のデータを選別するため、強力な SQL 分析を行う組み込み BigQuery ツールや、レポートを生成する Looker Studioなどのツールを使用できます。詳しくは、機密データの保護の検出結果の分析と報告をご覧ください。一部のサンプルクエリについては、BigQuery で検出結果をクエリするをご覧ください。
ストレージ リポジトリの検査リクエストを機密データの保護に送信すると、レスポンスとして DlpJob
オブジェクトのインスタンスが作成され実行されます。このジョブの実行にはデータのサイズと指定した構成に応じて、数秒、数分、数時間かかることがあります。Action
で PublishToPubSub
を指定することにより、Pub/Sub トピックへの公開を選択すると、ジョブ ステータスの変更時に、特定の名前を持つトピックに通知が自動的に送信されます。Pub/Sub トピックの名前は projects/[PROJECT-ID]/topics/[PUBSUB-TOPIC-NAME]
の形式で指定します。
作成したジョブを完全に制御できます。以下の管理メソッドが使用できます。
projects.dlpJobs.cancel
メソッド: 現在進行中のジョブを停止します。サーバーは可能な限りジョブをキャンセルしますが、成功は保証されません。ジョブとその構成は、削除されるまで残ります。projects.dlpJobs.delete
メソッド: ジョブとその構成を削除します。projects.dlpJobs.get
メソッド: 1 つのジョブを取得し、そのステータス、構成、そして(ジョブが完了している場合は)結果の概要を返します。projects.dlpJobs.list
メソッド: すべてのジョブのリストを取得します。結果をフィルタリングする機能が含まれます。
次のステップ
- ストレージ検査ジョブの作成方法については、機密データの保護の検査ジョブの作成とスケジュール設定をご覧ください。
- データの匿名化されたコピーのストレージ内への作成について確認する。
- サポートされているファイル形式で、Cloud Storage バケットの検査時にサポートされるファイル形式について学習する。