投稿者:中根

日本情報通信の中根です。

先日GCP日本語ブログに暗号化に関する機能の投稿がありました。
今回はその中でも動的マスキングを試してみたいと思います。

BigQueryの動的なデータマスキング

こちらは上記ブログの通りとなりますが、Data Catalogと組み合わせることでアクセスするユーザーとロールに応じて動的にマスキングができる機能となります。

blog_image_001.png

出典: 動的データ マスキングの概要

プレビュー版ではデータのマスキングルールは3つとなります。

  1. Nullify: 列の値の代わりに NULL を返します。
  2. ハッシュ(SHA256): SHA256 ハッシュ関数によって実行された後に、列の値を返します。
  3. デフォルト マスキング値: データ型に応じたデフォルト値を返します。

従来のカラムレベルの表示非表示からさらにポリシーによって値を出し分けることができるようです。

早速試してみた

まずはマスキングするデータを用意しましょう。
マスキングなので個人情報っぽいデータをFaker等を用いて生成します。

blog_image_003.jpg

今回はシンプルに以下のようにデータを出し分け、マスキングを行います。

ユーザー birthday列 age列 email列 SSN列
管理者 閲覧可能 閲覧可能 閲覧可能 閲覧可能
分析者 デフォルト値 閲覧可能 ハッシュ化 NULL化

Data Catalogにてポリシータグときめ細かい読み取り権限を以下のように設定します。

blog_image_004.jpg

これは設定や利用するサービスによって構成は変わりますが、シンプルにデータポリシーPIIを管理者がきめ細かい読み取りができ、分析者はデータポリシーによりそれぞれ動的に暗号化するようにしています。

それではデータがどの様になっているか確認してみましょう。

以下の画像は管理者の画面になります。

blog_image_005.jpg

管理者はすべて閲覧可能となっているのでそのままです。

一方分析者はどうでしょうか。
まずテーブルのスキーマタブにアイコンが表示されています。
これは動的なマスキングではなく列レベルのアクセス制御によるものです。
プレビューを見てみると該当の列が表示されていません。

blog_image_006.jpg

blog_image_007.jpg

さてそれではクエリを実行してみましょう。
列レベルのアクセスだけの場合SELECT * FROM ... ではアクセス権限が無いエラーが出ますが動的なマスキングをしているため実行ができます。

blog_image_008.jpg

結果からも設定した通りにマスキングされていることがわかります。

メリット

メリットは言わずもがなマスキングしたデータを別途作成する必要がなくなることです。
従来であればマスキングするためのビューや別途マスキングしたテーブルを作成していたかと思います。
動的に更新してくれることそのような処理は不要となるばかりかデータの更新と同時にマスキングされたデータにアクセスすることができます。
このスピードはビジネスにおいて非常に強力な効果が出ることでしょう。

デメリット

一方デメリットは何でしょうか。
まずは2022年6月現在USおよびEUリージョンのみ対応ということでしょう。
日本のユーザーの皆様はやはり東京や大阪にデータを配置していることが多いかと思いますのでここは早く対応してほしいですね。

次にポリシータグの考え方が複雑になりがちなことです。
これはどちらかというとData Catalogの問題になります。
今回の様なシンプルなユースケースではとくに問題ないですが、登場人物や情報が増えてくると設計や管理が煩雑になりやすいです。
その結果メンテナンス・運用の負荷に繋がりますし、パターンに漏れが合った場合はセキュリティインシデントにも繋がる可能性もあります。

まとめ

少しデメリットを多く書いてしまいましたがこの機能はデータを利用していく上でスピード向上に欠かせない機能となるかと思います。
非常に便利な反面「よし、じゃあこんな感じで」といったように簡単に始めることは難しいのが現状の所感となります。

現在はプレビューバージョンですが今後ポリシータグ設定方法や設定イメージなどがプレビューできたりするともっと手軽に試せるものができて来てほしいと切に願います。
皆様もぜひリリースノートをWatchしながらセキュアでスピーディーなデータライフを送るための手助けになればと思います。