Cloud DLPは、2つの機能があります。
機密データの「検査(Inspection)」と検出した機密データの「変換」が可能です。変換は「削除/置換」と「匿名化」の2種類に分類できます。
検査については、機密データを検出するためにInfo Typeと呼ばれる検出ルールが組み込みで準備されています。
また、組み込みのInfo Typeに加えてカスタムのInfo Typeを作成することが可能です。
#使い方
検査の方法は、データを指定してAPIをCallするか、データが保持しているストレージに対してのDLPのスキャンを実施し機密データの検出が可能です。
削除や匿名化は、APIをCallすることで実施可能です。
#Info Type
2020/6現在、139個準備されています。
組み込みのInfo Typeの例としては、電話番号、Emailアドレスなど基本的な情報に加えて日本のパスポート番号やマイナンバーカード番号など各国に特化したルールも準備されています。
また、任意の単語を検出から除外することも可能です。
>除外ルールを使用すると、組み込みまたはカスタム infoType 検出器にルールを追加することで、返される結果の数を減らせます。
マニュアルにある以下の除外ルールの例は、「example@example.com」との一致を避けることが出来ます。
...
"inspectConfig":{
"ruleSet":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"rules":[
{
"exclusionRule":{
"dictionary":{
"wordList":{
"words":[
"example@example.com"
]
}
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
]
}
...
#カスタムInfo Type
組み込みInfo Typeで要件が満たせない場合は、カスタムInfo Typeを作成することができます。カスタムInfo Typeは以下の4種類です。
Regular expression
List of words or phrases
Small custom dictionary
Large custom dictionary
Regular expressionは正規表現で検出するパターンを定義できます。
それ以外はカスタムの辞書登録で、それぞれ指定できる辞書のサイズや格納先のストレージが異なります。
#ストレージに対してスキャンを実施し機密データの検出
ストレージに対してのスキャンは、GCS/Datastore/BigQueryに対して行うことができます。
データの総量が巨大な場合にすべてのデータを検出対象にすることは現実的ではないこともありますので、一部データをサンプリングしてスキャンすることができます。サンプリングは総データ量のうち何割をスキャン対象にするかを指定します。
検出の正確性についても設定可能です。
#検出した機密データの変換
検出した機密データを変換することが可能です。変換は「削除/置換」と「匿名化」の2種類に分類できます。
変換方法については以下のマニュアルに記載があります。
https://cloud.google.com/dlp/docs/transformations-reference
###変換方法一覧
削除
置換
Info Typeでの置換
マスキング
暗号ベースのトークン化(仮名化)変換 - 暗号ハッシュ
暗号ベースのトークン化(仮名化)変換 - フォーマット保持暗号化
固定サイズのバケット化
カスタマイズ可能なバケット化
日付シフト
時間データの抽出
ここからいくつかの変換方法について見ていきたいと思います。
まずは、「削除(RedactConfig)」です。以下の例では、Emailアドレスである「aabernathy@example.com」を削除しています。こちらのJSONをBodyとして「https://dlp.googleapis.com/v2/projects/[PROJECT ID]/content:deidentify」にPOSTすることより、「"value": "My name is Alicia Abernathy, and my email address is ."」という形でレスポンスを受け取れます。
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"redactConfig":{
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
以下の例は、「置換(ReplaceValueConfig)」の例です。「aabernathy@example.com」を「[email-address]」に置換します。
https://cloud.google.com/dlp/docs/redacting-sensitive-data
{
"item":{
"value":"My name is Alicia Abernathy, and my email address is aabernathy@example.com."
},
"deidentifyConfig":{
"infoTypeTransformations":{
"transformations":[
{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
],
"primitiveTransformation":{
"replaceConfig":{
"newValue":{
"stringValue":"[email-address]"
}
}
}
}
]
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
}
]
}
}
また、上記のテキストに加えてイメージの置換も可能です。
https://cloud.google.com/dlp/docs/redacting-sensitive-data-images
上記、マニュアルに記載がありますが以下のようなイメージで置換できます。