このトピックでは、大規模なカスタム辞書を作成して再構築する方法について説明します。また、いくつかのエラー シナリオにも対応しています。
標準のカスタム辞書ではなく大規模なカスタム辞書を選択するタイミング
コンテンツをスキャンする機密性の高い単語やフレーズが数万個ある場合は、標準のカスタム辞書検出器で十分です。スキャンする用語がこれ以上の場合や、用語リストが頻繁に変わる場合は、数千万個の用語をサポートできる大規模なカスタム辞書を作成することを検討してください。
大規模なカスタム辞書と他のカスタム infoType の違い
大規模なカスタム辞書は、他のカスタム infoType とは異なり、大規模なカスタム辞書には次の 2 つのコンポーネントがあります。
- 作成、定義するフレーズのリスト。このリストは、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 を再構築、削除、検査または匿名化ジョブで使用するときに、格納されている 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 を新しいバージョンに再構築すると、古いバージョンは削除されます。 格納されている 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 の 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 は、Cloud Storage パスの URL が更新されたことを updateMask
パラメータに示します(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 を追加] ペインで、次の操作を行います。
- [Type] で [Stored infoType] を選択します。
- [InfoType] に、カスタム infoType の名前を入力します。文字、数字、アンダースコアを使用できます。
[可能性] で、このカスタム infoType に一致するすべての検出結果に割り当てるデフォルトの可能性レベルを選択します。ホットワード ルールを使用すると、個々の検出結果の可能性レベルをさらに微調整できます。
デフォルト値を指定しない場合、デフォルトの確率レベルは
VERY_LIKELY
に設定されます。詳細については、一致の可能性をご覧ください。[機密性] で、このカスタム 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 における単一の入力ファイルの上限(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 標準の補助多言語面の文字を含む辞書の単語は、予期しない結果になる可能性があります。そのような文字の例には、絵文字、科学記号、歴史的な文字があります。
文字、数字、その他のアルファベット文字は次のように定義されます。
- 文字: 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 を削除します。