Snowflake の Programmatic access tokens で Tableau Cloud へのワークブックのパブリッシュから抽出更新までを試してみた

Snowflake の Programmatic access tokens で Tableau Cloud へのワークブックのパブリッシュから抽出更新までを試してみた

Clock Icon2025.05.07

はじめに

2025年4月のアップデートで、Snowflake のアクセストークン機能である「Programmatic access tokens」がリリースされました。

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

Snowflake アカウントへの将来的な単一パスワード認証廃止により、Tableau であれば抽出更新など定期実行用にパスワード以外の認証方法を使用する必要があります。

https://docs.snowflake.com/en/user-guide/security-mfa-rollout

Tableau Desktop・Tableau Cloud の組み合わせでアクセストークンによる認証~ワークブックのパブリッシュ、抽出更新まで試してみましたので、本記事でまとめてみます。

追記

Tableau Server (2025.1.1)でも同様の検証(Tableau Desktop からの接続、パブリッシュ、Server 上での抽出更新)を行い、アクセストークンで動作することを確認できました。
こちらも問題なさそうです。

前提条件

  • Tableau Desktop:2025.1.0
  • Snowflake ODBC ドライバ:3.8.0

サンプルデータと Tableau からの接続用ユーザーを作成

事前に以下の手順と内容で参照用のデータを作成しておきました。

USE ROLE SYSADMIN;
CREATE OR REPLACE DATABASE sampledb;
USE SCHEMA sampledb.public;

CREATE OR REPLACE TABLE CUSTOMERS (
    CUSTOMER_ID INT,
    FIRST_NAME STRING,
    LAST_NAME STRING,
    EMAIL STRING,
    SIGNUP_DATE DATE
);

INSERT INTO CUSTOMERS (CUSTOMER_ID, FIRST_NAME, LAST_NAME, EMAIL, SIGNUP_DATE) VALUES
(1, 'Taro', 'Yamada', 'taro.yamada@example.com', '2023-01-15'),
(2, 'Hanako', 'Suzuki', 'hanako.suzuki@example.com', '2023-02-20'),
(3, 'John', 'Smith', 'john.smith@example.com', '2023-03-10'),
(4, 'Emma', 'Tanaka', 'emma.tanaka@example.com', '2023-04-05'),
(5, 'Kenta', 'Kobayashi', 'kenta.kobayashi@example.com', '2023-05-01');

続けて Tableau からSnowflake に接続するユーザーとロールを作成します。

USE ROLE USERADMIN;
--ロールを作成
CREATE ROLE tableu_role;
--SYSADMINに紐づけ
USE ROLE SECURITYADMIN;
GRANT ROLE tableu_role TO ROLE SYSADMIN;
--仮想ウェアハウスの使用権限を与える
GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE tableu_role; 
--テーブルの参照権限を与える
GRANT USAGE ON DATABASE sampledb TO ROLE tableu_role;
GRANT USAGE ON SCHEMA sampledb.public TO ROLE tableu_role;
GRANT SELECT ON ALL TABLES IN SCHEMA sampledb.public TO ROLE tableu_role;

--ユーザー作成
USE ROLE USERADMIN;
CREATE USER tableau_user
    DEFAULT_ROLE = PUBLIC
    TYPE = SERVICE;
--ユーザーがTableau用ロールを使用できるようにする
USE ROLE SECURITYADMIN;
GRANT ROLE tableu_role TO USER tableau_user;

定期実行を想定しユーザーをTYPE = SERVICEとして作成しています。このユーザータイプについては、以下の記事が参考になりますので、あわせてご参照ください

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

アクセストークンを発行

デフォルトでは、アクセストークンを発行のために対象のユーザーに対するネットワークポリシーが設定されている必要があります。

ここでは簡単に自身のネットワークと Tableau Cloud の IP アドレスからのアクセスを許可するネットワーク ポリシーを作成し、ユーザーに適用します。

USE ROLE SECURITYADMIN;
CREATE NETWORK POLICY IF NOT EXISTS tableau_user_net_policy
    ALLOWED_IP_LIST = ('141.163.208.0/23','xx.xx.xx.xx');
--ユーザーにネットワークポリシーを適用
ALTER USER tableau_user SET NETWORK_POLICY = tableau_user_net_policy;

続けてアクセストークンを発行します。アクセストークンはユーザーの所有権があれば発行可能です。発行されたトークンは安全な場所に控えておきます。

ALTER USER tableau_user ADD PROGRAMMATIC ACCESS TOKEN  tableau_token
  days_to_expiry = 365 -- アクセストークンの有効期限:最大365日
  role_restriction = 'TABLEAU_ROLE'; 

また、アクセストークンの詳細については以下の記事もあわせてご参照ください。

https://dev.classmethod.jp/articles/snowflake-programmatic-access-tokens/

Tableau Desktop から接続

アクセストークンはパスワードのように使用できます。Tableau Desktop から「ユーザー名とパスワード」で Snowflake に接続します。

image

問題なく接続できるので、簡単なシートを作成し、まずは認証資格情報を埋め込まずにワークブックをパブリッシュします。

image 1

認証資格情は埋め込まれていないので、パブリッシュ後のワークブックを Tableau Cloud で開くと下図の表示になります。

image 2

アクセストークンをパスワード欄に入力することで、Snowflake に接続しワークブックを表示できます。

image 3

抽出の作成と更新

続けて「埋め込みパスワード」としてワークブックをパブリッシュしてみます。

image 4

Tableau Cloud 側でデータソースを抽出に変更します。埋め込みなので問題なく抽出に変更できます。

image 5

Snowflake 側でレコードを追加します。

INSERT INTO CUSTOMERS (CUSTOMER_ID, FIRST_NAME, LAST_NAME, EMAIL, SIGNUP_DATE) VALUES
(6, 'Satoshi', 'Nakamoto', 'satoshi.nakamoto@example.com', '2023-06-12'),
(7, 'Aiko', 'Fujimoto', 'aiko.fujimoto@example.com', '2023-07-03'),
(8, 'David', 'Lee', 'david.lee@example.com', '2023-08-21'),
(9, 'Naoko', 'Inoue', 'naoko.inoue@example.com', '2023-09-15'),
(10, 'Carlos', 'Garcia', 'carlos.garcia@example.com', '2023-10-01');

スケジュールを指定し、抽出を更新します。

image 6

問題なく定期実行され、データも確認されていることを確認できました。

image 7

認証資格情報を埋め込まず抽出を作成しようとした場合

本記事の検証時は、ライブ接続の状態から「データソース > 接続の編集」接続を編集し、パスワードを埋め込もうとするとテスト接続も失敗、抽出作成更新時もエラーとなってしまいました。そのため、Desktop からパブリッシュする際は、上記のように予め認証資格情報を埋め込むことで対応しました。

image 8

キーペア認証を使用する場合

上記と同じ設定で、キーペア認証を試してみたのですが、本検証時の環境では Desktop から接続・ワークブックをパブリッシュできても Tableau Cloud 側でワークブックを開くことができませんでした。

image 9

※以下のドキュメントに記載があるように、ワークブックをパブリッシュする前に Tableau Cloud 側のマイアカウント設定から認証情報の保存は設定済み

https://help.tableau.com/current/pro/desktop/en-us/examples_snowflake.htm

https://help.tableau.com/current/pro/desktop/en-us/snowflake_key_pair_auth.htm

こちらは既知の問題(17152178)として取り上げられているようでした。

https://issues.salesforce.com/#q=17152178

https://commtableau.my.site.com/s/question/0D5cw000004nX5PCAU/snowflake-with-keypair-not-working-on-tableau-cloud

さいごに

新しいアクセストークンで Tableau Desktop からの接続、パブリッシュ、Cloud 上での抽出更新を試してみました。SERVICE ユーザーに対してもこれまでのパスワードと同じような使用感で動作も問題なさそうです。

こちらの内容が何かの参考になれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.