Snowflakeにデータを蓄積し、Tableauでグラフ化しようとした際にいくつかハマった点があるので本記事で備忘録的に紹介しておきます。
本記事は元々、データパレード様のブログに私が執筆した技術ノウハウとして掲載したものです(下記)。Qiitaを通じてより多くの方に届けられれば、そして技術者の方と知見を共有し、フィードバックをいただく目的でご厚意のもと許可をいただき掲載しました。誠にありがとうございます。
権限が強すぎるとダメ!
TableauからSnowflakeへアクセスするため、Snowflake側にアクセス用のユーザーを強い権限であるACCOUNT_ADMINで作成しました。
事象としては、TableauからOAuthで繋げようとID・PWを入力しMFAを通った後画面が真っ白になり先へ進めないという状態になりました。
公式ドキュメントを見てみると、下記のような文言がありました。
要は強い権限では認証できないようです。そのため、今回は画像のアカウントパラメータを変更するのではなく、新しいロールを作成することにしました。
権限設定
system_userというアカウントを作成し、下記のように「access_from_tableau」というロールを作成・付与しました
-- ロールの作成
CREATE OR REPLACE ROLE access_from_tableau;
-- 権限付与
GRANT USAGE ON WAREHOUSE warehouse_name TO ROLE access_from_tableau;
GRANT USAGE ON DATABASE db_name TO ROLE access_from_tableau;
GRANT USAGE ON SCHEMA db_name.schema_name TO ROLE access_from_tableau;
GRANT SELECT ON ALL TABLES IN SCHEMA db_name.schema_name TO ROLE access_from_tableau;
GRANT SELECT ON ALL VIEWS IN SCHEMA db_name.schema_name TO ROLE access_from_tableau;
-- 作成したロールをユーザーに付与
GRANT ROLE access_from_tableau TO USER system_user;
-- デフォルトロールの変更
ALTER USER system_user SET DEFAULT_ROLE = access_from_tableau;
ALTER USER system_user SET DEFAULT_WAREHOUSE = warehouse_name;
-- 今後作成するテーブルへのアクセス権限
GRANT SELECT ON FUTURE TABLES IN SCHEMA db_name.schema_name TO ROLE access_from_tableau;
warehouse_name、db_name、schema_nameにはそれぞれ権限付与したいウェアハウス、データベース、スキーマを指定してください。
今回はスキーマ以下のテーブルを全て見られるようにしていますが、テーブル別に設定することも可能です。
VIEWへのSELECT権限をつけるときは、その構成テーブルにも権限が必要な点は注意です。
権限付与により、Tableauからデータを参照できることを確認できました!