データ活用

SnowflakeへのOAuth認証で沼った話と権限設定

えび

Snowflakeにデータを蓄積し、Tableauでグラフ化しようとした際にいくつかハマった点があるので本記事で備忘録的に紹介しておきます。

権限が強すぎるとダメ!

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からデータを参照できることを確認できました!

ABOUT ME
えび
えび
データエンジニア
記事を読んでいただいている皆さんが理解しやすくかつ手軽に試せることを意識して、データの蓄積、加工、分析・可視化のノウハウを発信していきます!Pythonを使ったデータ収集基盤作成及びそのノウハウ発表で登壇したりしています。
記事URLをコピーしました