概要
Spotfire Analyticsから、標準のSnowflakeコネクタにより、Snowflakeに接続し、データを取得する方法について説明します。
本記事では、Microsoft Entra IDをIdPとするOAuth2による接続を行います。
Spotfire AnalyticsからのOAuth2認証によるSnowflake接続は14.5から提供されている新機能です。
前提
本記事の内容は
Spotfire Serverに対し、Microsoft Entra IDをOpenID ProviderとするOpenID Connect設定が完了していること(参考:OpenID Connectを用いたSpotfire の認証設定(Microsoft Entra ID))
を前提としています。
検証環境
- Spotfire Server 14.5.0(OS: Windows Server 2022)
- Spotfire Analytics 14.5.0 (OS: Windows 11)
- Snowflake(AWS上で提供されているアカウント)
- Snowflake ODBCドライバ(SnowflakeDSIIDriver 3.10.00.00)
Microsoft Entra ID: OAuth2リソース用アプリケーション 作成
OAuth2リソース用アプリケーションを新規作成します。Microsoft Entra IDのテナントは、Spotfire Serverに対しOpenID Connect設定を実施した際に利用したテナントと同じものとします。
アプリケーションの登録
任意の名前を付与し、シングルテナントモードで作成します。 リダイレクト URIの設定は不要です。
アプリケーション ID URI の設定とスコープの追加
API の公開に移動し、アプリケーション ID URIを設定します。
本記事では、デフォルト値(api://xxx形式)をセットしています。
また、session:role-anyスコープも追加します。
同意できるユーザーは管理者とユーザーとします。
Snowflakeセキュリティ統合 作成
Snowflakeで以下のクエリを実行し、セキュリティ統合を作成します。
CREATE OR REPLACE SECURITY INTEGRATION <任意のセキュリティ統合名>
TYPE = external_oauth
ENABLED = true
EXTERNAL_OAUTH_TYPE = azure
EXTERNAL_OAUTH_ISSUER = 'https://sts.windows.net/<Microsoft Entra ID テナントID>/'
EXTERNAL_OAUTH_JWS_KEYS_URL = 'https://login.microsoftonline.com/<Microsoft Entra ID テナントID>/discovery/v2.0/keys'
EXTERNAL_OAUTH_AUDIENCE_LIST = ('<OAuth2リソース用アプリケーションのアプリケーション ID URI(api://xxx形式)>')
EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = 'upn'
EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'login_name'
EXTERNAL_OAUTH_ANY_ROLE_MODE = ENABLE;
Snowflakeユーザー 作成
Microsoft Entra IDのアクセストークンに対応するユーザーがSnowflakeにまだ存在していない場合は、以下のようなクエリを実行しユーザーを作成しておきます。
CREATE USER IF NOT EXISTS <任意のユーザー名>
password = NULL
login_name = '<Microsoft Entra IDのアクセストークンに含まれるupnクレームの値>'
default_role = <デフォルトロール名>
<Microsoft Entra IDのアクセストークンに含まれるupnクレームの値>は、以下のいずれかの方法で確認することができます。
Azureポータルでユーザー プリンシパル名を確認
Azureポータルで対象ユーザーのユーザー プリンシパル名を確認することができます。この値がアクセストークンのupnクレームにセットされます。
参考)アクセストークン内のupnクレームを確認
Microsoft Entra IDから発行されるアクセストークン内のupnクレームを事前に直接確認することもできます。以下は、取得したアクセストークンをjwt.ioでデコードした例です。
OAuth2IdentityProviders設定
Spotfire AnalyticsからSpotfire Serverにログインした状態で、OAuth2リソース用アプリケーションの情報を、管理マネージャ > 設定 > Everyone > Application > OAuth2Preferences > OAuth2IdentityProvidersに記述します。
上図赤枠内issuerのマスク部分にはテナントIDを記述し、それ以外にはアプリケーションIDを記述します。
{
"issuer": "https://login.microsoftonline.com/<テナントID>/v2.0",
"displayName": "Entra ID (Snowflake)",
"type": "openID",
"publicClient": {
"id": "<クライアントID>",
"redirectUrl": "http://127.0.0.1/auth/",
"redirectPorts": "55931"
},
"defaultScope": "api://<クライアントID>/session:role-any"
}
設定後には、Spotfire Analyticsを一旦閉じて再起動し、変更内容を反映させる必要があります。
Spotfire Analyticsから接続
接続先 > Snowflakeを選択し、新規接続をクリックします。
以下のとおり入力し、接続ボタンをクリックします。
| 項目 | 内容 |
|---|---|
| サーバー | 接続先Snowflakeのエンドポイント<アカウント>.snowflakecomputing.com
|
| 認証情報 | ID プロバイダ (OAuth2) |
| ID プロバイダ | OAuth2IdentityProviders設定で追加したID プロバイダのdisplayName |
ウェブブラウザにリダイレクトされ、IdPへの認証が完了すると✅️接続済みになります。
既定値以外のウェアハウスやロールを使用する場合は、ドロップダウンメニューから選択することができます。
続行するをクリックすると、利用可能なデータベース一覧が表示されますので、テーブルまで順番に選択しデータを取得します。