💫

TableauからSnowflakeへOAuthでの接続を可能にする

2024/08/23に公開

はじめに

私が所属しているライフイズテックではデータ基盤にSnowflakeを採用しています。BIツールとしてTableauを導入することになったため、TableauからSnowflakeに接続する際にOAuthでの接続をするための設定についてまとめます。

Snowflakeでの設定

TableauからSnowflakeのデータにアクセスする際に、ユーザー名/パスワード以外にSnowflake OAuthでのサインインを選択することができます。
TableauでのSnowflake OAuth接続の際には、カスタムクライアント統合ではなく、パートナーアプリケーション用のSnowflake OAuthを使います。
https://docs.snowflake.com/ja/user-guide/oauth-partner

※Tableau ServerとDesktopは別のSECURITY INTEGRATIONの設定が必要となります。

Tableau Server用のSECURITY INTEGRATIONの作成

Tableau Server用のSECURITY INTEGRATIONは下記のSQLで作成ができます。

CREATE OR REPLACE SECURITY INTEGRATION tableau_server_oauth
  TYPE = OAUTH
  ENABLED = TRUE
  OAUTH_CLIENT = TABLEAU_SERVER
;

弊社ではSnowflakeの管理にTerraformを導入しているため、弊社では下記のようにTerraformリソースを定義しています。

resource "snowflake_oauth_integration_for_partner_applications" "tableau_server_oauth" {
  name                         = "TABLEAU_SERVER_OAUTH"
  oauth_client                 = "TABLEAU_SERVER"
  comment                      = "OAuth integration for Tableau Server"
  enabled                      = true
  oauth_issue_refresh_tokens   = "true"
  oauth_refresh_token_validity = 7776000 // 90 days
  oauth_use_secondary_roles    = "NONE"
}

Tableau Desktop用のSECURITY INTEGRATIONの作成

Desktop用は下記になります。

CREATE OR REPLACE SECURITY INTEGRATION tableau_desktop_oauth
  TYPE = OAUTH
  ENABLED = TRUE
  OAUTH_CLIENT = TABLEAU_DESKTOP
;
resource "snowflake_oauth_integration_for_partner_applications" "tableau_desktop_oauth" {
  name                         = "TABLEAU_DESKTOP_OAUTH"
  oauth_client                 = "TABLEAU_DESKTOP"
  comment                      = "OAuth integration for Tableau Desktop"
  enabled                      = true
  oauth_issue_refresh_tokens   = "true"
  oauth_refresh_token_validity = 7776000 // 90 days
  oauth_use_secondary_roles    = "NONE"
}

以上でSnowflake側の設定は完了です。

Tableau Cloud

アイコン > マイアカウントの設定 > 設定より、Snowflakeの追加を選択します。

接続先OAuthインスタンスのURLとして、https://xxx.snowflakecomputing.com/のURLを入力し、接続を行います。
snowflakeのユーザーのロールは、デフォルトロールを利用する場合では空のままにします。

ブラウザでsnowflakeのログインページが開くので、snowflakeのアカウントでログインします。Tableauからのアクセスを許可するかどうかのページに遷移するので、そのまま「許可」を選択します。

Tableau Desktop

Tableau DesktopからSnowflakeへの接続を設定する前に、ODBCドライバーのダウンロードを行ったうえで、Tableau Desktopを開きます。
ODBCドライバーはsnowflakeのダウンロードページよりダウンロードできます。
https://developer.snowflake.com/odbc/

Tableau Desktopで、その他からSnowflakeを選択します。

サーバーとして、https://xxx.snowflakecomputing.com/のURLを入力します。
役割(ロール)とウェアハウスについては、Snowflakeユーザーにデフォルトが設定されているものを利用する場合は、空のままでも大丈夫です。
そのまま「サインイン」を選択肢、Tableau Serverと同様にSnowflake上でログインし、Tableau Desktopからのアクセスを許可します。

宣伝

ライフイズテック サービス開発部では、定期的に気軽にご参加いただけるカジュアルなイベントを実施しています。開催予定のイベントは、 connpass のグループからご確認ください。興味のあるイベントがあったらぜひ参加登録をお願いいたします。皆さんのご参加をお待ちしています!

Discussion