このトピックでは、大規模なカスタム辞書を作成して再構築する方法について説明します。また、いくつかのエラー シナリオについても説明します。
標準のカスタム辞書ではなく大規模なカスタム辞書を選択する場合
標準のカスタム辞書検出器は、コンテンツをスキャンする機密性の高い単語やフレーズが数万個ある場合に十分です。これより多い場合や、用語リストが頻繁に変更される場合は、大規模なカスタム辞書の作成を検討してください。大規模なカスタム辞書では、数千万の用語をサポートできます。
大規模なカスタム辞書と他のカスタム infoType の違い
大規模なカスタム辞書は、各大規模なカスタム辞書に次の 2 つのコンポーネントがあるという点で、他のカスタム infoType とは異なります。
- 作成、定義するフレーズのリスト。このリストは、Cloud Storage 内のテキスト ファイルまたは BigQuery テーブル内の列として保存されます。
- Sensitive Data Protection によって生成され、Cloud Storage に保存される辞書ファイル。辞書ファイルは、用語リストのコピーと、検索やマッチングに役立つブルーム フィルタで構成されます。
大きなカスタム辞書を作成する
このセクションでは、大規模なカスタム辞書を作成、編集、再構築する方法について説明します。
用語リストを作成する
新しい infoType 検出機能で検索するすべての単語とフレーズを含むリストを作成します。次のいずれかを行います。
- 各単語やフレーズを 1 行に 1 つずつ含むテキスト ファイルを Cloud Storage バケットに配置します。
- BigQuery テーブルの 1 つの列を単語とフレーズのコンテナとして指定します。各エントリを列内の単独の行に含めます。辞書のすべての単語とフレーズを 1 つの列に収めるようにすると、既存の BigQuery テーブルを使用できます。
Sensitive Data Protection で処理できない大きさの用語リストを作成することが可能です。エラー メッセージが表示された場合は、このトピックの後半のエラーのトラブルシューティングをご覧ください。
格納される infoType を作成する
用語リストを作成した後、Sensitive Data Protection を使用して辞書を作成します。
コンソール
Cloud Storage バケットに、Sensitive Data Protection が生成された辞書を保存する新しいフォルダを作成します。
Sensitive Data Protection では、指定した場所に辞書ファイルを含むフォルダを作成します。
Google Cloud コンソールで、[infoType の作成] ページに移動します。
[タイプ] で [大規模なカスタム辞書] を選択します。
[InfoType ID] に、格納される infoType の識別子を入力します。
この識別子は、検査ジョブと匿名化ジョブを構成するときに使用します。名前には文字、数字、ハイフン、アンダースコアを使用できます。
[InfoType の表示名] に、格納される infoType の名前を入力します。
名前にはスペースと句読点を使用できます。
[説明] に、格納される infoType が検出する内容の説明を入力します。
[ストレージ タイプ] で、用語リストの場所を選択します。
- BigQuery: プロジェクト ID、データセット ID、テーブル ID を入力します。[フィールド名] フィールドに列 ID を入力します。テーブルから指定できる列は 1 つだけです。
- Google Cloud Storage: ファイルのパスを入力します。
[出力バケットまたはフォルダ] に、ステップ 1 で作成したフォルダの Cloud Storage の場所を入力します。
[作成] をクリックします。
格納される infoType の概要が表示されます。辞書が生成され、新しく格納された infoType が使用可能になると、infoType のステータスが [準備完了] になります。
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
- Cloud Storage バケットに辞書用の新しいフォルダを作成します。Sensitive Data Protection は、指定した場所に辞書ファイルを含むフォルダを作成します。
storedInfoTypes.createメソッドを使用して辞書を作成します。createメソッドには次のパラメータがあります。StoredInfoTypeConfigオブジェクト。格納される infoType の構成が含まれます。- 次の機能が含まれます。
description: 辞書の説明。displayName: 辞書に付ける名前。LargeCustomDictionaryConfig: 大規模なカスタム辞書の構成が含まれます。たとえば次のようなものがあります。BigQueryField: 用語リストが BigQuery に保存されるかどうかを指定します。リストが格納されるテーブルへの参照と、各辞書フレーズを保存するフィールドが含まれます。CloudStorageFileSet: 用語リストが Cloud Storage に保存されるかどうかを指定します。Cloud Storage 内のソースの場所への URL を"gs://[PATH_TO_GS]"の形式で格納します。ワイルドカードはサポートされています。outputPath: 格納される辞書を保存する Cloud Storage バケット内の場所へのパス。
storedInfoTypeId: 保存された infoType の識別子。この識別子は、格納される infoType を再構築、削除、または検査ジョブや匿名化ジョブで使用するときに参照するために使用します。このフィールドを空のままにすると、システムによって識別子が生成されます。
次の JSON の例では、storedInfoTypes.create メソッドに送信されると、格納される新しい infoType(具体的には、大規模なカスタム辞書検出器)を作成します。この例では、一般公開されている BigQuery データベース(bigquery-public-data.samples.github_nested)に保存されている用語リストから、保存された infoType を作成します。このデータベースには、commit で使用されるすべての GitHub ユーザー名が含まれています。生成された辞書の出力パスは dlptesting という Cloud Storage バケットに設定され、保存された infoType の名前は github-usernames になります。
JSON 入力
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/storedInfoTypes
{
"config":{
"displayName":"GitHub usernames",
"description":"Dictionary of GitHub usernames used in commits",
"largeCustomDictionary":{
"outputPath":{
"path":"gs://[PATH_TO_GS]"
},
"bigQueryField":{
"table":{
"datasetId":"samples",
"projectId":"bigquery-public-data",
"tableId":"github_nested"
}
}
}
},
"storedInfoTypeId":"github-usernames"
}
辞書を再構築する
辞書を更新する場合は、まずソースの用語リストを更新してから、格納される infoType を再構築するように Sensitive Data Protection に指示します。
Cloud Storage または BigQuery の既存のソース用語リストを更新します。
必要に応じて、用語やフレーズを追加、削除、変更します。
Google Cloud コンソールまたは
storedInfoTypes.patchメソッドを使用して、格納される infoType の新しいバージョンを「再構築」して作成します。再構築すると、新しいバージョンの辞書が作成され、古いバージョンの辞書と置き換えられます。
格納される infoType を新しいバージョンに再構築すると、古いバージョンは削除されます。 Sensitive Data Protection が格納されている infoType を更新している間、そのステータスは「保留中」となります。この間、格納される infoType の古いバージョンは引き続き存在します。格納されている infoType が保留状態のときに実行するスキャンは、格納されている infoType の古いバージョンを使用して実行されます。
格納される infoType を再構築するには:
Console
- Cloud Storage または BigQuery で用語リストを更新して保存します。
Google Cloud コンソールで、保存された infoType のリストに移動します。
更新する格納される infoType の ID をクリックします。
infoType の詳細画面で、[データの再ビルド] をクリックします。
Sensitive Data Protection により、ソースの用語リストに加えた変更を使用して、格納される infoType が再構築されます。格納された infoType のステータスが [準備完了] になったら、使用できるようになります。保存された infoType を使用するテンプレートまたはジョブトリガーは、再構築されたバージョンを自動的に使用します。
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
用語リストを更新する
大規模なカスタム辞書の用語リストのみを更新する場合、storedInfoTypes.patch リクエストには name フィールドのみが必要です。再構築する保存済み infoType の完全なリソース名を指定します。
次のパターンは、name フィールドの有効なエントリを表しています。
organizations/ORGANIZATION_ID/storedInfoTypes/STORED_INFOTYPE_IDprojects/PROJECT_ID/storedInfoTypes/STORED_INFOTYPE_ID
STORED_INFOTYPE_ID は、再構築する保存済み infoType の ID に置き換えます。
保存された infoType の ID がわからない場合は、storedInfoTypes.list メソッドを呼び出して、現在保存されているすべての infoType のリストを表示します。
例
PATCH https://dlp.googleapis.com/v2/projects/PROJECT_ID/storedInfoTypes/STORED_INFOTYPE_ID
この場合、リクエスト本文は必要ありません。
ソース用語リストを切り替える
保存された infoType のソース用語リストを、BigQuery に保存されているものから Cloud Storage に保存されているものに変更できます。過去に BigQueryField オブジェクトを使用した LargeCustomDictionaryConfig で、CloudStorageFileSet オブジェクトが含まれる storedInfoTypes.patch メソッドを使用してください。次に、updateMask パラメータを、再構築した保存済みの infoType パラメータに FieldMask 形式で設定します。たとえば、次の JSON では、updateMask パラメータで Cloud Storage パスの URL が更新されたことが示されています(large_custom_dictionary.cloud_storage_file_set.url)。
例
PATCH https://dlp.googleapis.com/v2/projects/PROJECT_ID/storedInfoTypes/github-usernames
{
"config":{
"largeCustomDictionary":{
"cloudStorageFileSet":{
"url":"gs://[BUCKET_NAME]/[PATH_TO_FILE]"
}
}
},
"updateMask":"large_custom_dictionary.cloud_storage_file_set.url"
}
同様に、BigQuery テーブルに保存されている用語リストを Cloud Storage バケットに保存されている用語リストに切り替えることもできます。
大規模なカスタム辞書検出機能を使用してコンテンツをスキャンする
大規模なカスタム辞書検出機能を使用したコンテンツのスキャンは、他のカスタム infoType 検出機能を使用したコンテンツのスキャンと似ています。
この手順では、既存の保存済み infoType があることを前提としています。詳細については、このページの格納される infoType を作成するをご覧ください。
Console
大規模なカスタム辞書検出機能は、次の場合に適用できます。
- 新しいジョブの作成
- ジョブトリガーの作成または編集
- テンプレートの作成または編集
- データ プロファイリングの構成
ページの [検出を構成する] セクションの [InfoTypes] サブセクションで、大規模なカスタム辞書の infoType を指定できます。
- [infoType を管理] をクリックします。
- [InfoTypes] ペインで、[カスタム] タブをクリックします。
- [カスタム infoType を追加] をクリックします。
[カスタム infoType を追加] ペインで、次の操作を行います。
- [タイプ] で [格納される infoType] を選択します。
- [InfoType] に、カスタム infoType の名前を入力します。文字、数字、アンダースコアを使用できます。
[可能性] で、このカスタム infoType に一致するすべての検出結果に割り当てるデフォルトの可能性レベルを選択します。起動ワードルールを使用すると、個々の検出結果の可能性レベルをさらに微調整できます。
デフォルト値を指定しない場合、デフォルトの可能性レベルは
VERY_LIKELYに設定されます。詳細については、一致の可能性をご覧ください。[機密性] で、このカスタム infoType に一致するすべての検出結果に割り当てる機密レベルを選択します。値を指定しない場合、これらの検出結果の機密レベルは
HIGHに設定されます。機密性スコアはデータ プロファイルで使用されます。データのプロファイリング時に、Sensitive Data Protection は、infoType の機密性スコアを使用して機密性レベルを計算します。
[格納される infoType の名前] で、新しいカスタム infoType のベースにする格納される infoType を選択します。
[完了] をクリックして、[カスタム infoType を追加] ペインを閉じます。
省略可: [組み込み] タブで、組み込み infoType の選択を編集します。
[完了] をクリックして [InfoTypes] ペインを閉じます。
Sensitive Data Protection のスキャン対象となる infoType のリストにカスタム infoType が追加されます。ただし、この選択は、ジョブ、ジョブトリガー、テンプレート、またはスキャン構成を保存するまで確定されません。
構成の作成または編集が完了したら、[保存] をクリックします。
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
content.inspect メソッドに送信すると、次の例では、指定の格納される infoType 検出器を使用して、指定されたテキストをスキャンします。すべてのカスタム infoType には、組み込みの infoType や他のカスタム infoType と競合しない名前が必要であるため、infoType パラメータは必須です。storedType パラメータには、格納されるカスタム infoType の完全なリソースパスが含まれます。
JSON 入力
POST https://dlp.googleapis.com/v2/projects/PROJECT_ID/content:inspect
{
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"GITHUB_LOGINS"
},
"storedType":{
"name":"projects/PROJECT_ID/storedInfoTypes/github-logins"
}
}
]
},
"item":{
"value":"The commit was made by githubuser."
}
}
エラーに関するトラブルシューティング
Cloud Storage に保存されている用語リストから、格納される infoType を作成しようとしたときにエラーが発生した場合、次の原因が考えられます。
- 保存された infoType の上限に達しました。問題に応じて、いくつかの回避策があります。
- Cloud Storage の 1 つの入力ファイルの上限(200 MB)に達した場合は、ファイルを複数のファイルに分割してみてください。すべてのファイルの合計サイズが 1 GB を超えない限り、複数のファイルを使用して 1 つのカスタム辞書を組み立てることができます。
- BigQuery には、Cloud Storage と同じ制限はありません。用語を BigQuery テーブルに移動することを検討してください。BigQuery のカスタム辞書列の最大サイズは 1 GB、最大行数は 5,000,000 です。
- 用語リストファイルが、ソース用語リストに適用されるすべての制限を超えている場合は、用語リストファイルを複数のファイルに分割し、ファイルごとに辞書を作成する必要があります。次に、辞書ごとに個別のスキャンジョブを作成します。
- 1 つ以上の用語に文字または数字が 1 文字も含まれていない。Sensitive Data Protection では、スペースまたは記号のみで構成される用語をスキャンできません。少なくとも 1 つの文字または数字が必要です。用語リストを見てそのような用語が含まれているかどうかを確認し、修正または削除します。
- 用語リストに含まれているフレーズに構成要素が多すぎる。この文脈での構成要素とは、文字のみ、数字のみ、あるいは文字と数字以外の要素(空白や記号など)のみを含む連続するシーケンスです。用語リストを見てそのような用語が含まれているかどうかを確認し、修正または削除します。
- Sensitive Data Protection サービス エージェントは、辞書ソースデータ、または辞書ファイルを保存するための Cloud Storage バケットにアクセスできません。この問題を解決するには、Sensitive Data Protection サービス エージェントに、ストレージ管理者(
roles/storage.admin)ロールまたは BigQuery データオーナー(roles/bigquery.dataOwner)と BigQuery ジョブユーザー(roles/bigquery.jobUser)のロールを付与します。
API の概要
大規模なカスタム辞書検出器を作成する場合は、格納される infoType を作成する必要があります。
格納される infoType は、Sensitive Data Protection 内で StoredInfoType オブジェクトによって表現されます。これは、次の関連オブジェクトで構成されています。
StoredInfoTypeVersionには、作成日時と、現在のバージョンの作成時に発生した最新の 5 つのエラー メッセージが含まれます。StoredInfoTypeConfigには、格納される infoType の構成(名前や説明など)が含まれます。大規模なカスタム辞書の場合、typeはLargeCustomDictionaryConfigにする必要があります。LargeCustomDictionaryConfigは次の両方を指定します。- フレーズリストが保存される Cloud Storage または BigQuery 内の場所。
- 生成された辞書ファイルを保存する Cloud Storage 内の場所。
StoredInfoTypeStateには、格納される infoType の最新のバージョンや、保留中のすべてのバージョンの状態が含まれます。状態情報には、格納される infoType が再構築中であるか、使用準備ができているか、または無効であるかどうかが含まれます。
辞書での照合について
以下は、Sensitive Data Protection で辞書の単語とフレーズを照合する仕組みに関するガイダンスです。ここに示す内容は、標準カスタム辞書と大規模なカスタム辞書の両方に適用されます。
- 辞書の単語では大文字と小文字が区別されません。辞書に
Abbyが含まれている場合、abby、ABBY、Abbyなどと一致します。 - 辞書またはスキャン対象のコンテンツ内のすべての文字(Unicode の基本多言語面に含まれる文字、数字、その他のアルファベット文字を除く)は、一致をスキャンする際に空白文字と見なされます。辞書で
Abby Abernathyをスキャンすると、abby abernathy、Abby, Abernathy、Abby (ABERNATHY)などと一致します。 - 一致する文字の前後の文字は、その単語内の隣接する文字とは異なるタイプ(文字または数字)でなければなりません。辞書で
Abiをスキャンすると、Abi904の最初の 3 文字と一致しますが、Abigailの最初の 3 文字とは一致しません。 - Unicode 標準の補助多言語面の文字を含む辞書の単語は、予期しない結果になる可能性があります。そのような文字の例には、絵文字、科学記号、歴史的な文字があります。
文字、数字、その他のアルファベット文字は次のように定義されます。
- 文字: Unicode 仕様の一般カテゴリ
Lu、Ll、Lt、Lm、Loの文字 - 数字: Unicode 仕様の一般カテゴリ
Ndの文字 - その他の英字: Unicode 仕様の一般カテゴリ
Nlの文字、または Unicode 標準で定義されている寄与プロパティOther_Alphabeticの文字
格納される infoType を作成、編集、削除するには、次のメソッドを使用します。
storedInfoTypes.create: 指定したStoredInfoTypeConfigを前提として、格納される infoType を新たに作成します。storedInfoTypes.patch: 指定した新しいStoredInfoTypeConfigを使用して、格納される infoType を再構築します。何も指定しない場合、このメソッドは既存のStoredInfoTypeConfigを使用して、保存された infoType の新しいバージョンを作成します。storedInfoTypes.get:StoredInfoTypeConfigと、指定した格納される infoType のすべての保留中バージョンを取得します。storedInfoTypes.list: 現在格納されているすべての infoType を一覧表示します。storedInfoTypes.delete: 指定した格納される infoType を削除します。