[新機能]TableauやPower BIのパスワード欄にも使えるSnowflakeのアクセストークン機能「Programmatic access tokens」がリリースされました

[新機能]TableauやPower BIのパスワード欄にも使えるSnowflakeのアクセストークン機能「Programmatic access tokens」がリリースされました

Clock Icon2025.05.01

さがらです。

TableauやPower BIのパスワード欄にも使えるSnowflakeのアクセストークン機能「Programmatic access tokens」がリリースされました。

https://docs.snowflake.com/en/release-notes/2025/other/2025-04-30-programmatic-access-tokens

この機能を試してみたので、早速内容をまとめてみます。

Programmatic access tokensとは

Programmatic access tokensですが、他のサービスにもよくあるアクセストークンを発行して、そのアクセストークンで外部ツールから認証が出来る機能となります。

https://docs.snowflake.com/en/user-guide/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のユーザーについては、以下のブログが参考になると思います。

https://dev.classmethod.jp/articles/snowflake-user-type-property/

ネットワークポリシーの設定(デフォルト設定の場合は必須)

デフォルトの設定では、アクセストークン発行のユーザーに対してネットワークポリシーが何かしら適用されていないと、アクセストークンの発行ができないようになっております。

https://docs.snowflake.com/en/user-guide/programmatic-access-tokens#network-policy-requirements

今回は、特定の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'; -- 指定したロールで、クエリが実行される。ロール名は大文字にすることに注意。セカンダリロールは使用されない。

すると、下図のようにアクセストークンが結果欄に表示されます。このタイミングでしか表示されないため、ご注意ください。

2025-05-01_14h15_17

Tableauからの認証に使用してみる

発行したアクセストークンがTableauからの認証に使用できるか確かめてみます。

パスワード欄に、先程発行したトークンの値を入れます。

2025-05-01_14h24_29

すると、無事に認証できました!TYPE=SERVICEのユーザーでも、アクセストークンを発行して無事に認証が出来ましたね。

2025-05-01_14h26_15

ちなみに、アクセストークンの作成時にrole_restrictionではPUBLICと指定していたので、SYSADMINで認証しようとするとエラーになります。

2025-05-01_17h05_18

おまけ:アクセストークンのローテーション

あとはおまけですが、以下のドキュメントに沿ってアクセストークンのローテーションもやってみます。

https://docs.snowflake.com/en/user-guide/programmatic-access-tokens#rotating-a-programmatic-access-token

use role accountadmin;
alter user if exists sagara_service
  rotate programmatic access token tableau_token
  expire_rotated_token_after_hours = 0; -- 既存のトークンを何時間経過後に無効化するかの設定。デフォルトは「24」時間

すると、下図のように新しいトークンが発行されますので、これを用いて再度認証を行えばOKです。

2025-05-01_14h33_23

ちなみに、expire_rotated_token_after_hours = 0としていたので、ローテーション前のアクセストークンを利用していたTableauではエラーが表示されるようになりました。

2025-05-01_14h35_24

最後に

TableauやPower BIのパスワード欄にも使えるSnowflakeのアクセストークン機能「Programmatic access tokens」がリリースされたので、早速試してみました。

TYPE=SERVICEのユーザーや、MFA強制による既存ユーザーのBIツールからの認証方法に悩まれていた方にとって、助けになると思います!

ぜひ、ご活用ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.