📌

BigQueryのポリシータグベースでのアクセス制御をやってみた

2023/06/21に公開

ポリシータグとは何か?

ポリシータグとは、BigQueryの列に対してタグを付与することができるのですが、そのタグのことをポリシータグといいます。ラベルとは違います。

ポリシータグを設定することによって何がメリット?

このポリシータグはどんな時に使用されるのかというと、BigQueryの列レベルでのアクセス制御やダイナミックマスキングを行いたい時に最大のメリットを発揮します。
また、リージョンが同じであれば異なるプロジェクトであっても同じポリシータグを付与することができます。

どんな時に列レベルアクセスが必要?

分析用にアクセスしたいデータはあるが、ある特定の列に個人情報があり、その列に対してのアクセス制御をBigQueryのデータセットやテーブル単位でのアクセス制御とは別に行いたいといったケースで役立ちます。

例えば、以下の図のように、機密情報レベルを「High」「Medium」「Low」という形で分類し、「High」のタグが付与されているデータにアクセスできるのはこのグループだけ、「Medium」のタグが付与されているデータにアクセスできるのはこのグループとこのグループだけ、のような制御をすることが可能になります。

ポリシータグをによるアクセス制御をやってみよう

前提条件

BigQuery Data Policy APIを有効化しておく

ポリシータグの作成

BigQueryのコンソールの「ポリシータグ」の項目から作成することが可能です

「分類を作成」をクリック

分類名、リージョン、ポリシータグの名前を入力します
上の図にならってまずは「High」の分類を作成していきましょう!

分類が作成すると以下の画面が結果として見えます。
「アクセス制御の適用」を有効化します

「アクセス制御を有効にする」をクリックします

ポリシータグをBigQueryのテーブルのカラムに対してポリシータグを付与してみよう

ポリシータグの作成ができたので、続いてBigQueryにこのタグを付与してみましょう。
タグが付与されている列はreadできないようになるのか試してみましょう!

それではBigQueryの以下のようなテーブルのDateカラムにタグを付与してみましょう。

プレビューで見ても、現在は当然Dateカラムは見えます

「スキーマの編集」をクリック

「Date」を選択して、「Add policy tag」をクリック

全くBiometricsなデータではないですが、ここは適当に選択します。どれを選んでも今回はテストなので大丈夫です!

すると以下のように、Date列にポリシータグが付与されたことがわかるかと思います。

BigQueryのコンソール画面のスキーマの項目でもビックリマークが付与されています。

プレビューを見てみると、Date列が見事に見えなくなっています。

ポリシータグに対してアクセス権限を付与する

続いてBigQueryのポリシータグの画面に戻ります。
ポリシータグのコンソール上に「High」という分類が作成されていることを確認します。
そして、この「High」というポリシータグが付与されているBigQueryの列に対してアクセスできる権限を特定のグループ or ユーザー(SA含む)に付与していきましょう!
右上にある権限パネルを表示をクリックします

「High」を選択して、「プリンシパルを追加」をクリック

「High」に対してのread権限を付与したいユーザー or グループを指定します。
「きめ細かい読み取り」を選択します。
これで、BigQueryの画面でDate列が見えるようになっていれば成功です!

BigQueryの画面でDate列が見えるようになりました!

このようにBigQuery上でポリシータグを用いて列ベースでのアクセス制御ができるようになります!

Discussion