Data Catalogのポリシータグを使いBigQueryにて列レベルでのアクセス制限を設定する
Data Catalogのポリシータグを使いBigQueryにて列レベルでのアクセス制限を設定する方法について紹介します。
背景
BigQuery単体においてもデータセット単位、テーブル単位でアクセス制御が可能でしたがData Catalogの「ポリシータグ」という機能を使うことによってより「きめ細やかな管理」が可能になります。
ありそうな具体的事例としては以下でしょうか。
How to
大雑把に以下の手順です。
- Data Catalogのポリシータグを作成
- ポリシータグに対し、権限を付与したいアカウントに「きめ細かい読み取り」のロールを付与
- BigQueryにて制限したいカラムに作成したポリシータグを設定する
- 動作確認
今回はとあるテーブルのPIIカラム(実際はPII要素ないですが)に閲覧制限を加えたいというシチュエーションで組み立ててみます
Data Catalogのポリシータグを作成
Data Catalogのページからポリシータグのページにて「分類を作成」をクリックします

分類を作成します。内容は以下のとおりです。
なお、BigQueryにあるテーブルのリージョンと同じにする必要があります。

作成後、作成した分類のアクセス制御を有効にします。

ポリシータグに対し、権限を付与したいアカウントに「きめ細かい読み取り」のロールを付与
権限を付与したいアカウントに「きめ細かい読み取り」のロールを付与します。

権限の選択画面

BigQueryにて制限したいカラムに作成したポリシータグを設定する
次に作成したポリシータグを対象のカラムに適用します。
今回はpublic dataでよく見るであろうtaxiのデータの任意のカラムに付与してみます。
テーブルのスキーマ編集をクリック

フィールド名(カラム)を選択して、「ポリシータグを追加」をクリック

今回はemailと仮定してemailを選択

保存後改めてスキーマを見るとこのように

動作確認
先程ポリシータグに権限を付与したので見れる状態ではあるのですが、試しに「きめ細かい読み取り」の権限を取り外してみます。すると、、
アクセス権がないと言われています

プレビュー画面でもポリシータグを設定したカラムは表示されません

試しにSQLを投げても権限エラーになります

まとめ
Data Catalogのポリシータグを使うことでよりきめ細やかな権限管理ができるようになりました。
これによりデータガバナンスの推進と管理のし易さがより両立されていくかと思います。
参考記事
BigQuery
Data Catalog
ポリシータグ
カラムレベル
列レベル
Discussion