😚

Data Catalogのポリシータグを使いBigQueryにて列レベルでのアクセス制限を設定する

2 min read

Data Catalogのポリシータグを使いBigQueryにて列レベルでのアクセス制限を設定する方法について紹介します。

背景

BigQuery単体においてもデータセット単位、テーブル単位でアクセス制御が可能でしたがData Catalogの「ポリシータグ」という機能を使うことによってより「きめ細やかな管理」が可能になります。

ありそうな具体的事例としては以下でしょうか。

PII(個人情報)を含むusersテーブルではあるがマスタとして分析に頻繁に使用するテーブルかつPIIに業務上アクセスする必要のある人もいるので、可用性と機密性の観点から

  • 個人情報を含むテーブル(your_dataset.users_pii)
  • 個人情報を含まないテーブル(your_dataset.users)

に分けて管理していたがポリシータグの導入により1つのテーブルで管理が可能になった

How to

大雑把に以下の手順です。

  • Data Catalogのポリシータグを作成
  • ポリシータグに対し、権限を付与したいアカウントに「きめ細かい読み取り」のロールを付与
  • BigQueryにて制限したいカラムに作成したポリシータグを設定する
  • 動作確認

今回はとあるテーブルのPIIカラム(実際はPII要素ないですが)に閲覧制限を加えたいというシチュエーションで組み立ててみます

Data Catalogのポリシータグを作成

Data Catalogのページからポリシータグのページにて「分類を作成」をクリックします

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

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

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

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

権限の選択画面

BigQueryにて制限したいカラムに作成したポリシータグを設定する

次に作成したポリシータグを対象のカラムに適用します。
今回はpublic dataでよく見るであろうtaxiのデータの任意のカラムに付与してみます。

テーブルのスキーマ編集をクリック

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

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

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

動作確認

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

アクセス権がないと言われています

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

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

まとめ

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

参考記事

https://cloud.google.com/blog/ja/products/data-analytics/introducing-bigquery-column-level-security
keyword
BigQuery
Data Catalog
ポリシータグ
カラムレベル
列レベル

Discussion

ログインするとコメントできます