このトピックでは、大規模なカスタム辞書を作成および再構築する方法について説明します。また、いくつかのエラーのシナリオについても説明します。
標準のカスタム辞書よりも大規模なカスタム辞書を選択するケース
コンテンツをスキャンする機密性の高い単語やフレーズが数万個ある場合は、標準カスタム辞書検出器で十分です。多すぎる用語や、用語リストが頻繁に変更される場合は、数千万もの用語をサポートできる大規模なカスタム辞書を作成することを検討してください。
大規模なカスタム辞書と他のカスタム infoType の違い
大規模なカスタム辞書は、それぞれのカスタム辞書に 2 つのコンポーネントがあるという点で他のカスタム infoType とは異なります。
- 作成、定義するフレーズのリスト。このリストは、Cloud Storage 内のテキスト ファイルまたは BigQuery テーブル内の列として保存されます。
- 機密データの保護によって生成され、Cloud Storage に保存される辞書ファイル。辞書ファイルは、用語リストのコピーと、検索やマッチングに役立つブルーム フィルタで構成されます。
大規模なカスタム辞書を作成する
このセクションでは、大規模なカスタム辞書を作成、編集、再構築する方法について説明します。
用語リストを作成する
新しい infoType 検出器で検索したいすべての単語とフレーズを含むリストを作成します。次のいずれかを行います。
- 各単語やフレーズを 1 行に 1 つずつ含むテキスト ファイルを Cloud Storage バケットに配置します。
- BigQuery テーブルの 1 つの列を単語とフレーズのコンテナとして指定します。各エントリを列内の単独の行に含めます。辞書のすべての単語とフレーズを 1 つの列に収めるようにすると、既存の BigQuery テーブルを使用できます。
機密データの保護で処理できない大きさの用語リストを作成することが可能です。エラー メッセージが表示された場合は、このトピックの後半のエラーのトラブルシューティングをご覧ください。
格納される infoType を作成する
用語リストを作成した後、機密データの保護を使用して辞書を作成します。
コンソール
Cloud Storage バケットに、機密データの保護が生成された辞書を保存する新しいフォルダを作成します。
機密データの保護では、指定した場所に辞書ファイルを含むフォルダを作成します。
Google Cloud コンソールで、[infoType の作成] ページに移動します。
[タイプ] で [大規模なカスタム辞書] を選択します。
[InfoType ID] には、格納される infoType の識別子を入力します。
この ID は、検査ジョブと匿名化ジョブを構成するときに使用します。名前には文字、数字、ハイフン、アンダースコアを使用できます。
[InfoType の表示名] に、格納される infoType の名前を入力します。
名前にはスペースと句読点を使用できます。
[説明] に、格納される infoType が検出する内容の説明を入力します。
[ストレージの種類] で、用語リストの場所を選択します。
- BigQuery: プロジェクト ID、データセット ID、テーブル ID を入力します。[フィールド名] フィールドに列 ID を入力します。表には最大 1 つの列を指定できます。
- Google Cloud Storage: ファイルのパスを入力します。
[出力バケットまたはフォルダ] で、手順 1 で作成したフォルダの Cloud Storage のロケーションを入力します。
[作成] をクリックします。
格納される infoType の概要が表示されます。辞書が生成され、新しく格納される infoType を使用する準備が整うと、infoType のステータスが [準備完了] になります。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
- Cloud Storage バケットに辞書用の新しいフォルダを作成します。機密データの保護では、指定した場所に辞書ファイルを含むフォルダを作成します。
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 を再構築するよう機密データの保護に指示します。
Cloud Storage または BigQuery の既存のソース用語リストを更新します。
必要に応じて、用語やフレーズを追加、削除、変更します。
Google Cloud コンソールまたは
storedInfoTypes.patch
メソッドを使用して、格納される infoType の新しいバージョンを「再構築」して作成します。再構築すると、新しいバージョンの辞書が作成され、古いバージョンの辞書と置き換えられます。
格納される infoType を新しいバージョンに再構築すると、古いバージョンは削除されます。 格納されている infoType が機密データの保護で更新されている間、そのステータスは「保留中」となります。この間、格納される infoType の古いバージョンも引き続き存在します。格納される infoType が保留状態にあるときに実行するスキャンは、格納されている infoType の古いバージョンを使用して実行されます。
格納される infoType を再構築するには:
Console
- Cloud Storage または BigQuery で用語リストを更新して保存します。
Google Cloud コンソールで、格納されている infoType のリストに移動します。
更新する格納される infoType の ID をクリックします。
infoType の詳細画面で、[データの再ビルド] をクリックします。
機密データの保護により、ソースの用語リストに加えた変更を使用して、格納される infoType が再構築されます。格納された infoType のステータスが [準備完了] になったら、使用できるようになります。格納される infoType を使用するすべてのテンプレートまたはジョブトリガーは、再構築されたバージョンを自動的に使用します。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
用語リストを更新する
大規模なカスタム辞書の用語リストのみを更新する場合、storedInfoTypes.patch
リクエストには name
フィールドのみが必要です。再構築する格納される infoType の完全なリソース名を指定します。
次のパターンは、name
フィールドの有効なエントリを表しています。
organizations/ORGANIZATION_ID/storedInfoTypes/STORED_INFOTYPE_ID
projects/PROJECT_ID/storedInfoTypes/STORED_INFOTYPE_ID
STORED_INFOTYPE_ID は、再構築する格納される infoType の識別子に置き換えます。
格納される infoType の識別子がわからない場合は、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
に設定されます。詳細については、一致の可能性をご覧ください。[Senseitivity] で、このカスタム infoType に一致するすべての検出結果に割り当てる感度レベルを選択します。値を指定しない場合、これらの検出結果の感度レベルは
HIGH
に設定されます。機密性スコアはデータ プロファイルで使用されます。データのプロファイリング時に、機密データの保護は、infoType の機密性スコアを使用して機密性レベルを計算します。
[格納される infoType の名前] で、新しいカスタム infoType のベースとなる格納される infoType を選択します。
[完了] をクリックして [カスタム infoType を追加] ペインを閉じます。
省略可: [組み込み] タブで、組み込み infoType の選択を編集します。
[完了] をクリックして [InfoTypes] ペインを閉じます。
機密データの保護のスキャン対象となる infoType のリストにカスタム infoType が追加されます。ただし、ジョブ、ジョブトリガー、テンプレート、スキャン構成を保存するまで、この選択は最終的なものではありません。
構成の作成または編集が完了したら、[保存] をクリックします。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
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 文字も含まれていない。機密データの保護では、スペースまたは記号のみで構成される用語をスキャンできません。少なくとも 1 つの文字または数字が必要です。用語リストを見てそのような用語が含まれているかどうかを確認し、修正または削除します。
- 用語リストに含まれているフレーズに構成要素が多すぎる。この文脈での構成要素とは、文字のみ、数字のみ、あるいは文字と数字以外の要素(空白や記号など)のみを含む連続するシーケンスです。用語リストを見てそのような用語が含まれているかどうかを確認し、修正または削除します。
- 機密データの保護サービス エージェントは、辞書ソースデータ、または辞書ファイルを保存するための Cloud Storage バケットにアクセスできません。この問題を解決するには、機密データの保護サービス エージェントに、ストレージ管理者(
roles/storage.admin
)ロールまたは BigQuery データオーナー(roles/bigquery.dataOwner
)と BigQuery ジョブユーザー(roles/bigquery.jobUser
)のロールを付与します。
API の概要
大規模なカスタム辞書検出器を作成する場合は、格納される infoType を作成する必要があります。
格納される infoType は、機密データの保護内で StoredInfoType
オブジェクトによって表現されます。これは、次の関連オブジェクトで構成されています。
StoredInfoTypeVersion
には、作成日時と、現在のバージョンの作成時に発生した最新の 5 つのエラー メッセージが含まれます。StoredInfoTypeConfig
には、格納される infoType の構成(名前や説明など)が含まれます。大規模なカスタム辞書の場合、type
はLargeCustomDictionaryConfig
である必要があります。LargeCustomDictionaryConfig
は次の両方を指定します。- フレーズリストが保存される Cloud Storage または BigQuery 内の場所。
- 生成された辞書ファイルを保存する Cloud Storage 内の場所。
StoredInfoTypeState
には、格納される infoType の最新のバージョンや、保留中のすべてのバージョンの状態が含まれます。状態情報には、格納される infoType が再構築中であるか、使用準備ができているか、または無効であるかどうかが含まれます。
辞書での照合について
以下は、機密データの保護で辞書の単語とフレーズを照合する仕組みに関するガイダンスです。ここに示す内容は、標準カスタム辞書と大規模なカスタム辞書の両方に適用されます。
- 辞書の単語では大文字と小文字が区別されません。辞書に
Abby
が含まれている場合、abby
、ABBY
、Abby
などと一致します。 - スキャン対象の辞書やコンテンツ内のすべての文字(Unicode 基本多言語面に含まれる英字と数字以外)は、照合のためのスキャン時に空白と見なされます。辞書で
Abby Abernathy
をスキャンすると、abby abernathy
、Abby, Abernathy
、Abby (ABERNATHY)
などと一致します。 - 一致する文字の前後の文字は、その単語内の隣接する文字とは異なるタイプ(文字または数字)でなければなりません。辞書で
Abi
をスキャンすると、Abi904
の最初の 3 文字と一致しますが、Abigail
の最初の 3 文字とは一致しません。 - Unicode 標準の補助多言語面の文字を含む辞書の単語は、予期しない結果になる可能性があります。そのような文字の例には、中国語、日本語、韓国語、絵文字があります。
格納される infoType を作成、編集、削除するには、次のメソッドを使用します。
storedInfoTypes.create
: 指定したStoredInfoTypeConfig
を前提として、格納される infoType を新たに作成します。storedInfoTypes.patch
: 指定した新しいStoredInfoTypeConfig
を使用して、格納される infoType を再作成します。指定しない場合、このメソッドは既存のStoredInfoTypeConfig
を使用して、格納される infoType の新しいバージョンを作成します。storedInfoTypes.get
:StoredInfoTypeConfig
と、指定した格納される infoType のすべての保留中バージョンを取得します。storedInfoTypes.list
: 現在格納されているすべての infoType を一覧表示します。storedInfoTypes.delete
: 指定した格納される infoType を削除します。