はじめに
Cloud DLPはデータ内の機密情報有無を検出することができるGoogle Cloudのマネージドサービスです。
検出する情報を定義できるinfoType検出器はデフォルトでも150以上存在しますが、
今回は独自にカスタムしたinfoType検出器を使い、自分で指定した正規表現パターンでの情報検出を試してみました。
環境用意
※ 必要な権限付与については割愛し作業のみ記載します。
作業を行うGoogle Cloud プロジェクトでCloud Shellを起動します。
DLP APIを有効にします。
$ gcloud services enable dlp.googleapis.com
やってみた
サンプルをこちらのドキュメントから引用し、架空のカルテ番号をシミュレートした正規表現を設定して実行しました。
入力
Cloud Shellのエディタ機能で、リクエストする内容をjsonファイルとして保存します。
以下のjsonファイルを「inspect-request.json」という名前でホームディレクトリに保存します。
{
"item":{
"value":"Patients MRN 444-5-22222"
},
"inspectConfig":{
"customInfoTypes":[
{
"infoType":{
"name":"C_MRN"
},
"regex":{
"pattern":"[1-9]{3}-[1-9]{1}-[1-9]{5}"
},
"likelihood":"POSSIBLE"
}
]
}
}
item.valueが検査したい文字列、 inspectConfig.customInfoTypes 内が検出ルールです。 content.inspect APIのパラメータの詳細はこちらのリファレンスに記載がありました。
実行と出力
ターミナルに戻り、以下のコマンドを実行します。 ※ [PROJECT_NAME] はご自身のプロジェクト名に変換してください。
実行
$ cd ~ && curl -s -H \
"Authorization: Bearer $(gcloud auth print-access-token)" \
-H \
"X-Goog-User-Project: [PROJECT_NAME]" \
-H \
"Content-Type: application/json" \
https://dlp.googleapis.com/v2/projects/[PROJECT_NAME]/content:inspect \
-d @inspect-request.json
出力
{
"result": {
"findings": [
{
"infoType": {
"name": "C_MRN",
"sensitivityScore": {
"score": "SENSITIVITY_HIGH"
}
},
"likelihood": "POSSIBLE",
"location": {
"byteRange": {
"start": "13",
"end": "24"
},
"codepointRange": {
"start": "13",
"end": "24"
}
},
"createTime": "2023-05-09T08:28:42.302Z",
"findingId": "2023-05-09T08:28:42.302977Z6029351097285534895"
}
]
}
}
入力データの13文字目から24文字目に、正規表現に合致するデータが検出されたことがわかります。