はじめに
複数プロジェクトでBigQueryを利用していると、プロジェクトまたぎのビューを利用したい場面が度々訪れるかと思います。そこに権限の問題が絡んでくると非常に厄介ですが、当社でもこの問題を踏んだことがありました。
当社ではBigQueryにてデータレイクを構築しているのですが、セキュリティの観点から以下のような条件を設けていました。
- データレイクとデータウェアハウスは別プロジェクトで作成し、限られたユーザーのみデータレイクプロジェクトへのアクセス権を付与する。
- データレイクプロジェクトのデータを参照する場合は、データウェアハウスプロジェクトからデータレイクプロジェクトへのビューを作成して参照させる。
プロジェクトの構造は以下の通りです。
|-- 親フォルダ
| |-- データレイクプロジェクト
| | |-- ビューで参照したいテーブル
| |-- データウェアハウスプロジェクト
| | |-- 今回作成するビュー
こうした設定を行う場合、データウェアハウスの閲覧権限のみを持つユーザーがビューにクエリすると、データレイクへのアクセス権限がない為にエラーになってしまいます。扱うデータの機密性の観点からデータレイクを扱えるユーザーは限定したい為、クエリ発行ユーザーに権限を持たせる以外の方法でこれを解決する必要がありました。
0. 承認済みビュー
BQの承認済みビュー機能を利用します。詳細は公式ドキュメントをご確認下さい。
1. ビューの作成
まずは通常通りプロジェクトまたぎのビューを作成します。以下は先述した当社の例ですが、データレイクプロジェクトにはビューで参照したいテーブルがあり、データウェアハウスプロジェクトにて当該のビューを作成します。
|-- 親フォルダ
| |-- データレイクプロジェクト
| | |-- ビューで参照したいテーブル
| |-- データウェアハウスプロジェクト
| | |-- 今回作成するビュー
2. ビューの承認
ビューの承認設定を行います。参照されるプロジェクト(当社の例ではデータレイクプロジェクト)にて当該のデータセットを開き、共有データセット
を選択します。
3. データセットの承認
共有データセットを選択すると以下のような画面になります。
ここで承認済みのビュー
タブに切り替え、下段のプロジェクト・データセット・ビューを選択し、画面下部の完了ボタンを押せば設定完了です。
まとめ
承認済みビュー設定を用いることで、権限に配慮しつつプロジェクトまたぎのビューを設定することができました。BigQueryは細かな要件にも対応でき、なかなか使い勝手が良い印象です。