LoginSignup
5
3

More than 5 years have passed since last update.

BigQuery で row-level permission を利用する方法(その1)

Last updated at Posted at 2015-04-29

2015/4/16 に BigQuery で row-level permission が導入されたと発表がありましたが、使い方が一向にドキュメントとしてでてこなくて、モヤモヤしていましたが、中の人である Jordan さんが、Stack Overflow で使い方を解説している記事をみつけたので、試してみました。

ちなみに row-level permission と言いますが、View を使っているため、行と合わせて列単位でも制限を書けることができます。

元記事

元記事が2つあるので、Qiita でも2つに分けます。この記事では1番目の記事について解説します。2つ目はまた後日。

単純に公開する行を制限したい場合

  1. 元データを含む private データセット、テーブルを作る。その際に、フィルタリング用の列を作っておく
  2. 1 で作ったテーブルを参照する View を public なデータセットに作成する
  3. private データセットを 2 で作成した View 経由でアクセスできるようにする
  4. public データセットを公開したいユーザ/グループに共有する

1. 元データを含む private データセット、テーブルを作る。その際に、フィルタリング用の列を作っておく

こんな感じのテーブルを作ります。is_secret が行の権限フィルタリング用の項目です。(この作業中に、WebUI のスキーマ指定のUIが進化していることに気が付きました。)

スクリーンショット 2015-04-29 18.33.18.png

データはこんな感じで入れておきます。

customer:string id:integer hidden_value:string is_secret:boolean
c001 1 A false
c002 2 B true
c003 3 C false

これが private データセットの customer テーブルとして保存されているとします。

2. 1で作ったテーブルを参照するビューを public なデータセットに作成する

上記のテーブルに対して、公開対象とする列、行を含むように View を作ります。

SELECT
  customer,
  id
FROM
  [private.customer]
WHERE
  is_secret = false

これを public データセットの public_customer ビューとして保存します。

スクリーンショット 2015-04-29 18.36.00.png

3. private データセットを 2 で作成した View 経由でアクセスできるようにする

このまま public データセットを共有しても、View は見えるのですが、権限エラーで SELECT できません。これを解消するために、private データセットを 2 で作成した View 経由でアクセスできるようにする設定をします。

まず、private データセットを選択し、"Share dataset" を選択

スクリーンショット 2015-04-29 18.38.20.png

次に "Add people" 欄で、種別として、"Authorized View" を選び、テキストボックス欄に View 名を project_id:dataset_id.table_id 形式で入れます。

スクリーンショット 2015-04-29 18.44.57.png

以下のように設定されていればOKです。

スクリーンショット 2015-04-29 18.49.11.png

4. public データセットを公開したいユーザ/グループに共有する

あとは public データセットを公開したいユーザ/グループに共有するだけで完了です。アカウントを切り替えて、SELECT できることを確認しましょう。

スクリーンショット 2015-04-29 18.52.05.png

以上です。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3