Open4

Cloud DLPを使ったGCSコピー

イナミイナミ

匿名化しつつGCSコピーしてみる

Cloud DLPを利用して匿名加工する場合に一緒にデータの移動もしたくなることがある。
匿名加工のみを行って保存した後にコピーする方法も存在するが、処理の追跡もしにくくなる可能性が高いのでできれば一括でできると望ましい。

Cloud DLP Jobなら検査を行った後の出力先を選ぶできる。

https://cloud.google.com/dlp/docs/concepts-actions?hl=ja#available_actions

入力データ

テストデータジェネレータでダミーデータを作成して匿名化しつつGCSコピーしてみる。

https://testdata.userlocal.jp

氏名 氏名(ひらがな) 年齢 生年月日 性別 電話番号 携帯電話番号
市村 真実 いちむら まみ 31 1992年05月02日 03-2276-8209 080-9088-4995
山本 友美 やまもと ゆみ 58 1965年03月18日 06-0480-3414 080-3250-5536
関本 静香 せきもと しずか 62 1960年06月18日 0796-81-8283 070-7545-6535
三好 圭佑 みよし けいすけ 33 1989年12月17日 0438-41-4660 070-6698-5240
塚原 和人 つかはら かずと 24 1999年05月29日 0790-09-5129 090-9826-0599
葛西 研介 かさい けんすけ 65 1957年11月05日 06-9352-4000 090-7392-1853
清水 麗子 しみず れいこ 36 1987年05月02日 01392-8-1755 090-4604-4421
大野 哲也 おおの てつや 72 1950年08月05日 03-9839-2740 080-0536-5890
森井 寛之 もりい ひろゆき 28 1994年09月09日 03-1764-3629 080-9162-0903
松原 貴司 まつばら たかし 50 1973年06月04日 03-8929-1171 050-0750-1756
イナミイナミ

DLP API

Cloud DLPではAPI経由で出力まで可能なジョブを作成できる。

下記はDLP APIに gs://input/blob/data.csv から gs://output/blob/data.csv へ電話番号を匿名化しコピーするジョブ作成をリクエストする方法である。

https://cloud.google.com/dlp/docs/reference/rest/v2/projects.dlpJobs/create

curl -X POST \               
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "x-goog-user-project: <PROJECT_ID>" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @dlp.json \
    "https://dlp.googleapis.com/v2/projects/<PROJECT_ID>/dlpJobs"
dlp.json
{
  "inspectJob": {
    "storageConfig": {
      "cloudStorageOptions": {
        "fileSet": {
          "url": "gs://input/blob/data.csv"
        }
      }
    },
    "inspectConfig": {
      "infoTypes": [
        {
          "name": "PHONE_NUMBER"
        }
      ],
      "excludeInfoTypes": false,
      "includeQuote": true,
      "minLikelihood": "LIKELY"
    },
    "actions": [
      {
        "deidentify": {
          "cloudStorageOutput": "gs://output/",
          "fileTypesToTransform": [
            "CSV"
          ]
        }
      }
    ]
  }
}

出力データ

下記は実際にAPIへリクエストし得られた結果である。

氏名 氏名(ひらがな) 年齢 生年月日 性別 電話番号 携帯電話番号
市村 真実 いちむら まみ 31 1992年05月02日 [PHONE_NUMBER] [PHONE_NUMBER]
山本 友美 やまもと ゆみ 58 1965年03月18日 [PHONE_NUMBER] [PHONE_NUMBER]
関本 静香 せきもと しずか 62 1960年06月18日 [PHONE_NUMBER] [PHONE_NUMBER]
三好 圭佑 みよし けいすけ 33 1989年12月17日 [PHONE_NUMBER] [PHONE_NUMBER]
塚原 和人 つかはら かずと 24 1999年05月29日 [PHONE_NUMBER] [PHONE_NUMBER]
葛西 研介 かさい けんすけ 65 1957年11月05日 [PHONE_NUMBER] [PHONE_NUMBER]
清水 麗子 しみず れいこ 36 1987年05月02日 [PHONE_NUMBER] [PHONE_NUMBER]
大野 哲也 おおの てつや 72 1950年08月05日 [PHONE_NUMBER] [PHONE_NUMBER]
森井 寛之 もりい ひろゆき 28 1994年09月09日 [PHONE_NUMBER] [PHONE_NUMBER]
松原 貴司 まつばら たかし 50 1973年06月04日 [PHONE_NUMBER] [PHONE_NUMBER]
イナミイナミ

メモ

下記は現時点ではわからなかったので要調査

  • DLP JobのリクエストはIAMで role/dlp.user でよいが、ジョブを処理するサービスアカウントは指定できるのか?
    • なんとなくできなそうに見える。できない場合はどのサービスアカウントが動作しているのか調査したい