格納されるカスタム辞書検出器の作成

通常のカスタム辞書検出器は、コンテンツでスキャンする重要な単語やフレーズのリストが短い場合に最適です。スキャンする単語やフレーズが少なくない場合や、単語やフレーズのリストが頻繁に変更される場合は、数千万語の単語やフレーズを検索できる、格納されるカスタム辞書の作成を検討してください。

このトピックでは、格納されるカスタム辞書を作成および更新する方法と、いくつかのエラーシナリオについて説明します。

格納されるカスタム辞書の構造

標準辞書カスタム infoType または正規表現カスタム infoType の作成方法(content.deidentify メソッドに送信する CustomInfoType オブジェクトを定義する)はご存知かもしれません。格納されるカスタム辞書はこれらとは異なります。格納されるカスタム辞書には、それぞれ次の 2 つのコンポーネントがあります。

  • 作成、定義するフレーズのリスト。このリストは、Cloud Storage 内のテキスト ファイルまたは BigQuery テーブル内の列として保存されます。
  • 生成された辞書ファイル。フレーズリストに基づいて Cloud DLP によって生成されます。辞書ファイルは Cloud Storage に保存され、ソースフレーズ データのコピーと、検索やマッチングに役立つブルーム フィルタで構成されます。辞書ファイルは直接編集できません。

格納される辞書を新規作成する

このセクションでは、格納される辞書を作成、編集、更新する方法について説明します。

フレーズリストを作成する

格納されるカスタム辞書を作成するための最初のステップは、単語とフレーズのリストを作成することです。これには次の 2 つの選択肢があります。

  • 各単語やフレーズを 1 行に 1 つずつ含むテキスト ファイルを Cloud Storage バケットに配置します。
  • BigQuery テーブルの 1 つの列をフレーズのコンテナとして指定します。各フレーズを列内の単独の行に含めます。辞書のすべての単語とフレーズを 1 つの列に収めるようにすると、既存の BigQuery テーブルを使用できます。

Cloud DLP で処理できない大きさの用語リストを作成することもできるのでご注意ください。エラー メッセージが表示された場合は、このトピックの後半のエラーのトラブルシューティングをご覧ください。

辞書を作成する

用語リストを作成したら、Cloud DLP を使用して辞書を作成します。

  1. 辞書用の新しいディレクトリを Cloud Storage バケットに作成します。Cloud DLP は、指定した場所に辞書ファイルを含むディレクトリを作成します。
  2. Cloud DLP API の 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 の ID。この値は、格納される infoType を更新または削除するとき、または検査ジョブや匿名化ジョブでその infoType を使用するときに参照する方法を示します。このフィールドを空のままにすると、システムによって ID が生成されます。

以下は、storedInfoTypes.create メソッドに送信されるときに、格納されるカスタム辞書を作成する JSON の例です。この例では、格納されるカスタム辞書を用語リスト(bigquery-public-data.samples.github_nested)から作成するように Cloud DLP に指示しています。この用語リストは、一般公開されている BigQuery データベースに保存されており、commit で使用されるすべての GitHub ユーザー名が含まれます。生成される辞書の出力パスは、dlptesting という Cloud Storage バケットに設定され、格納されるカスタム辞書には github-usernames という名前が付けられています。

JSON 入力:

POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/storedInfoTypes?key={YOUR_API_KEY}

{
  "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"
}

辞書を更新する

用語やフレーズを辞書に追加または削除する場合は、まずソース用語リストを更新し、その後、Cloud DLP に辞書の更新を指示します。

  1. Cloud Storage または BigQuery の既存のソース用語リストを更新します。必要に応じて、用語やフレーズを追加、削除、変更します。
  2. Cloud DLP の storedInfoTypes.patch メソッドを使用して、古いバージョンの辞書に置き換わる新しいバージョンの辞書を作成します。

用語の追加、削除、変更による辞書の更新のみを行う場合、storedInfoTypes.patch メソッドを単独で呼び出すだけでかまいません。name フィールドには、組織またはプロジェクトのリソース名、および更新予定の格納される infoType のリソース名を必ず入力してください。格納される infoType の名前は、storedInfoTypeId パラメータでこれを作成したときに指定されたものです。更新対象の格納される infoType の ID がわからない場合は、storedInfoTypes.list メソッドを呼び出して、現在保存済みのすべての infoType のリストを表示します。

次のパターンは、name フィールドの有効なエントリを表しています。

  • organizations/[ORG_ID]/storedInfoTypes/[STORED_INFOTYPE_ID]
  • projects/[PROJECT_ID]/storedInfoTypes/[STORED_INFOTYPE_ID]

格納されるカスタム辞書を新しいバージョンに更新すると、格納されるカスタム辞書の古いバージョンが削除されます。格納されるカスタム辞書を Cloud DLP が更新している間、辞書のステータスは「保留中」となります。新しいバージョンの辞書のステータスが保留中の場合、古いバージョンの辞書はまだ存在しています。辞書が更新されている間に実行するスキャンでは、古いバージョンの辞書が使用されます。

既存の格納されるカスタム辞書のソース用語リストは、BigQuery テーブルに格納されているものから Cloud Storage バケットに格納されているものに変更することも、その逆も可能です。storedInfoTypes.patch メソッドを使用しますが、以前 BigQueryField オブジェクトを使用していた LargeCustomDictionaryConfigCloudStorageFileSet オブジェクトを含めるか、その逆を行います。また、updateMask パラメータを FieldMask 形式で指定して、更新した格納されるカスタム辞書パラメータに設定する必要があります。たとえば次の JSON は、storedInfoTypes.patch メソッドに送信されると、Cloud Storage パスの URL が更新されたことを updateMask パラメータに示します(large_custom_dictionary.cloud_storage_file_set.url)。

PATCH https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/storedInfoTypes/github-usernames?key={YOUR_API_KEY}

{
  "config":{
    "largeCustomDictionary":{
      "cloudStorageFileSet":{
        "url":"gs://[BUCKET_NAME]/[PATH_TO_FILE]"
      }
    }
  },
  "updateMask":"large_custom_dictionary.cloud_storage_file_set.url"
}

格納されるカスタム辞書検出器を使用してコンテンツをスキャンする

格納されるカスタム辞書検出器を使用したコンテンツのスキャンは、他のカスタム infoType 検出器を使用したコンテンツのスキャンと似ています。

次の JSON は、content.inspect メソッドに送信されると、指定の格納されるカスタム辞書検出器を使用して、所定のテキストのスニペットをスキャンします。infoType パラメータは必須なので注意してください。これは、格納されるカスタム辞書を含むすべてのカスタム infoType は、組み込みの infoType または他のカスタム infoType と競合しない名前を持つ必要があるためです。storedType パラメータには、格納される infoType の完全なリソースパスが含まれます。

JSON 入力:

POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/content:inspect?key={YOUR_API_KEY}

{
  "inspectConfig":{
    "customInfoTypes":[
      {
        "infoType":{
          "name":"GITHUB_LOGINS"
        },
        "storedType":{
          "name":"projects/[PROJECT_ID]/storedInfoTypes/github-logins"
        }
      }
    ]
  },
  "item":{
    "value":"The commit was made by githubuser."
  }
}

エラーのトラブルシューティング

格納されるカスタム辞書を作成しようとしたときに、Cloud DLP が Cloud Storage ベースの用語リストから辞書を作成できないことを示すエラーが表示される場合は、いくつかの原因が考えられます。

  • 格納されるカスタム辞書の上限に達した。問題に応じて、いくつかの回避策があります。
    • Cloud Storage における単一の格納されるカスタム辞書の上限(200 MB)に達した場合、ファイルを複数のファイルに分割してみることができます。ファイルの合計サイズが、Cloud Storage に保存されているすべてのカスタム辞書ファイルの最大合計サイズ(1 GB)を超えない限り、これらのファイルを使用して 1 つのカスタム辞書を作ることができます。
    • BigQuery には Cloud Storage と同様の制限はありません。用語を BigQuery テーブルに移動することを検討してください。ただし、BigQuery の格納されるカスタム辞書列の最大サイズ(1 GB)と最大行数(5,000,000)の両方に注意してください。
    • 用語リストファイルが、格納されるカスタム辞書のソース用語リストに対して適用されるすべての制限を超えている場合は、用語リストファイルを Cloud Storage 内で複数のファイルに分割し、各ファイルの辞書を作成して、作成された辞書ごとに個別のスキャンジョブを作成する必要があります。
  • 1 つ以上の用語に文字または数字が 1 文字も含まれていない。Cloud DLP は、スペースまたは記号のみで構成される用語はスキャンできません。少なくとも 1 つの文字または数字が必要です。用語リストを見てそのような用語が含まれているかどうかを確認し、修正または削除します。
  • 用語リストに含まれているフレーズに構成要素が多すぎる。この文脈での構成要素とは、文字のみ、数字のみ、あるいは文字と数字以外の要素(空白や記号など)のみを含む連続するシーケンスです。用語リストを見てそのような用語が含まれているかどうかを確認し、修正または削除します。
  • DLP サービス アカウントから辞書ソースデータ、または辞書ファイルを保存するための Cloud Storage バケットにアクセスできない。この問題を解決するには、DLP サービス アカウントに Cloud Storage 管理者の役割または BigQuery の dataOwner と jobUser の役割を付与します。

API の概要

格納されるカスタム辞書は、そのサイズと複雑さのために、格納される infoType と見なされます。現時点では、格納されるカスタム辞書のタイプのみが、格納される infoType タイプです。

格納される infoType は Cloud DLP 内で StoredInfoType オブジェクトによって表現されます。これには以下の関連オブジェクトが伴います。

  • StoredInfoTypeConfig には、格納される infoType の構成が含まれます。構成には名前や説明などの詳細が含まれます。
  • StoredInfoTypeVersion には、格納される infoType の作成日時や、現在のバージョンが作成されたときに発生した最後の 5 つのエラー メッセージなど、格納される infoType に関する詳細情報が含まれます。
  • StoredInfoTypeState には、格納される infoType の最新のバージョンや、保留中のすべてのバージョンの状態が含まれます。状態情報には、格納される infoType が更新中であるか、使用準備ができているか、または無効であるかどうかが含まれます。

格納される infoType を作成、編集、削除するには、次のメソッドを使用します。

  • storedInfoTypes.create: 指定した StoredInfoTypeConfig を前提として、格納される infoType を新たに作成します。
  • storedInfoTypes.patch: 指定した新しい StoredInfoTypeConfig を使用して、格納される infoType を更新します。指定がない場合は、既存の StoredInfoTypeConfig を使用して、格納される infoType の新しいバージョンを作成します。
  • storedInfoTypes.get: StoredInfoTypeConfig と、指定した保存済みの infoType のすべての保留中バージョンを取得します。
  • storedInfoTypes.list: 現在の格納される infoType をすべて一覧表示します。
  • storedInfoTypes.delete: 指定した格納される infoType を削除します。

ここで説明した格納される infoType API に加えて、次のオブジェクトは格納されるカスタム辞書に特別に適用されます。

  • LargeCustomDictionaryConfig は次の両方を指定します。
    • フレーズリストが保存される Cloud Storage または BigQuery 内の場所。
    • 生成された辞書ファイルを保存する Cloud Storage 内の場所。

辞書での照合について

以下は、Cloud DLP でどのように辞書の単語やフレーズが照合されるかについて説明したガイダンスです。ここに示す内容は、標準カスタム辞書と格納されるカスタム辞書の両方に適用されます。

  • 辞書の単語では大文字と小文字が区別されません。辞書に Abby が含まれている場合、abbyABBYAbby などと一致します。
  • スキャン対象の辞書やコンテンツ内のすべての文字(Unicode 基本多言語面に含まれる英字と数字以外)は、照合のためのスキャン時に空白と見なされます。辞書で Abby Abernathy をスキャンすると、abby abernathyAbby, AbernathyAbby (ABERNATHY) などと一致します。
  • 一致する文字の前後の文字は、その単語内の隣接する文字とは異なるタイプ(文字または数字)でなければなりません。辞書で Abi をスキャンすると、Abi904 の最初の 3 文字とは一致しますが、Abigail の最初の 3 文字とは一致しません。
  • 辞書の単語に英字や数字ではない文字が大量に含まれる場合、それらの文字は空白として扱われるため、予期しない結果になることがあります。
このページは役立ちましたか?評価をお願いいたします。

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

Cloud Data Loss Prevention