LookerからSnowflakeへ接続する際の、Snowflake側での権限設定方法

2022.07.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、まつおかです。
今回は、LookerからSnowflakeに接続する際、Snowflake側で必要となるユーザ追加と権限の設定方法をご紹介します。

以下のページを参考にすれば難しい内容ではないのですが、私のようにデータベースの諸々の設定について中途半端な知識しかない人にも、それぞれが何をしているのか、何をすべきなのかがわかるよう順を追ってご紹介できればと思います。

ユーザ追加と権限設定の流れ

手順は以下の通りです。

  1. Looker用のロールとユーザを作成
  2. Looker用のウェアハウスを作成
  3. ロールにデータベースとスキーマへのアクセス権限、テーブルへのSELECT権限を付与

Snowflakeのワークシートで順に実行していきますが、コマンドによってはアカウント管理者であるACOUNTADMINロールが必要となりますのでご注意ください。
また、コマンド内のロール名やユーザ名等は任意で命名してください。

1. Looker用のロールとユーザを作成

  • 実行しているユーザのロールをACCOUNTADMINに変更
use role ACCOUNTADMIN;
  • Looker用のロールを作成(looker_roleは任意のロール名を入力)
create role if not exists looker_role;
  • SYSADMINにLooker用ロールの権限を許可
    ひとつ前で作成したLooker用ロール(looker_role)が所有するオブジェクトにアクセスする権限はSYSADMINでも持っていないため、以下のクエリを実行してSYSADMINからのアクセスを許可する必要があります。
grant role looker_role to role SYSADMIN;
  • Looker用のユーザを作成(looker_userは任意のユーザ名を入力)
create user if not exists looker_user
password = '任意のパスワード';
  • Looker用ユーザにLooker用ロールを付与
grant role looker_role to user looker_user;
  • Looker用ユーザにデフォルトロールとデフォルトウェアハウスを設定(ウェアハウスはこのあと追加します)
alter user looker_user
set default_role = looker_role
default_warehouse = 'looker_wh';

2. Looker用のウェアハウスを作成

  • 実行しているユーザのロールをSYSADMINに変更
use role SYSADMIN;
  • Looker用のウェアハウスを作成(looker_whは任意のウェアハウス名を入力)
create warehouse if not exists looker_wh
warehouse_size = medium
auto_suspend = 1800
auto_resume = true
initially_suspended = true;
grant all privileges on warehouse looker_wh to role looker_role;

サイズや最大アイドル時間(auto_suspend)といったプロパティは、ウェアハウスの画面やALTERコマンドであとからでも変更が可能です。

3. ロールにデータベースとスキーマへのアクセス権限、テーブルへのSELECT権限を付与

  • データベースとスキーマにアクセス権限を付与
grant usage on database <database> to role looker_role;
grant usage on schema <database>.<schema> to role looker_role;

Lookerから参照するデータベースやスキーマ全てに対して上記コマンドの実行が必要です。

  • テーブルへのSELECT権限を付与
grant select on all tables in schema <database>.<schema> to role looker_role;
grant select on future tables in schema <database>.<schema> to role looker_role;

grant select on all tablesと書くと今現在存在しているテーブルに対しての権限、grant select on future tablesと書くと今後作成されるテーブルに対しての権限になりますので、既に存在しているテーブルに加え今後追加されるテーブルに対してもSELECT権限を付与したい場合はどちらも実行する必要があります。

以上の設定でLookerからSnowflakeにデータを参照するための設定が完了しました。

さいごに

ユーザ追加や権限設定など不慣れない私にとっては、1行ずつ内容を見ていくことでとても理解が深まりました。が、すぐに忘れてしまいそうなのでいい覚書になったと思います。
次回はLooker側の設定をご紹介します!


2022/8/19追記
Looker側の設定ブログ書きました~