機密データの保護の組み込みの infoType 検出器は、一般的なタイプの機密データを検出するのに有効です。カスタムの infoType 検出器を使用すると、独自の機密データ検出器を自由にカスタマイズできます。検査ルールによって、特定の infoType 検出器の検出メカニズムを変更し、機密データの保護から返されるスキャン結果を絞り込むことができます。
組み込みの infoType 検出器から返される結果から値を除外または追加する場合は、新しいカスタム infoType を最初から作成し、機密データの保護が検索する基準をすべて定義します。また、機密データの保護の組み込みまたはカスタムの検出器から返される結果を特定の基準で絞り込むこともできます。これを行うには、ノイズの低減、適合率と再現率の増加、スキャン結果の確実性調整に役立つ検査ルールを追加します。
このトピックでは、2 種類の検査ルールを使用して、指定したカスタム条件に基づいて特定の検索結果を除外または追加する方法について説明します。また、既存の infoType 検出器を変更する場合のシナリオをいくつか紹介します。
次の種類の検査ルールを使用できます。
- 除外ルール。誤った検索結果や望ましくない検索結果を除外するのに役立ちます。
- ホットワード ルール。テキスト コンテンツで追加の検索結果を検出するのに役立ちます。
- 調整ルール: 検出結果が表示されるコンテキストに基づいて、検出結果の可能性を調整します。
ターゲットとコンテキストの infoType
このドキュメントでは、ルールセット内の infoType を指す用語として以下を使用します。
- ターゲット infoType: ルールセットで定義された条件が満たされたときに、機密データの保護が除外または調整する infoType。
- コンテキスト infoType: 検出された場合に、ターゲット infoType に関するコンテキストを提供する infoType。機密データの保護では、コンテキスト infoType を使用して、ターゲット infoType を除外または調整する必要があるかどうかを判断します。
ルールの順序とチェーン
Sensitive Data Protection は、ルールセットで指定した順序でルールを適用します。そのため、ルールの順序によって Sensitive Data Protection オペレーションの結果が左右されることがあります。例については、このドキュメントの健康に関するドキュメントで人名の可能性を高め、健康に関するドキュメントを除外するをご覧ください。
除外ルール
除外ルールは、次のような状況で役立ちます。
- infoType 検出器の重複によって生じた、重複したスキャン一致を結果から除外する場合。たとえば、メールアドレスと電話番号をスキャンする際に、電話番号の入ったメールアドレス(「206-555-0764@example.org」など)によって 2 つの結果がヒットする場合です。
- スキャン結果にノイズが発生している場合。たとえば、適正なメールアドレスのスキャンで、同じ仮のメールアドレス(「example@example.com」など)またはドメイン(「example.com」など)が無数に返される場合です。
- 結果から除外する用語や、フレーズ、文字の組み合わせのリストがある場合。
- 結果からデータ列全体を除外する必要がある場合。
- 正規表現と一致する文字列に近い検出結果を除外する必要があります。
- 画像内の他の検出結果との空間的関係に基づいて、画像内の検出結果を除外します。
除外ルール API の概要
機密データの保護では、ExclusionRule オブジェクトで除外ルールを定義します。ExclusionRule で、次のいずれかを指定します。
Dictionaryオブジェクト。結果から除外する文字列のリストが含まれます。Regexオブジェクト。正規表現パターンを定義します。パターンに一致する文字列は結果から除外されます。ExcludeInfoTypesオブジェクト。infoType 検出器の配列が含まれます。ここにリストされている infoType 検出器のいずれかと検索結果が一致する場合、その検索結果は結果から除外されます。ExcludeByHotwordオブジェクト。これには次の要素が含まれます。- 起動ワードを定義する正規表現。
- 起動ワードの検出結果への近接度を定義する近接値。
検出結果が設定された近接範囲内にある場合、その検出結果は結果から除外されます。テーブルの場合、この除外ルールタイプを使用すると、結果からデータ列全体を除外できます。
ExcludeByImageFindingsオブジェクト。これには次のものが含まれます。ターゲット infoType の検出結果を除外するかどうかを判断するために使用されるコンテキスト infoType のリスト。
ターゲットとコンテキストの検出結果の境界ボックス間の必要な空間関係を指定する
ImageContainmentTypeオブジェクト。この要件を満たしていない場合、機密データの保護はターゲット infoType の検出結果を除外しません。
コンテキスト infoType のバウンディング ボックスがターゲット infoType の検出結果と指定された関係にある場合、Sensitive Data Protection はターゲット infoType の検出結果を除外します。
ExcludeByImageFindingsを使用する場合は、matchingTypeフィールドをMATCHING_TYPE_RULE_SPECIFICに設定する必要があります。
除外ルールのシナリオ例
次の各 JSON スニペットは、特定のシナリオにおける機密データの保護の構成方法を示しています。
EMAIL_ADDRESS 検出器スキャンから特定のメールアドレスを除外する
次の JSON スニペットと複数の言語のコードは、EMAIL_ADDRESS infoType 検出器を使用するスキャンで、「example@example.com」との一致を避けるように、InspectConfig を使用して機密データの保護に指示する方法を示しています。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
JSON で DLP API を使用する方法については、JSON クイックスタートをご覧ください。
...
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"rules":[
{
"exclusionRule":{
"dictionary":{
"wordList":{
"words":[
"example@example.com"
]
}
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
]
}
...
EMAIL_ADDRESS 検出器スキャンから特定のドメインで終わるメールアドレスを除外する
次の JSON スニペットと複数の言語のコードは、EMAIL_ADDRESS infoType 検出器を使用するスキャンで、「@example.com」で終わるメールアドレスとの一致を避けるように、InspectConfig を使用して機密データの保護に指示する方法を示しています。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
JSON で DLP API を使用する方法については、JSON クイックスタートをご覧ください。
...
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"rules":[
{
"exclusionRule":{
"regex":{
"pattern":".+@example.com"
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
]
}
...
部分文字列「TEST」を含むスキャン一致をすべて除外する
次の JSON スニペットと複数の言語で記述されたコードは、InspectConfig を使用して、トークン「TEST」を含むスキャン結果を指定した infoType のリストから除外するように機密データの保護へ示す方法を表したものです。
これは部分文字列ではなくトークンとして「TEST」と照合されるため、「TEST@email.com」のような文字列は一致しますが、「TESTER@email.com」は一致しないことにご注意ください。部分文字列で照合する場合は、辞書ではなく除外ルールで正規表現を使用します。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
JSON で DLP API を使用する方法については、JSON クイックスタートをご覧ください。
...
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
},
{
"name":"DOMAIN_NAME"
},
{
"name":"PHONE_NUMBER"
},
{
"name":"PERSON_NAME"
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
},
{
"name":"DOMAIN_NAME"
},
{
"name":"PHONE_NUMBER"
},
{
"name":"PERSON_NAME"
}
],
"rules":[
{
"exclusionRule":{
"dictionary":{
"wordList":{
"words":[
"TEST"
]
}
},
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
}
}
]
}
]
}
...
カスタム infoType 検出器のスキャンで部分文字列「Jimmy」を含むスキャンの一致を除外する
次の JSON スニペットと複数の言語のコードは、指定されたカスタム正規表現検出器を使用するスキャンで、「Jimmy」という名前との一致を避けるように、InspectConfig を使用して機密データの保護に指示する方法を示しています。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
JSON で DLP API を使用する方法については、JSON クイックスタートをご覧ください。
...
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"CUSTOM_NAME_DETECTOR"
},
"regex":{
"pattern":"[A-Z][a-z]{1,15}, [A-Z][a-z]{1,15}"
}
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"CUSTOM_NAME_DETECTOR"
}
],
"rules":[
{
"exclusionRule":{
"dictionary":{
"wordList":{
"words":[
"Jimmy"
]
}
},
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
}
}
]
}
]
}
...
PERSON_NAME 検出器スキャンからカスタム検出器と重複するスキャン一致を除外する
このシナリオでは、スニペットの最初の部分で定義されているカスタム正規表現検出器を使用したスキャンで一致した結果を、PERSON_NAME 組み込み検出器を使用した機密データの保護スキャンで一致させないようにします。
次の JSON スニペットと複数の言語のコードは、InspectConfig でカスタム正規表現検出器と除外ルールの両方を指定しています。カスタム正規表現検出器では、結果から除外する名前を指定しています。除外ルールでは、PERSON_NAME スキャンから返された結果がカスタム正規表現検出器でも一致する場合に除外するよう指定しています。この例で、VIP_DETECTOR は EXCLUSION_TYPE_EXCLUDE として指定されているため、結果自体が生成されません。影響があるのは PERSON_NAME 検出器によって生成される結果のみです。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
JSON で DLP API を使用する方法については、JSON クイックスタートをご覧ください。
...
"inspectConfig":{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"customInfoTypes":[
{
"infoType":{
"name":"VIP_DETECTOR"
},
"regex":{
"pattern":"Dana Williams|Quinn Garcia"
},
"exclusionType":"EXCLUSION_TYPE_EXCLUDE"
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"rules":[
{
"exclusionRule":{
"excludeInfoTypes":{
"infoTypes":[
{
"name":"VIP_DETECTOR"
}
]
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
]
}
...
EMAIL_ADDRESS 検出器でも一致する場合に PERSON_NAME 検出器の一致を除外する
次の JSON スニペットと複数の言語のコードは、EMAIL_ADDRESS 検出器の一致が PERSON_NAME 検出器の一致と重複した場合に 1 つの一致のみを返すように、InspectConfig を使用して機密データの保護に指示する方法を示しています。こうすることで、「james@example.com」などのメールアドレスが PERSON_NAME 検出器と EMAIL_ADDRESS 検出器の両方で一致する状況を避けられます。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
JSON で DLP API を使用する方法については、JSON クイックスタートをご覧ください。
...
"inspectConfig":{
"infoTypes":[
{
"name":"PERSON_NAME"
},
{
"name":"EMAIL_ADDRESS"
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"rules":[
{
"exclusionRule":{
"excludeInfoTypes":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
},
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
}
}
]
}
]
}
...
DOMAIN_NAME 検出器スキャンでメールアドレスの一部であるドメイン名の一致を除外する
次の JSON スニペットと複数の言語のコードは、EMAIL_ADDRESS 検出器スキャンの一致と重複しない場合に、DOMAIN_NAME 検出器スキャンの一致のみを返すように、InspectConfigを使用して機密データの保護に指示する方法を示しています。このシナリオで、メインのスキャンは DOMAIN_NAME 検出器スキャンです。ドメイン名がメールアドレスで使用されている場合、検出結果にドメイン名の一致が返されないようにします。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
JSON で DLP API を使用する方法については、JSON クイックスタートをご覧ください。
...
"inspectConfig":{
"infoTypes":[
{
"name":"DOMAIN_NAME"
},
{
"name":"EMAIL_ADDRESS"
}
],
"customInfoTypes":[
{
"infoType":{
"name":"EMAIL_ADDRESS"
},
"exclusionType":"EXCLUSION_TYPE_EXCLUDE"
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"DOMAIN_NAME"
}
],
"rules":[
{
"exclusionRule":{
"excludeInfoTypes":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
},
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
}
}
]
}
]
}
...
文字列の近くにある一致を省略する
次の例は、単語「SKU」が検出結果の前後 10 文字以内にある場合に、US_SOCIAL_SECURITY_NUMBER infoType 検出器で一致を除外する方法を示しています。
除外ルールにより、この例では 222-22-2222 は米国の社会保障番号として分類されません。
{
"item": {
"value": "The customer sent the product SKU 222-22-2222"
},
"inspectConfig": {
"infoTypes": [
{
"name": "US_SOCIAL_SECURITY_NUMBER"
}
],
"ruleSet": [
{
"infoTypes": [
{
"name": "US_SOCIAL_SECURITY_NUMBER"
}
],
"rules": [
{
"exclusionRule": {
"excludeByHotword": {
"hotwordRegex": {
"pattern": "(SKU)"
},
"proximity": {
"windowBefore": 10,
"windowAfter": 10
}
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
],
"includeQuote": true
}
}
データの列全体の検出結果を除外する
次の例は、列の名前が正規表現と一致する場合に、表形式データの列全体で検出結果を除外する方法を示しています。ここでは、US_SOCIAL_SECURITY_NUMBER infoType 検出器に一致する結果が [Fake Social Security Number] 列に含まれている場合、その検出結果は結果から除外されます。
この例では、111-11-1111 が [Fake Social Security Number列にあるため、222-22-2222 のみを返します。
{
"item": {
"table": {
"headers": [
{
"name": "Fake Social Security Number"
},
{
"name": "Real Social Security Number"
}
],
"rows": [
{
"values": [
{
"stringValue": "111-11-1111"
},
{
"stringValue": "222-22-2222"
}
]
}
]
}
},
"inspectConfig": {
"infoTypes": [
{
"name": "US_SOCIAL_SECURITY_NUMBER"
}
],
"includeQuote": true,
"ruleSet": [
{
"infoTypes": [
{
"name": "US_SOCIAL_SECURITY_NUMBER"
}
],
"rules": [
{
"exclusionRule": {
"excludeByHotword": {
"hotwordRegex": {
"pattern": "(Fake Social Security Number)"
},
"proximity": {
"windowBefore": 1
}
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
],
"minLikelihood": "POSSIBLE"
}
}
空間的関係に基づいて画像内の検出結果を省略する
次の JSON スニペットは、検出された他のオブジェクトとの空間的関係に基づいて、画像内の検出結果を除外するように機密データの保護を構成する方法を示しています。
パスポートの一部である場合は、人物の検出を除外する
このルールでは、パスポートの検出結果(OBJECT_TYPE/PERSON/PASSPORT)に含まれている人物の検出結果(OBJECT_TYPE/PERSON)を除外します。
{
"inspectConfig": {
"infoTypes": [
{
"name": "OBJECT_TYPE/PERSON"
},
{
"name": "OBJECT_TYPE/PERSON/PASSPORT"
}
],
"ruleSet": [
{
"infoTypes": [
{
"name": "OBJECT_TYPE/PERSON"
}
],
"rules": [
{
"exclusionRule": {
"excludeByImageFindings": {
"infoTypes": [
{
"name": "OBJECT_TYPE/PERSON/PASSPORT"
}
],
"imageContainmentType": {
"encloses": {}
}
},
"matchingType": "MATCHING_TYPE_RULE_SPECIFIC"
}
}
]
}
]
}
}
車両識別番号が含まれている場合はナンバー プレートの検出結果を除外する
このルールは、VEHICLE_IDENTIFICATION_NUMBER の検出が完全に含まれている場合、ナンバー プレート(OBJECT_TYPE/LICENSE_PLATE)の検出を除外します。
{
"inspectConfig": {
"infoTypes": [
{
"name": "OBJECT_TYPE/LICENSE_PLATE"
},
{
"name": "VEHICLE_IDENTIFICATION_NUMBER"
}
],
"ruleSet": [
{
"infoTypes": [
{
"name": "OBJECT_TYPE/LICENSE_PLATE"
}
],
"rules": [
{
"exclusionRule": {
"excludeByImageFindings": {
"infoTypes": [
{
"name": "VEHICLE_IDENTIFICATION_NUMBER"
}
],
"imageContainmentType": {
"fullyInside": {}
}
},
"matchingType": "MATCHING_TYPE_RULE_SPECIFIC"
}
}
]
}
]
}
}
ホットワード ルール
起動ワードルールは次のような状況で役立ちます。
- スキャンの一致に割り当てられた可能性の値を、ホットワードへの一致の近接度に基づいて変更したい場合。たとえば、「patient(患者)」という単語への患者名の近接度に応じて、その名前に対する一致の可能性値を高く設定したい場合です。
- 構造化された表形式データを調べる際、列のヘッダー名に基づいて一致に割り当てられた可能性の値を変更したい場合。たとえば、ヘッダー
ACCOUNT_IDの列のデータに対し、US_SOCIAL_SECURITY_NUMBERの可能性値を高く設定したい場合です。
ホットワード ルール API の概要
機密データの保護の InspectionRule オブジェクト内で、HotwordRule オブジェクトを指定します。このオブジェクトでは、ホットワードへの一定の近接度の範囲内において、検索結果の可能性の値を調整します。
InspectionRule オブジェクトは、ルールセットが適用される infoType 検出器のリストとともに、「ルールセット」として InspectionRuleSet オブジェクトにグループ化されます。ルールセット内のルールは、指定された順序で適用されます。
ホットワード ルールのシナリオ例
次のコード スニペットは、ホットワード ルールを構成する方法を示しています。
ホットワード「patient」が近くにある場合に PERSON_NAME の一致の可能性を高める
次の JSON スニペットと複数の言語のコードは、医療データベースで患者名をスキャンするために、InspectConfig プロパティを使用する方法を示しています。機密データの保護の組み込み PERSON_NAME infoType 検出器を使用できますが、その場合、機密データの保護では、患者名だけでなくすべての人の名前が一致してしまいます。これを修正するには、ホットワード ルールを組み込んで、一致候補の最初の文字から特定の文字の近接度の範囲内で単語「patient」を探します。このパターンに一致した結果は特殊な基準を満たしているので、可能性として「very likely」を割り当てることができます。InspectConfig 内で最低限の Likelihood を VERY_LIKELY に設定しておくと、この構成に一致するもののみが結果で返されるようになります。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
JSON で DLP API を使用する方法については、JSON クイックスタートをご覧ください。
...
"inspectConfig":{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"rules":[
{
"hotwordRule":{
"hotwordRegex":{
"pattern":"patient"
},
"proximity":{
"windowBefore":50
},
"likelihoodAdjustment":{
"fixedLikelihood":"VERY_LIKELY"
}
}
}
]
}
],
"minLikelihood":"VERY_LIKELY"
}
...
ホットワードの詳細については、一致の可能性のカスタマイズをご覧ください。
調整ルール
調整ルールを使用すると、検出結果が表示されるコンテキストに基づいて検出結果の可能性の値を増減(ブーストとも呼ばれます)することで、検出精度を高めることができます。
調整ルールは、次のような状況で役立ちます。
検出結果がコンテキスト infoType の検出結果と重複している場合に、ターゲット infoType の検出結果の可能性の値を変更したい場合。たとえば、
DOCUMENT_TYPE/CONTEXT/HEALTHに一致するドキュメントで検出されたPERSON_NAME検出結果の可能性の値を大きくします。ターゲット infoType の検出結果の可能性の値を、画像内の他の検出結果との空間的関係に基づいて変更したい場合。たとえば、
OBJECT_TYPE/PERSON/PHOTO_ID_CARDに一致する画像内で検出されたGENERIC_ID検出結果の可能性の値を大きくします。
調整ルール API の概要
Sensitive Data Protection では、AdjustmentRule オブジェクトで調整ルールを定義します。AdjustmentRule 内で、次の項目を指定します。
次のいずれかになります。
AdjustByMatchingInfoTypesオブジェクト。検出結果がコンテキスト infoType の検出結果と重複する場合に、ターゲット infoType の検出結果の可能性の値を調整します。このオブジェクトには次のものが含まれます。- ターゲット infoType の検出結果を調整するかどうかを判断するために使用されるコンテキスト infoType のリスト。
- コンテキスト infoType の
min_likelihood値。検出されたコンテキスト検出結果の可能性の値がこの値よりも低い場合、Sensitive Data Protection はターゲット検出結果の可能性を調整しません。 matching_type値。MATCHING_TYPE_PARTIAL_MATCHに設定する必要があります。
AdjustByImageFindingsオブジェクト。コンテキスト infoType のバウンディング ボックスがターゲット infoType の検出結果と指定された関係にある場合、ターゲット infoType の検出結果の可能性の値を調整します。このオブジェクトには次のものが含まれます。ターゲット infoType の検出結果を調整するかどうかを判断するために使用されるコンテキスト infoType のリスト。
ImageContainmentTypeオブジェクト。ターゲットとコンテキストの検出結果の境界ボックス間の必要な空間関係を指定します。この要件が満たされていない場合、機密データの保護はターゲット infoType の検出結果の可能性を調整しません。コンテキスト infoType の
min_likelihood値。検出されたコンテキスト検出結果の可能性の値がこの値よりも低い場合、Sensitive Data Protection はターゲット検出結果の可能性を調整しません。
likelihood_adjustmentオブジェクト。新しい可能性を固定値または相対調整として指定します。
調整ルールのシナリオ例
次の JSON スニペットは、さまざまなシナリオで調整ルールを構成する方法を示しています。
健康関連のドキュメントで使用されている人物名の可能性を高める
次の例では、検出結果が DOCUMENT_TYPE/CONTEXT/HEALTH 検出結果と重複している場合、PERSON_NAME 検出結果の可能性の値を VERY_LIKELY に引き上げます。
{
"parent": "projects/PROJECT_ID",
"inspectConfig": {
"infoTypes": [
{
"name": "PERSON_NAME"
},
{
"name": "DOCUMENT_TYPE/CONTEXT/HEALTH"
}
],
"ruleSet": [
{
"infoTypes": [
{
"name": "PERSON_NAME"
}
],
"rules": [
{
"adjustmentRule": {
"adjustByMatchingInfoTypes": {
"infoTypes": [
{
"name": "DOCUMENT_TYPE/CONTEXT/HEALTH"
}
],
"minLikelihood": "POSSIBLE",
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
},
"likelihoodAdjustment": {
"fixedLikelihood": "VERY_LIKELY"
}
}
}
]
}
]
},
"item": {
"value": "My name is John and my arm is broken."
}
}
PROJECT_ID は、リクエストに関連付けられているプロジェクトの ID に置き換えます。
健康関連ドキュメント内の人物名の可能性を高め、健康関連ドキュメントを除外する
次の例では、検出結果が DOCUMENT_TYPE/CONTEXT/HEALTH 検出結果と重複している場合、PERSON_NAME 検出結果の可能性の値を VERY_LIKELY に引き上げます。ノイズを減らすため、この例では 2 つ目のルールを指定しています。このルールは、DOCUMENT_TYPE/CONTEXT/HEALTH の検出結果を検査結果から除外します。
ルールセット内のルールが指定される順序は重要です。この例では、調整ルールが除外ルールの前に指定されているため、DOCUMENT_TYPE/CONTEXT/HEALTH の結果を使用して調整ルールのコンテキストを提供できます。除外ルールを最初に指定すると、DOCUMENT_TYPE/CONTEXT/HEALTH の結果は、調整ルールにコンテキストを提供するために使用される前に、結果セットから除外されます。
{
"parent": "projects/PROJECT_ID",
"inspectConfig": {
"infoTypes": [{
"name": "PERSON_NAME"
}, {
"name": "DOCUMENT_TYPE/CONTEXT/HEALTH"
}],
"minLikelihood": "VERY_UNLIKELY",
"ruleSet": [{
"infoTypes": [{
"name": "PERSON_NAME"
}],
"rules": [{
"adjustmentRule": {
"adjustByMatchingInfoTypes": {
"infoTypes": [{
"name": "DOCUMENT_TYPE/CONTEXT/HEALTH"
}],
"minLikelihood": "VERY_UNLIKELY",
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
},
"likelihoodAdjustment": {
"fixedLikelihood": "VERY_LIKELY"
}
}
}]
}, {
"infoTypes": [{
"name": "DOCUMENT_TYPE/CONTEXT/HEALTH"
}],
"rules": [{
"exclusionRule": {
"excludeInfoTypes": {
"infoTypes": [{
"name": "DOCUMENT_TYPE/CONTEXT/HEALTH"
}]
},
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
}
}]
}]
},
"item": {
"value": "My name is John and my arm is broken."
}
}
PROJECT_ID は、リクエストに関連付けられているプロジェクトの ID に置き換えます。
写真付き身分証明書の人物の可能性を高める
次の例では、OBJECT_TYPE/PERSON/PHOTO_ID_CARD 検出結果のバウンディング ボックス内に OBJECT_TYPE/PERSON 検出結果が表示された場合、その検出結果の尤度値を VERY_LIKELY に引き上げます。
...
"inspectConfig": {
"infoTypes": [
{
"name": "OBJECT_TYPE/PERSON"
},
{
"name": "OBJECT_TYPE/PERSON/PHOTO_ID_CARD"
}
],
"ruleSet": [
{
"infoTypes": [
{
"name": "OBJECT_TYPE/PERSON"
}
],
"rules": [
{
"adjustmentRule": {
"adjustByImageFindings": {
"infoTypes": [
{
"name": "OBJECT_TYPE/PERSON/PHOTO_ID_CARD"
}
],
"imageContainmentType": {
"encloses": {}
},
"minLikelihood": "POSSIBLE"
},
"likelihoodAdjustment": {
"fixedLikelihood": "VERY_LIKELY"
}
}
}
]
}
]
}
...
個人識別子を含むパスポートの可能性を高める
次の例では、PERSON_NAME または DATE_OF_BIRTH の検出結果が完全に含まれている場合、OBJECT_TYPE/PERSON/PASSPORT の検出結果の尤度値を VERY_LIKELY に引き上げます。
...
"inspectConfig": {
"infoTypes": [
{
"name": "OBJECT_TYPE/PERSON/PASSPORT"
},
{
"name": "PERSON_NAME"
},
{
"name": "DATE_OF_BIRTH"
}
],
"ruleSet": [
{
"infoTypes": [
{
"name": "OBJECT_TYPE/PERSON/PASSPORT"
}
],
"rules": [
{
"adjustmentRule": {
"adjustByImageFindings": {
"infoTypes": [
{
"name": "PERSON_NAME"
},
{
"name": "DATE_OF_BIRTH"
}
],
"imageContainmentType": {
"fullyInside": {}
},
"minLikelihood": "POSSIBLE"
},
"likelihoodAdjustment": {
"fixedLikelihood": "VERY_LIKELY"
}
}
}
]
}
]
}
...
複数の検査ルールのシナリオ
次の InspectConfig JSON スニペットと複数の言語のコードは、除外ルールと起動ワードルールの両方を適用する方法を示しています。このスニペットのルールセットには、起動ワードルールと、辞書と正規表現の除外ルールの両方が含まれています。rules 要素内の配列に 4 つのルールが指定されている点に注目してください。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
JSON で DLP API を使用する方法については、JSON クイックスタートをご覧ください。
...
"inspectConfig":{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"ruleSet":[
{
"infoTypes":[
{
"name":"PERSON_NAME"
}
],
"rules":[
{
"hotwordRule":{
"hotwordRegex":{
"pattern":"patient"
},
"proximity":{
"windowBefore":10
},
"likelihoodAdjustment":{
"fixedLikelihood":"VERY_LIKELY"
}
}
},
{
"hotwordRule":{
"hotwordRegex":{
"pattern":"doctor"
},
"proximity":{
"windowBefore":10
},
"likelihoodAdjustment":{
"fixedLikelihood":"UNLIKELY"
}
}
},
{
"exclusionRule":{
"dictionary":{
"wordList":{
"words":[
"Quasimodo"
]
}
},
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
}
},
{
"exclusionRule":{
"regex":{
"pattern":"REDACTED"
},
"matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
}
}
]
}
]
}
...
infoType 検出器の重複
カスタム infoType 検出器には、組み込みの infoType 検出器と同じ名前を定義することが可能です。ホットワード ルールのシナリオ例で示したように、組み込みの infoType 検出器と同じ名前のカスタム infoType 検出器を作成すると、新しい infoType 検出器で検出された結果が、組み込み検出器で検出された結果に追加されます。この現象は、組み込みの infoType が InspectConfig オブジェクト内の infoType のリストに指定されている場合に限り発生します。
新しいカスタム infoType 検出器を作成する場合は、サンプル コンテンツに対して十分にテストし、意図したとおりに機能するようにします。