スキャン結果を絞り込むための infoType 検出器の変更

Cloud Data Loss Prevention(DLP)の組み込みの infoType 検出器は、一般的なタイプの機密データを検出するのに有効です。カスタムの infoType 検出器を使用すると、独自の機密データ検出器を自由にカスタマイズできます。検査ルールによって、特定の infoType 検出器の検出メカニズムを変更し、Cloud DLP から返されるスキャン結果を絞り込むことができます。

組み込みの infoType 検出器から返される結果から値を除外したり、追加したりする場合は、新しいカスタム infoType を最初から作成し、Cloud DLP が検索する基準をすべて定義します。また、Cloud DLP の組み込みまたはカスタムの検出器から返される結果を特定の基準で絞り込むこともできます。これを行うには、ノイズの低減、適合率と再現率の増加、スキャン結果の確実性調整に役立つ検査ルールを追加します。

このトピックでは、2 種類の検査ルールを使用して、指定したカスタム条件に基づいて特定の検索結果を除外したり追加したりする方法について説明します。また、既存の infoType 検出器を変更する場合のシナリオをいくつか紹介します。

検査ルールには 2 種類あります。

除外ルール

除外ルールは、次のような状況で役立ちます。

  • infoType 検出器の重複によって生じた、重複したスキャン一致を結果から除外する場合。たとえば、メールアドレスと電話番号をスキャンする際に、電話番号の入ったメールアドレス(「206-555-0764@example.org」など)によって 2 つの結果がヒットする場合です。
  • スキャン結果にノイズが発生している場合。たとえば、正当なメールアドレスのスキャンで、同一のダミーのメールアドレス(「example@example.com」など)やドメイン(「example.com」など)が無数に返される場合です。
  • 結果から除外する用語や、フレーズ、文字の組み合わせのリストがある場合。

除外ルール API の概要

Cloud DLP では、ExclusionRule オブジェクトに除外ルールを定義します。ExclusionRule 内に次のいずれかを指定します。

  • Dictionary オブジェクト。除外ルールが標準の辞書ルールであることを示します。
  • Regex オブジェクト。除外ルールが正規表現ルールであることを示します。
  • ExcludeInfoTypes オブジェクト。infoType 検出器の配列が含まれます。ここにリストされている infoType 検出器のいずれかと検索結果が一致する場合、その検索結果はスキャン結果から除外されます。

除外ルールのシナリオ例

次の各 JSON コード スニペットは、特定のシナリオにおける Cloud DLP の構成方法を示しています。

EMAIL_ADDRESS 検出器スキャンから特定のメールアドレスを除外する

次の JSON スニペットは、infoType 検出器 EMAIL_ADDRESS を使用するスキャンで「example@example.com」との一致を避けるように、InspectConfig を使用して Cloud DLP に指示する方法を示しています。

...
    "inspectConfig":{
      "ruleSet":[
        {
          "infoTypes":[
            {
              "name":"EMAIL_ADDRESS"
            }
          ],
          "rules":[
            {
              "exclusionRule":{
                "dictionary":{
                  "wordList":{
                    "words":[
                      "example@example.com"
                    ]
                  }
                },
                "matchingType": "MATCHING_TYPE_FULL_MATCH"
              }
            }
          ]
        }
      ]
    }
...

EMAIL_ADDRESS 検出器スキャンから特定のドメインで終わるメールアドレスを除外する

次の JSON スニペットは、infoType 検出器 EMAIL_ADDRESS を使用するスキャンで、「@example.com」で終わるメールアドレスとの一致を避けるように、InspectConfig を使用して Cloud DLP に指示する方法を示しています。

...
    "inspectConfig":{
      "ruleSet":[
        {
          "infoTypes":[
            {
              "name":"EMAIL_ADDRESS"
            }
          ],
          "rules":[
            {
              "exclusionRule":{
                "regex":{
                  "pattern":".+@example.com"
                },
                "matchingType": "MATCHING_TYPE_FULL_MATCH"
              }
            }
          ]
        }
      ]
    }
...

部分文字列「REDACTED」を含むスキャン一致をすべて除外する

次の JSON スニペットは、部分文字列「REDACTED」を含む検索結果を除外するように、InspectConfig を使用して Cloud DLP に指示する方法を示しています。

...
    "inspectConfig":{
      "ruleSet":[
        {
          "infoTypes":[
            {
              "name":"ALL_BASIC"
            }
          ],
          "rules":[
            {
              "exclusionRule":{
                "dictionary":{
                  "wordList":{
                    "words":[
                      "REDACTED"
                    ]
                  }
                },
                "matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
              }
            }
          ]
        }
      ]
    }
...

カスタム infoType 検出器スキャンから部分文字列「Jimmy」を含むスキャン一致を除外する

次の JSON スニペットは、指定されたカスタム正規表現検出器を使用するスキャンで「Jimmy」という名前との一致を避けるように、InspectConfig を使用して Cloud DLP に指示する方法を示しています。

...
    "inspectConfig":{
      "customInfoTypes":[
        {
          "infoType":{
            "name":"CUSTOM_NAME_DETECTOR"
          },
          "regex":{
            "pattern":"\d{2,6}\s\w.\s(\b\w*\b\s){2,4}\w*\."
          }
        }
      ],
      "ruleSet":[
        {
          "infoTypes":[
            {
              "name":"CUSTOM_NAME_DETECTOR"
            }
          ],
          "rules":[
            {
              "exclusionRule":{
                "dictionary":{
                  "wordList":{
                    "words":[
                      "jimmy"
                    ]
                  }
                },
                "matchingType": "MATCHING_TYPE_PARTIAL_MATCH"
              }
            }
          ]
        }
      ]
    }
...

PERSON_NAME 検出器スキャンからカスタム検出器と重複するスキャン一致を除外する

このシナリオでは、スニペットの最初の部分で定義されているカスタム正規表現検出器を使用したスキャンで一致した結果を、PERSON_NAME 組み込み検出器を使用した Cloud DLP スキャンで一致させないようにします。次の JSON スニペットでは、InspectConfig でカスタム正規表現検出器と除外ルールの両方を指定しています。カスタム正規表現検出器では、結果から除外する名前を指定しています。除外ルールでは、PERSON_NAME スキャンから返された結果がカスタム正規表現検出器でも一致する場合に除外するよう指定しています。この例で、VIP_DETECTOREXCLUSION_TYPE_EXCLUDE として指定されているため、結果自体が生成されません。影響があるのは PERSON_NAME 検出器によって生成される結果のみです。

...
    "inspectConfig":{
      "customInfoTypes":[
        {
          "infoType":{
            "name":"VIP_DETECTOR"
          },
          "regex":{
            "pattern":"Larry Page|Sergey Brin"
          },
          "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 スニペットは、PERSON_NAME 検出器の一致が EMAIL_ADDRESS 検出器の一致と重複した場合に 1 つの一致のみを返すように、InspectConfig を使用して Cloud DLP に指示する方法を示しています。こうすることで、「james@example.com」などのメールアドレスが PERSON_NAME 検出器と EMAIL_ADDRESS 検出器の両方で一致する状況を避けられます。

...
    "inspectConfig":{
      "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 を使用して Cloud DLP に指示する方法を示しています。このシナリオで、メインのスキャンは DOMAIN_NAME 検出器スキャンです。ドメイン名がメールアドレスで使用されている場合、検出結果にドメイン名の一致が返されないようにします。

...
    "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"
              }
            }
          ]
        }
      ]
    }
...

ホットワード ルール

ホットワード ルールは、次のような状況で役立ちます。

  • スキャンの一致に割り当てられた可能性の値を、ホットワードへの一致の近接度に基づいて変更したい場合。たとえば、「patient(患者)」という単語への患者名の近接度に応じて、その名前に対する一致の可能性値を高く設定したい場合です。

ホットワード ルール API の概要

Cloud DLP の InspectionRule オブジェクト内で、HotwordRule オブジェクトを指定します。このオブジェクトでは、ホットワードへの一定の近接度の範囲内において、検索結果の可能性の値を調整します。

InspectionRule オブジェクトは、ルールセットが適用される infoType 検出器のリストとともに、InspectionRuleSet オブジェクト内の「ルールセット」としてグループ化されます。ルールセット内のルールは、指定された順序で適用されます。

ホットワード ルールのシナリオ例

以下の JSON コード スニペットは、特定のシナリオにおける Cloud DLP の構成方法を示しています。

ホットワード「patient」が近くにある場合に PERSON_NAME の一致の可能性を高める

次の JSON スニペットは、InspectConfig を使用して、患者名について医療データベースをスキャンするシナリオを示しています。Cloud DLP に組み込まれている PERSON_NAME infoType 検出器を使用できますが、これにより、Cloud DLP で患者名だけでなく、すべての人の名前に一致するようになります。これを修正するには、ホットワード ルールを組み込んで、一致候補の最初の文字から特定の文字の近接度の範囲内で単語「patient」を探します。このパターンに一致した結果は特殊な基準を満たしているため、可能性として「very likely」を割り当てられます。InspectConfig 内で最低限の LikelihoodVERY_LIKELY に設定しておくと、この構成に一致するもののみが結果で返されるようになります。

...
  "inspectConfig":{
    "ruleSet":[
      {
        "infoTypes":[
          {
            "name":"PERSON_NAME"
          }
        ],
        "rules":[
          {
            "hotwordRule":{
              "hotwordRegex":{
                "pattern":"patient"
              },
              "proximity":{
                "windowBefore":50
              },
              "likelihoodAdjustment":{
                "fixedLikelihood":"VERY_LIKELY"
              }
            }
          }
        ]
      }
    ],
    "minLikelihood":"VERY_LIKELY"
  }
...

ホットワードの詳細については、一致の可能性のカスタマイズをご覧ください。

複数の検査ルールのシナリオ

以下の InspectConfig JSON スニペットは、除外ルールとホットワード ルールの両方を適用する方法を示しています。このスニペットのルールセットには、ホットワード ルールと、辞書と正規表現の除外ルールの両方が含まれています。rules 要素内の配列に 4 つのルールが指定されている点に注目してください。

...
  "inspectConfig":{
    "ruleSet":[
      {
        "infoTypes":[
          {
            "name":"PERSON_NAME"
          }
        ],
        "rules":[
          {
            "hotwordRule":{
              "hotwordRegex":{
                "pattern":"patient"
              },
              "proximity":{
                "windowBefore":5
              },
              "likelihoodAdjustment":{
                "fixedLikelihood":"VERY_LIKELY"
              }
            }
          },
          {
            "hotwordRule":{
              "hotwordRegex":{
                "pattern":"doctor"
              },
              "proximity":{
                "windowBefore":5
              },
              "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 検出器を作成する場合は、サンプル コンテンツに対して十分にテストし、意図したとおりに機能するようにします。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Data Loss Prevention のドキュメント