ストレージ リポジトリに保存されている機密データを適切に管理する第一歩は、ストレージの分類です。これは、機密データが置かれているリポジトリ内の場所、機密データのタイプ、機密データの使用方法を識別することです。これを知っていると、アクセス制御および共有権限を適切に設定するのに役立ち、継続的なモニタリング計画に含めることができます。
機密データの保護により、Cloud Storage のロケーション、Datastore の種類、BigQuery テーブルに保存されている機密データを検出して分類できます。Cloud Storage の領域にあるファイルをスキャンする場合、Sensitive Data Protection では、バイナリ、テキスト、画像、Microsoft Word、Microsoft Excel、Microsoft PowerPoint、PDF、Apache Avro ファイルのスキャンがサポートされます。認識されない形式のファイルは、バイナリ ファイルとしてスキャンされます。サポートされているファイル形式の詳細については、サポートされているファイル形式をご覧ください。
ストレージとデータベースの機密データを検査するには、データのロケーションと、Sensitive Data Protection が検索する機密データの種類を指定します。Sensitive Data Protection は、指定された場所のデータを検査し、コンテンツ内の infoTypes や可能性の値などに関する詳細を使用できるようにするジョブを開始します。
ストレージとデータベースの検査は、 Google Cloud コンソールの Sensitive Data Protection、RESTful DLP API、またはSensitive Data Protection クライアント ライブラリ(複数の言語で利用可能)を使用してプログラムから設定できます。
このトピックには以下の情報が含まれます。
- Google Cloud ストレージ リポジトリとデータベースのスキャンを設定するためのベスト プラクティス。
- Google Cloud コンソールで Sensitive Data Protection を使用して検査スキャンを設定する手順と、オプションで定期的な検査スキャンをスケジュールする手順。
- 各 Google Cloud ストレージ リポジトリ タイプ(Cloud Storage、Datastore モードの Firestore(Datastore)、BigQuery)別の JSON の例とコードサンプル。
- スキャンジョブの構成オプションの詳細。
- スキャン結果の取得方法と、正常に行われた各リクエストから作成されたスキャンジョブの管理方法に関する手順。
ベスト プラクティス
スキャンを特定して優先順位を付ける
まずアセットを評価し、どのアセットに対するスキャンの優先度を最も高くするかを指定することが重要です。開始直後は、分類が必要なデータのバックログが大量にあるため、すべてをすぐにスキャンすることはできません。アクセス頻度が高いデータ、大勢がアクセスできるデータ、不明なデータなど、潜在的なリスクが最も高いデータを最初に選択します。
Sensitive Data Protection がデータにアクセスできることを確認する
Sensitive Data Protection は、スキャン対象のデータにアクセスできる必要があります。Sensitive Data Protection のサービス アカウントにリソースの読み取りを許可してください。
最初のスキャンの範囲を制限する
最良の結果を得るには、最初のジョブで全データをスキャンするのではなく、範囲を制限します。1 つのテーブル、1 つのバケット、または少数のファイルから開始し、サンプリングを使用します。最初のスキャンの範囲を限定することで、有効にする検出器と除外ルールを効果的に決定できます。これにより、誤検出が減り、検出結果がより有意なものなります。誤検出や役に立たない検出結果により、リスクの評価が難しくなる可能性があるため、その必要がないときにすべての infoType をオンにすることは避けてください。DATE、TIME、DOMAIN_NAME、URL などの infoType は幅広い検出結果に一致するため、特定のシナリオを除き、大規模なデータスキャンでの使用は逆効果になる可能性があります。
CSV、TSV、Avro ファイルなどの構造化ファイルをサンプリングする場合、サンプルサイズがファイルのヘッダーとデータ行の全体に対応できるほど十分なサイズであることを確認してください。詳細については、構造化解析モードで構造化ファイルをスキャンするをご覧ください。
スキャンのスケジュールを設定する
Sensitive Data Protection ジョブトリガーを使用して、スキャンを自動的に実行し、毎日、毎週、または四半期ごとに検出結果を生成します。また、前回のスキャン以降に変更されたデータのみを検査するように構成することもできるため、時間とコストを節約できます。定期的にスキャンを実行すると、スキャン結果の傾向や異常を特定できます。
ジョブのレイテンシ
ジョブとジョブトリガーに対するサービスレベル目標(SLO)は保証されません。レイテンシは、スキャンするデータの量、スキャン対象のストレージ リポジトリ、スキャン対象の infoType のタイプと数、ジョブが処理されるリージョン、そのリージョンで使用可能なコンピューティング リソースなどさまざまな要因に影響を受けます。したがって、検査ジョブのレイテンシは事前に決定できません。
ジョブのレイテンシを短縮するため、次の方法を試すことができます。
- ジョブまたはジョブトリガーでサンプリングを利用できる場合は、有効にします。
不要な infoType は有効にしないでください。以下は特定のシナリオで有用ですが、これらの infoType により、リクエストの実行速度がこれらを含まないリクエストよりもはるかに遅くなる可能性があります。
PERSON_NAMEFEMALE_NAMEMALE_NAMEFIRST_NAMELAST_NAMEDATE_OF_BIRTHLOCATIONSTREET_ADDRESSORGANIZATION_NAME
infoType は常に明示的に指定します。空の infoType リストを使用しないでください。
可能であれば、処理を行う別のリージョンを使用します。
これらの手法を試してもジョブに関するレイテンシの問題が解決しない場合は、ジョブではなく content.inspect リクエストまたは content.deidentify リクエストの使用を検討してください。これらのメソッドは、サービスレベル契約の対象となります。詳細については、Sensitive Data Protection のサービスレベル契約をご覧ください。
準備
このトピックで説明する手順は、次のことを前提としています。
課金を有効にしている。
Sensitive Data Protection を有効にしている。
ストレージの分類には OAuth スコープ https://www.googleapis.com/auth/cloud-platform が必要です。詳細については、DLP API に対する認証をご覧ください。
Cloud Storage のロケーションを検査する
Cloud Storage のロケーションの Sensitive Data Protection 検査は、 Google Cloud コンソール、REST または RPC リクエストでの DLP API を使用、またはクライアント ライブラリ(複数の言語で利用可能)を使用してプログラムから設定できます。次の JSON とコードサンプルに含まれるパラメータの詳細については、このトピックで後述する「ストレージ検査を構成する」をご覧ください。
Sensitive Data Protection は、ファイル拡張子とメディア(MIME)タイプを使用して、スキャンするファイルの形式と、適用するスキャンモードを識別します。たとえば、Sensitive Data Protection では、通常は構造化解析モードでスキャンされる CSV ファイルとしてファイルが構造化されている場合でも、書式なしテキストモードで .txt ファイルをスキャンします。
Sensitive Data Protection を使用して Cloud Storage バケットのスキャンジョブを設定するには:
コンソール
このセクションでは、Cloud Storage バケットまたはフォルダの検査方法について説明します。機密データの保護でデータの匿名化コピーも作成する場合は、 Google Cloud コンソールを使用して Cloud Storage に保存されている機密データを匿名化するをご覧ください。
Google Cloud コンソールの [Sensitive Data Protection] セクションで、[ジョブまたはジョブトリガーを作成] ページに移動します。
Sensitive Data Protection ジョブの情報を入力し、[続行] をクリックして各手順を完了します。
[入力データを選択] では、[名前] フィールドに値を入力して、ジョブに名前を付けます。[ロケーション] セクションで、[ストレージの種類] メニューから [Google Cloud Storage] を選択し、スキャンするデータのロケーションを入力します。[サンプリング] セクションは、データに対してサンプル スキャンを実行するように事前構成されています。大量のデータがある場合、[バケット内のスキャン対象オブジェクトの割合] フィールドを調整することでリソースを節約できます。詳細については、入力データの選択をご覧ください。
(省略可)[検出の構成] では、「infoTypes」と呼ばれる検索するデータのタイプを構成できます。事前定義済みの infoType リストから選択するか、テンプレートが存在する場合はテンプレートを選択することもできます。詳細については、検出の構成をご覧ください。
[アクションの追加] で、ジョブの完了後に Sensitive Data Protection に実行させる 1 つ以上のアクションを選択します。詳細については、検査またはリスク分析のアクションを有効にするをご覧ください。
アクションを選択したら、[続行] をクリックします。
(省略可)[スケジュール] で、スキャンを 1 回だけ実行するには、メニューを [なし] のままにします。スキャンを定期的に実行するには、[周期スケジュールでジョブを実行するトリガーを作成] をクリックします。詳細については、スケジュールをご覧ください。
[作成] をクリックします。
Sensitive Data Protection のジョブが完了すると、ジョブの詳細ページにリダイレクトされ、メールで通知されます。検査の結果はジョブの詳細ページで確認できます。
(省略可)Sensitive Data Protection の検出結果を BigQuery に公開することを選択した場合は、[ジョブの詳細] ページで [検出結果を BigQuery で表示] をクリックすると、BigQuery ウェブ UI にテーブルが開きます。その後、テーブルをクエリし、検出結果を分析できます。BigQuery での結果のクエリの詳細については、BigQuery で Sensitive Data Protection の検出結果をクエリするをご覧ください。
プロトコル
以下は、POST リクエストによって、指定された Sensitive Data Protection 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
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
C#
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Datastore の種類を検査する
Datastore の種類の検査は、Google Cloud コンソール、REST や RPC リクエストでの DLP API、またはクライアント ライブラリ(複数の言語で利用可能)を使用するプログラムから設定できます。
Sensitive Data Protection を使用して Datastore の種類のスキャンジョブを設定するには:
コンソール
Sensitive Data Protection を使用して Datastore の種類のスキャンジョブを設定するには:
Google Cloud コンソールの [Sensitive Data Protection] セクションで、[ジョブまたはジョブトリガーを作成] ページに移動します。
Sensitive Data Protection ジョブの情報を入力し、[続行] をクリックして各手順を完了します。
[入力データの選択] で、スキャンするプロジェクト、名前空間(省略可)、種類の識別子を入力します。詳細については、入力データの選択をご覧ください。
(省略可)検出の構成では、「infoTypes」と呼ばれる検索するデータのタイプを構成できます。事前定義済みの infoType リストから選択するか、テンプレートが存在する場合はテンプレートを選択することもできます。詳細については、検出の構成をご覧ください。
[アクションの追加] で、ジョブの完了後に Sensitive Data Protection に実行させる 1 つ以上のアクションを選択します。詳細については、検査またはリスク分析アクションを有効にするをご覧ください。
アクションを選択したら、[続行] をクリックします。
(省略可)[スケジュール] で、[期間を指定] または [周期スケジュールでジョブを実行するトリガーを作成] を選択して、期間またはスケジュールを構成します。詳細については、スケジュールをご覧ください。
[作成] をクリックします。
Sensitive Data Protection ジョブが完了すると、ジョブの詳細ページにリダイレクトされ、メールで通知されます。検査の結果はジョブの詳細ページで確認できます。
(省略可)Sensitive Data Protection の検出結果を BigQuery に公開することを選択した場合は、[ジョブの詳細] ページで [結果を BigQuery で表示] をクリックすると、BigQuery ウェブ UI にテーブルが開きます。その後、テーブルをクエリし、検出結果を分析できます。BigQuery での結果のクエリの詳細については、BigQuery で Sensitive Data Protection の検出結果をクエリするをご覧ください。
プロトコル
以下は、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
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
C#
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
BigQuery テーブルを検査する
BigQuery テーブルの検査は、REST リクエストで Sensitive Data Protection を使用するか、クライアント ライブラリ(複数の言語で利用可能)を使用するプログラムから設定できます。
Sensitive Data Protection を使用して BigQuery テーブルのスキャンジョブを設定するには:
コンソール
Sensitive Data Protection を使用して BigQuery テーブルのスキャン ジョブを設定するには:
Google Cloud コンソールの [Sensitive Data Protection] セクションで、[ジョブまたはジョブトリガーを作成] ページに移動します。
Sensitive Data Protection ジョブの情報を入力し、[続行] をクリックして各手順を完了します。
[入力データを選択] では、[名前] フィールドに値を入力して、ジョブに名前を付けます。[ロケーション] セクションで、[ストレージの種類] メニューから [BigQuery] を選択し、スキャンするテーブルの情報を入力します。
[サンプリング] セクションでは、データに対してサンプル スキャンを実行するように事前構成されています。大量のデータがある場合は、[行の制限] と [行の最大数] フィールドを調整してリソースを節約できます。詳細については、入力データの選択をご覧ください。
(省略可)各検出結果を、それを含む行にリンクできるようにする場合は、[識別フィールド] のフィールドを設定します。
テーブル内の各行を一意に識別する列の名前を入力します。必要に応じて、ドット表記を使用してネストされたフィールドを指定します。追加できるフィールドの数に制限はありません。
また、検出結果を BigQuery にエクスポートするには、[BigQuery に保存] アクションを有効にする必要があります。検出結果が BigQuery にエクスポートされると、各検出結果には識別フィールドのそれぞれの値が含まれます。詳細については、
identifyingFieldsをご覧ください。(省略可)検出の構成では、「infoTypes」と呼ばれる検索するデータのタイプを構成できます。事前定義済みの infoType リストから選択するか、テンプレートが存在する場合はテンプレートを選択することもできます。詳細については、検出の構成をご覧ください。
[アクションの追加] で、ジョブの完了後に Sensitive Data Protection に実行させる 1 つ以上のアクションを選択します。詳細については、検査またはリスク分析アクションを有効にするをご覧ください。
アクションを選択したら、[続行] をクリックします。
(省略可)[スケジュール] で、スキャンを 1 回だけ実行するには、メニューを [なし] のままにします。スキャンを定期的に実行するには、[周期スケジュールでジョブを実行するトリガーを作成] をクリックします。詳細については、スケジュールをご覧ください。
[作成] をクリックします。
Sensitive Data Protection ジョブが完了すると、ジョブの詳細ページにリダイレクトされ、メールで通知されます。検査の結果はジョブの詳細ページで確認できます。
(省略可)Sensitive Data Protection の検出結果を BigQuery に公開することを選択した場合は、[ジョブの詳細] ページで [結果を BigQuery で表示] をクリックすると、BigQuery ウェブ UI にテーブルが開きます。その後、テーブルをクエリし、検出結果を分析できます。BigQuery での結果のクエリの詳細については、BigQuery で Sensitive Data Protection の検出結果をクエリするをご覧ください。
プロトコル
以下は、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
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
C#
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
ストレージ検査を構成する
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列挙型: 省略可。設定すると、Sensitive Data Protection は、この可能性しきい値以上の検出結果のみを返します。この列挙値を省略した場合のデフォルト値はPOSSIBLEです。FindingLimitsオブジェクト: 省略可。このオブジェクトを設定すると、戻される結果の数に対する制限を指定できます。includeQuoteパラメータ: 省略可。デフォルトはfalseです。trueに設定すると、トリガーされたデータからのコンテキスト データが、各結果に含められます。excludeInfoTypesパラメータ: 省略可。デフォルトはfalseです。trueに設定すると、スキャン結果から結果のタイプ情報が除外されます。CustomInfoTypeオブジェクト: ユーザー作成の 1 つ以上のカスタム infoType。カスタム infoType の作成の詳細については、カスタム infoType 検出器の作成をご覧ください。
inspectTemplateName文字列: 省略可。InspectConfigオブジェクトにデフォルト値を入れるために使用するテンプレートを指定します。InspectConfigをすでに指定している場合、テンプレートの値はマージされます。Actionオブジェクト: 省略可。ジョブの完了時に実行される 1 つ以上のアクション。各アクションは、リストされている順序で実行されます。ここでは、結果を書き込む場所や、通知を Pub/Sub トピックに公開するかどうかを指定します。
jobId: 省略可。Sensitive Data Protection から返されるジョブの識別子。jobIdが省略されるか空の場合、システムがジョブの ID を作成します。指定すると、ジョブにこの ID 値が割り当てられます。ジョブ ID は一意でなければならず、また大文字、小文字、数字、ハイフンを含めることができます。つまり、正規表現[a-zA-Z\\d-]+に一致する必要があります。
検査するコンテンツの量を制限する
BigQuery テーブルや Cloud Storage バケットをスキャンする場合、Sensitive Data Protection にはデータセットのサブセットをスキャンする方法が含まれています。この方法では、データセット全体をスキャンするというコストは発生せず、一方でスキャン結果のサンプリングを行うことができます。
次のセクションでは、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#
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
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 入力を指定したエンドポイントに送信した後、Sensitive Data Protection ジョブが作成され、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のいずれか 1 つのみを指定できます。sampleMethod: すべての行をスキャンしない場合に行をサンプリングする方法。未指定の場合、スキャンは上から開始されます。このフィールドは、次の 2 つの値のいずれかに設定できます。TOP: 上からスキャンを開始します。RANDOM_START: ランダムに選択された行からスキャンを開始します。
excludedFields: 読み取りから除外する列を一意に識別するテーブル フィールド。これにより、スキャンされるデータの量を減らし、検査ジョブの全体的なコストを削減できます。includedFields: スキャンするテーブル内の特定の行を一意に識別するテーブル フィールド。
特にパーティション分割テーブルをスキャンする場合に役立つ、スキャン対象データを制限するもう 1 つの機能は TimespanConfig です。TimespanConfig を使用すると、開始時間と終了時間の値を指定して期間を定義することで、BigQuery テーブルの行をフィルタアウトできます。次に、Sensitive Data Protection は、その期間内のタイムスタンプを含む行のみをスキャンします。
次の例では、DLP API を使用して BigQuery テーブルの 1,000 行のサブセットをスキャンします。スキャンはランダムな行から開始されます。
Go
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
C#
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、Sensitive Data Protection のクライアント ライブラリをご覧ください。
Sensitive Data Protection の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
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 入力を指定したエンドポイントに送信した後、Sensitive Data Protection ジョブが作成され、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 に公開される。
- Cloud Monitoring に公開。
Sensitive Data Protection によって生成される大量のデータを選別するため、強力な SQL 分析を行う組み込み BigQuery ツールや、レポートを生成するデータポータルなどのツールを使用できます。詳しくは、Sensitive Data Protection の検出結果の分析と報告をご覧ください。一部のサンプルクエリについては、BigQuery で検出結果をクエリするをご覧ください。
ストレージ リポジトリの検査リクエストを Sensitive Data Protection に送信すると、レスポンスとして 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メソッド: すべてのジョブのリストを取得します。結果をフィルタリングする機能が含まれます。
次のステップ
- ストレージ検査ジョブの作成方法については、Sensitive Data Protection の検査ジョブの作成とスケジュール設定をご覧ください。
- データの匿名化されたコピーのストレージ内への作成について確認する。
- サポートされているファイル形式で、Cloud Storage バケットの検査時にサポートされるファイル形式について学習する。