[新機能]TableauやPower BIのパスワード欄にも使えるSnowflakeのアクセストークン機能「Programmatic access tokens」がリリースされました
さがらです。
TableauやPower BIのパスワード欄にも使えるSnowflakeのアクセストークン機能「Programmatic access tokens」がリリースされました。
この機能を試してみたので、早速内容をまとめてみます。
Programmatic access tokensとは
Programmatic access tokensですが、他のサービスにもよくあるアクセストークンを発行して、そのアクセストークンで外部ツールから認証が出来る機能となります。
ただ、今回リリースされたSnowflakeのアクセストークンの売りは、以下2点にあります。
TYPE=SERVICE
のユーザーでも発行できる- これまで
TYPE=SERVICE
のユーザーはキーペア認証など、正直少し手間のかかる方法でしか認証できなかった
- これまで
- パスワード欄にアクセストークンの値を入れることで、既存のBIツールなどから認証ができる
- 最近のMFA強制で既存ユーザーのBIツールからの認証方法に悩まれていた方にとって、助けになると思います!
- 公式Docsでも、
You can also use a programmatic access token as a replacement for a password in the following:- Snowflake drivers.- Third-party applications that connect to Snowflake (such as Tableau and PowerBI).
と言及があります
試してみた
TYPE=SERVICEのユーザーを作成
まず、以下のクエリを実行してTYPE=SERVICE
のユーザーを作成します。
use role accountadmin;
create user sagara_service
type = service
default_role = public;
grant role sysadmin to user sagara_service;
grant role public to user sagara_service;
TYPE=SERVICE
のユーザーについては、以下のブログが参考になると思います。
ネットワークポリシーの設定(デフォルト設定の場合は必須)
デフォルトの設定では、アクセストークン発行のユーザーに対してネットワークポリシーが何かしら適用されていないと、アクセストークンの発行ができないようになっております。
今回は、特定のIPアドレスからしかアクセスできないようにすることを想定し、以下のクエリを実行してみます。
use role accountadmin;
create network policy if not exists sagara_service_ip_policy
allowed_ip_list = ('xxx.xxx.xxx.xxx', 'yyy.yyy.yyy.yyy');
alter user sagara_service set network_policy = sagara_service_ip_policy;
TYPE=SERVICEのユーザーに対して、アクセストークンを発行
次に、以下のクエリを実行してアクセストークンを発行します。
use role accountadmin;
alter user if exists sagara_service add programmatic access token tableau_token
days_to_expiry = 365 -- アクセストークンの有効期限を設定、最大365日。
role_restriction = 'PUBLIC'; -- 指定したロールで、クエリが実行される。ロール名は大文字にすることに注意。セカンダリロールは使用されない。
すると、下図のようにアクセストークンが結果欄に表示されます。このタイミングでしか表示されないため、ご注意ください。
Tableauからの認証に使用してみる
発行したアクセストークンがTableauからの認証に使用できるか確かめてみます。
パスワード欄に、先程発行したトークンの値を入れます。
すると、無事に認証できました!TYPE=SERVICE
のユーザーでも、アクセストークンを発行して無事に認証が出来ましたね。
ちなみに、アクセストークンの作成時にrole_restriction
ではPUBLIC
と指定していたので、SYSADMIN
で認証しようとするとエラーになります。
おまけ:アクセストークンのローテーション
あとはおまけですが、以下のドキュメントに沿ってアクセストークンのローテーションもやってみます。
use role accountadmin;
alter user if exists sagara_service
rotate programmatic access token tableau_token
expire_rotated_token_after_hours = 0; -- 既存のトークンを何時間経過後に無効化するかの設定。デフォルトは「24」時間
すると、下図のように新しいトークンが発行されますので、これを用いて再度認証を行えばOKです。
ちなみに、expire_rotated_token_after_hours = 0
としていたので、ローテーション前のアクセストークンを利用していたTableauではエラーが表示されるようになりました。
最後に
TableauやPower BIのパスワード欄にも使えるSnowflakeのアクセストークン機能「Programmatic access tokens」がリリースされたので、早速試してみました。
TYPE=SERVICE
のユーザーや、MFA強制による既存ユーザーのBIツールからの認証方法に悩まれていた方にとって、助けになると思います!
ぜひ、ご活用ください。