カスタム辞書は、語句のリストを照合するシンプルで強力な機能を提供します。カスタム辞書は、検出機能として使用することも、組み込み検出機能の例外リストとして使用することもできます。さらに、カスタム辞書を使用して組み込みの infoType 検出器を拡張することで、結果に対して追加の照合を実施できます。
このセクションでは、単語のリストから標準のカスタム辞書検出機能を作成する方法について説明します。
辞書のカスタム infoType 検出機能の詳細
API の概要で説明されているように、辞書のカスタム infoType 検出機能を作成するには、以下を含む CustomInfoType オブジェクトを定義します。
- カスタム infoType 検出機能に付ける名前。
InfoTypeオブジェクト内に指定します。 - オプションの
Likelihood値。このフィールドを指定しない場合、辞書項目と一致したものについて、デフォルトの可能性の値VERY_LIKELYが返されます。 - オプションの
DetectionRuleオブジェクト、または起動ワードルール。こうしたルールを適用すると、指定したホットワードの所定の近接範囲内にある結果の可能性を調整できます。ホットワード ルールの詳細については、一致の可能性のカスタマイズをご覧ください。 オプションの
SensitivityScore値。このフィールドを省略すると、辞書項目と一致したものについて、デフォルトの機密レベルHIGHが返されます。機密性スコアはデータ プロファイルで使用されます。データのプロファイリング時に、Sensitive Data Protection は、infoType の機密性スコアを使用して機密性レベルを計算します。
スキャンする単語のリストを含む
WordList、またはスキャンする改行区切りのリストを含む単一のテキスト ファイルへのCloudStoragePathとしてのDictionary。
辞書のカスタム infoType 検出機能は JSON オブジェクトとしてすべての任意指定コンポーネントを含み、次のようになりますこの JSON には、Cloud Storage に保存されている辞書テキスト ファイルへのパスが含まれています。インラインの単語リストを表示するには、このトピックの後半の例をご覧ください。
{
"customInfoTypes":[
{
"infoType":{
"name":"CUSTOM_INFOTYPE_NAME"
},
"likelihood":"LIKELIHOOD_LEVEL",
"detectionRules":[
{
"hotwordRule":{
HOTWORD_RULE
}
},
...
],
"sensitivityScore":{
"score": "SENSITIVITY_SCORE"
},
"dictionary":
{
"cloudStoragePath":
{
"path": "gs://PATH_TO_TXT_FILE"
}
}
}
],
...
}
辞書での照合について
以下は、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の文字
例
単純な単語リスト
通院患者の治療に使用された病室の情報を含むデータがあるとします。こうした場所は特定のデータセットで機密扱いになる可能性がありますが、Sensitive Data Protection の組み込みの検出器では検出されません。
病室のリストは次のようなものでした。
- "RM-ORANGE"
- "RM-YELLOW"
- "RM-GREEN"
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 の例では、カスタムの病室番号を匿名化するためのカスタム辞書を定義しています。
JSON 入力:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"Patient was seen in RM-YELLOW then transferred to rm green."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"primitiveTransformation":{
"replaceWithInfoTypeConfig":{
}
}
}
]
}
},
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"CUSTOM_ROOM_ID"
},
"dictionary":{
"wordList":{
"words":[
"RM-GREEN",
"RM-YELLOW",
"RM-ORANGE"
]
}
}
}
]
}
}
JSON 出力:
POST でこの JSON を content:deidentify に送信すると、次の JSON レスポンスが返されます。
{
"item":{
"value":"Patient was seen in [CUSTOM_ROOM_ID] then transferred to [CUSTOM_ROOM_ID]."
},
"overview":{
"transformedBytes":"17",
"transformationSummaries":[
{
"infoType":{
"name":"CUSTOM_ROOM_ID"
},
"transformation":{
"replaceWithInfoTypeConfig":{
}
},
"results":[
{
"count":"2",
"code":"SUCCESS"
}
],
"transformedBytes":"17"
}
]
}
}
Sensitive Data Protection によって、カスタム辞書の WordList メッセージで指定された病室番号が正しく識別されました。2 番目の例「rm green」のように、大文字とハイフン(-)が見つからない場合でも項目が一致することに注意してください。
例外リスト
メールアドレスなどの顧客識別子を含むログデータがあり、この情報を編集するとします。ただし、これらのログには内部開発者のメールアドレスも含まれており、これらを編集する必要はありません。
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 の例では、WordList メッセージ内のメールアドレスのサブセット(jack@example.org と jill@example.org)をリストするカスタム辞書を作成し、カスタム infoType 名 DEVELOPER_EMAIL を割り当てています。この JSON は Sensitive Data Protection に対し、指定されたメールアドレスを無視して、検出した他のメールアドレスをその infoType(この場合は EMAIL_ADDRESS)に対応する文字列に置き換えるよう指示します。
JSON 入力:
POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:deidentify?key={YOUR_API_KEY}
{
"item":{
"value":"jack@example.org accessed customer record of user5@example.com"
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"primitiveTransformation":{
"replaceWithInfoTypeConfig":{
}
},
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
]
}
},
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"DEVELOPER_EMAIL"
},
"dictionary":{
"wordList":{
"words":[
"jack@example.org",
"jill@example.org"
]
}
}
}
],
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
"ruleSet": [
{
"infoTypes": [
{
"name": "EMAIL_ADDRESS"
}
],
"rules": [
{
"exclusionRule": {
"excludeInfoTypes": {
"infoTypes": [
{
"name": "DEVELOPER_EMAIL"
}
]
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
]
}
}
JSON 出力:
POST でこの JSON を content:deidentify に送信すると、次の JSON レスポンスが返されます。
{
"item":{
"value":"jack@example.org accessed customer record of [EMAIL_ADDRESS]"
},
"overview":{
"transformedBytes":"17",
"transformationSummaries":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"transformation":{
"replaceWithInfoTypeConfig":{
}
},
"results":[
{
"count":"1",
"code":"SUCCESS"
}
],
"transformedBytes":"17"
}
]
}
}
出力では、user1@example.com が EMAIL_ADDRESS infoType 検出機能に一致し、jack@example.org が DEVELOPER_EMAIL カスタム infoType 検出機能に一致していることが正しく識別されています。EMAIL_ADDRESS だけを変換することにしたため、jack@example.org は変更されていません。
組み込みの infoType 検出器の拡張
組み込みの infoType 検出機能で正しい値が返されない場合について考えてみます。たとえば、個人名の一致を返したいときに、データセットに共通の個人名の一部が機密データの保護の組み込み PERSON_NAME 検出器で返されないとします。
Sensitive Data Protection では、次の例のようにカスタム infoType 検出機能の宣言に組み込み検出機能を含めることで、組み込みの infoType 検出機能の機能を拡張できます。このスニペットは、Sensitive Data Protection を構成して、組み込みの PERSON_NAME infoType 検出機能で名前「Quasimodo」が照合されるようにする方法を示しています。
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
...
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"PERSON_NAME"
},
"dictionary":{
"wordList":{
"words":[
"quasimodo"
]
}
}
}
]
}
...
次のステップ
大規模なカスタム辞書について確認する。