🐙

BigQueryのDynamic Data Maskingの機能が更新されました

2023/05/16に公開

はじめに

こんにちは!クラウドエース データML ディビジョン所属の住吉と申します。
データML ディビジョンとはクラウドエースのITエンジニアリングを担うシステム開発部の中で、特にデータ基盤構築・分析基盤構築からデータ分析までを含む一貫したデータ課題の解決を専門としております。

データML ディビジョンでは活動の一環として、毎週Google Cloud の新規リリースを調査・発表し、データ領域のプロダクトのキャッチアップをしています。その中でも重要と考えるリリースを本ページ含め記事として公開しています。

今回紹介するリリースは、「BigQueryのDynamic Data Maskingの機能更新」についてです。

そもそもDynamic Data Maskingとは

今回のリリース内容を紹介する前にそもそもDynamic Data Maskingとは何かに触れていきたいと思います。
BigQueryでは、列レベル(カラムごと)でデータのマスキングがサポートされています。
作業者にテーブル内の特定のカラム情報を見せたくないときなどに使用します。

https://cloud.google.com/bigquery/docs/column-data-masking-intro

マスキング方法は以下のルールから選択できます。カラムごと、プリンシパルごとに違うマスキングルールを適用することも可能です。

  • null化
  • デフォルトのマスキング値
  • ハッシュ(SHA256)
  • メールマスク
  • 先頭の4文字
  • 年月日マスク
  • 末尾の4文字

マスキングルールの詳細はこちらの公式ドキュメントをご確認ください

BigQueryのDynamic Data Maskingの機能の更新について

では、タイトルのDynamic Data Maskingの機能の更新についてです。
今回の更新により、REPEATEDモードに設定されたRECORD列に対してもマスキングが可能になりました👏

この更新内容は2023年04月25日付に発表されたものです。
https://cloud.google.com/bigquery/docs/release-notes#April_25_2023

以前はData Maskingが設定されているREPEATEDモードに設定されたRECORDカラムを参照するとエラーが発生していたようです。

試してみた

実際にDynamic Data Maskingを試してみようと思います!

1. 使用データ

今回は下記のデータを用意しました。


2. ポリシータグの作成

列へのアクセスを制御するためのポリシータグを作成します。
ざっくりとした手順を下記にまとめます。

  1. ポリシータグの分類を作成
  2. 分類作成画面で作成したいポリシータグを記入
  3. 分類作成後、作成した分類名をクリックしてポリシータグを1つ選択してデータポリシーの管理をクリック
  4. 設定画面でマスキングルールこのマスキングを適用したいプリンシパルを設定

今回はhogeという名前のポリシータグの分類を作成して、その中に下記のような3つのポリシータグを作成しました。

3.マスキングポリシーをカラムに設定

用意したデータに作成したポリシータグを設定していきたいと思います。
ざっくりとした手順を下記にまとめます。

  1. 設定したいテーブルのスキーマタブを開く
  2. スキーマの編集をクリック
  3. マスキングを設定したいカラムを選択し、ADD POLICY TAGをクリック
  4. 設定したいポリシータグを選択して保存
  • 設定後は下記のように設定したフィールド名のポリシータグ列に設定したタグが表示されます

ポリシータグが付けられたBigQueryの列の参照はきめ細かい読み取りマスクされた読み取りのロールを持つユーザーのみに制限されます。
そのため、どのマスキングルールにも設定されていないユーザーが参照しようとしても上記の2つのロールを持っていなければエラーが返されます。

4.マスキングの確認

設定が完了したので、実際にマスキングされているか確認してみます。

  • プレビューから確認

    プレビューからデータを覗いてみると、マスキングが設定されているカラムは表示されませんでした。

  • クエリから確認

    クエリを投げてみると、しっかりマスキングされていることが確認できました🎉
    (マスキングされているカラムは、addressphone_numberemail_addressです)

5.REPEATEDモードに設定されたRECORDカラムのマスキング

次に今回紹介したリリース内容を試します!
REPEATEDモードに設定されたRECORDカラムにマスキングを設定して、確認してみようと思います。

sports_career.career列にマスキングポリシーを設定しました

  • クエリの実行結果

    設定したカラム(sports_career.career、1番右の列)の値がマスキングされ、全てnullになっていました🎉

6. ユーザーごとにマスキングルールを変えてみる

最後にユーザーごとにマスキングルールを変えてみたいと思います。
現在実行しているユーザーではphone_numberカラムにはデフォルトのマスキングルールを設定しているので、別のユーザーではphone_numberカラムのマスキングルールを先頭の4文字に設定してみたいと思います。

設定したマスキングルールは下記です

  • 実行結果

    phone_numberのマスキングが先頭の4文字になっています🎉
    また、phone_number以外のマスキングは先ほどのユーザーで実行したものと同じでした。
    (CLIから実行したので見づらくてすみません🙇)`

まとめ

今回はBigQueryのDynamic Data Maskingの機能更新のリリース情報についてと併せてDynamic Data Maskingについてまとめてみました。
(リリース内容の紹介よりDynamic Data Maskingの紹介のほうがメインになっちゃいました・・)

Discussion