【Snowflake】SSOを使用してPower BIから接続してみる

こんにちは、SCSK松岡です。

本記事では、Power BIからSnowflakeにSSO(シングルサインオン)を使用して接続するための一連の手順と注意点をご紹介します。

Snowflakeに蓄積したデータをBIツールで可視化することは、データの価値を最大限引き出すために重要なポイントの一つです。

Microsoftのサービスと高い親和性を持つPower BIでは、SSOによりMicrosoft Entra IDの認証を利用して、データへのセキュアな接続が可能です。

SSOによりユーザーはシステム毎に別アカウントでログインする手間が省かれますが、そのためにはSnowflake側でのセキュリティ統合や、Power BI側での有効化設定、OAuth 2.0による接続設定などが必要となります。

前提

これからご紹介する手順には、Snowflakeのアカウント全体に影響する設定と、Microsoftの組織全体に影響する設定が含まれます。そのため、設定を行うには次のユーザーが必要です。

  • ACCOUNTADMINロールを持つSnowflakeユーザー
  • グローバル管理者権限を持つPower BIユーザー

また、手順は以下のマニュアルをベースに記載していますので、設定の際は合わせてご参考ください。

Microsoft Learn:Power BI サービスで Snowflake に接続する

 

設定の流れ

(Snowflake設定) Power BIセキュリティ統合

まず初めに、Snowflake側でPower BIとのセキュリティ統合の設定を行います。設定にはACCOUNTADMINロールを持つユーザーが必要です。

設定にあたり、Microsoft Entra ID (旧称:Microsoft Azure Active Directory)のテナントIDが必要なので、事前に取得しておきましょう。テナントIDは、Entra IDのトップページ(概要)から取得できます。

テナントIDが取得できたら、その値を「external_oauth_issuer」に含める形で以下のようなコマンドを実行します。

create security integration powerbi
  type = external_oauth
  enabled = true
  external_oauth_type = azure
  external_oauth_issuer = 'https://sts.windows.net/[テナントID]/'
  external_oauth_jws_keys_url = 'https://login.windows.net/common/discovery/keys'
  external_oauth_audience_list = ('https://analysis.windows.net/powerbi/connector/Snowflake', 
  'https://analysis.windows.net/powerbi/connector/snowflake')
  external_oauth_token_user_mapping_claim = 'upn'
  external_oauth_snowflake_user_mapping_attribute = 'login_name'

例として、テナントIDがa828b821-f44f-4698-85b2-3c6749302698の場合、
external_oauth_issuerは、https://sts.windows.net/a828b821-f44f-4698-85b2-3c6749302698/ となります。

テナントIDの後にスラッシュ(/)を含める点に注意してください。

 

(Snowflake設定) ユーザー作成

セキュリティ統合が成功すれば、Entra IDユーザーのUPN属性値と、Snowflakeユーザーのlogin_name属性値が紐づきます。

逆に言うと、Entra IDのユーザーからSSOを使用してSnowflakeに接続するためには、対象のUPNと同じlogin_nameのSnowflakeユーザーを作成する必要があります。

各ユーザーのUPN(ユーザープリンシパル名)は、Entra IDのユーザー一覧から、対象のユーザーを選択した概要ページから確認できます。

取得したUPNをもとに、SQLの実行等でSnowflakeユーザーを作成しましょう。

CREATE USER [ユーザー名(任意)]
  PASSWORD = '[パスワード(任意)]'
  LOGIN_NAME = '[EntraIDのUPN]'
  DEFAULT_ROLE = [デフォルトロール]

注意点として、ユーザーを作成する際は、後にPower BIのレポートから参照しようとしているデータに応じた権限をデフォルトロールで設定する必要があります。また、Power BIから使用されるウェアハウスに対するUSAGE権限が付与されている必要があります。

付与された権限に不足がある場合、PowerBI側の認証時にエラーになってしまいます。

 

(Power BI設定)Snowflake SSOの有効化

続いて、Power BI側の管理設定です。

グローバル管理者権限を持つユーザーでPower BIにサインインし、
[設定]>[Power BI設定] > [管理ポータル] を選択します。

そこから、[テナント設定] > [統合の設定] > [Snowflake SSO] を選択して展開し、
設定を[有効]に切り替えた後、[適用]を選択します。

マニュアルだと、有効にしてから反映までに最大1時間かかるとの記載がありました。

 

(Power BI Desktop設定) データソースの追加

ここからは、Power BIでSnowflakeのレポート作成する際の考慮点になります。

まず、レポートを作成するためにはデータソースの用意が必要ですが、
データソースとしてSnowflakeに接続する場合、Power BI Desktopから行う必要があります。

Power BI Desktopと、ブラウザのPower BIサービス(クラウドベース)の違いや、
Power BI Desktopの取得方法は以下をご参考ください

大まかな違いとしては、 Power BI Desktopはレポート作成用途の機能が充実しており、
Power BIサービス(クラウドベース)は、レポートの共有用途の機能が充実しています。

Power BI Desktopは、PowerBIサービスと同じアカウントでサインインできます。

データソースとしてSnoflakeに接続する場合は、レポートのデータ追加画面から、「別のソースからデータを取得する」をクリックし、Snowflakeを選択します。

Snowflakeのサーバ情報、ウェアハウス情報を入力した後にユーザー情報が聞かれますが、Entra IDのユーザー情報を使用する場合はこのときに、「Microsoft Account」を選択します。

Snowflake側の設定が上手くいっていれば、Entra IDのユーザー情報による認証で、Snowflakeのデータが参照できるようになるはずです。

 

(Power BI設定) セマンティックモデル設定

Power BI Desktopで作成したレポートは「発行」ボタンからPower BI サービスに共有が可能です。

発行先のワークスペースを選択すると、レポートとセマンティックモデルがPower BIサービスにアップロードされます。

Power BIのセマンティックモデルには、データソースに接続する際の認証に必要な情報が含まれます。

アップロードされたセマンティックモデルの設定にアクセスし、[データソースの資格情報]に進んでから[資格情報を編集]を選択します。

認証方法が「OAuth2」に選択されている場合、SSOを利用した設定が引き継がれています。

 

最後に

上記の手順だと、利用ユーザーが増えるたびに手動でSnowflakeユーザーを作成する必要があります。追加でプロビジョニングの設定を行えば、その作業を自動化することも可能なようです。

これで、接続のための設定は完了です。

設定してみて詰まったポイントがいくつかあったので、少しでも参考になれば幸いです!

タイトルとURLをコピーしました