1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Power BI DesktopからMFA有効化Snowflake(DUO認証)に接続する方法-AUTHENTICATION POLICYを使用する-

Last updated at Posted at 2025-03-25

はじめに

Snowflakeにおけるパスワードサインイン時にMFAが段階的にデフォルトになっています。

これはまた、2024年10月以降に作成される新しいSnowflakeアカウントでは、多要素認証(MFA)がすべてのパスワードサインインのデフォルトになるという前回の発表に続くものでもあります。

しかし、MFA有効化状態(DUOアプリを使用して認証している状態)では、Power BIからの接続時に問題が発生します。

  • 接続時にテーブルごとにDUOアプリで認証しなくてはならない
    • 例えば、20テーブル接続するときはアプリで20回認証が必要😅
  • 更新時や、スライサー適用時にも影響するテーブル分だけ認証が必要

今回は以上のような課題を解決するために試行錯誤した内容を備忘録としてまとめました。
より良い方法をご存じの方がいらっしゃいましたら情報共有お願いいたします。

▽参考:以下と似たような課題です。

以下の解決策は、Power BI Desktop に限らず、Fabric や ADF から Snowflake へ接続する際にも有効である可能性があります。
実際に、Fabric パイプラインを使用して Snowflake へ接続した際には、対策②によって DUO 認証を回避できました。

問題点:Power BI DesktopからMFA有効化Snowflake接続すると認証が毎回求められる

[データを取得]>[Snowflake]>[接続]をクリック
image.png

[サーバー名]と[ウェアハウス名]を入力
image.png

サーバー名の取得方法

SnowflakeのUIのホームに移動し、URLを確認
app.snowflake.comの後の組織名/アカウント名を使用する

image.png

組織名とアカウント名をスラッシュではなく-でつなぎ、.snowflakecomputing.comをつける

▽参考
アカウントへの接続

image.png

次の画面に遷移しますが、ここでDUOアプリの認証をする必要があります。

image.png

またこの後も冒頭で述べた通り、以下の問題が発生します。

  • 接続時にテーブルごとにDUOアプリで認証しなくてはならない
    • 例えば、20テーブル接続するときはアプリで20回認証が必要😅
  • 更新時や、スライサー適用時にも影響するテーブル分だけ認証が必要

テーブル数が少なかったり、更新頻度が少ない場合はこのままでもそこまで問題にならないかもしれませんが、さすがにこの状況では毎回認証が必要になり、かなり面倒です。

対策①:security integration(セキュリティ統合)-テナント設定を変えられる場合には◎

Snowflkaeから以下を実行

create security integration powerbi
    type = external_oauth
    enabled = true
    external_oauth_type = azure
    external_oauth_issuer = 'https://sts.windows.net/<your_tenant_id>/'
    external_oauth_jws_keys_url = 'https://login.windows.net/common/discovery/keys'
    external_oauth_audience_list = ('https://analysis.windows.net/powerbi/connector/Snowflake')
    external_oauth_token_user_mapping_claim = 'upn'
    external_oauth_snowflake_user_mapping_attribute = 'email_address';

external_oauth_issuerののあとには必ず/(スラッシュ)を入れてください

▽参考
【エラー対応方法共有】Snowflakeにて、Power BI Desktopから、Azure ADアカウントによる接続エラーへの対応方法について

▽参考

PBI desktopからSnowflakeにつなぎに行き、[Microsoft Account]でサインインする

image.png

しかし、テナント設定を変える必要があるので、今回の私の場合はここで断念

SSO を有効にするには、Fabric 管理者が Power BI 管理ポータルで設定を有効にする必要があります。 この設定により、Power BI サービス内から Snowflake への Microsoft Entra 認証トークンの送信が承認されます。 この設定は、組織レベルで設定されます。 次の手順に従って、SSO を有効にします。

image.png

対策②:AUTHENTICATION POLICY-セキュリティ的に望ましくはないが現状の解決策

Snowflakeから以下を実行し、AUTHENTICATION POLICYを作成します。


use database <your_database>;

USE SCHEMA <your_schema>;
CREATE USER pbi_user PASSWORD='~~~' DEFAULT_ROLE = <your_role> DEFAULT_SECONDARY_ROLES = ('ALL') MUST_CHANGE_PASSWORD = FALSE;

CREATE AUTHENTICATION POLICY password_auth
  CLIENT_TYPES = ('ALL')
  MFA_ENROLLMENT  = 'OPTIONAL'
  AUTHENTICATION_METHODS = ('OAUTH', 'PASSWORD');

ALTER USER pbi_user SET AUTHENTICATION POLICY password_auth;

ACCOUNTADMINロールが必要です
またロールにはウェアハウスへのUSAGE権限が必要です。(でないとレポート作成時に以下のエラーになります)

image.png

▽権限の参考
アクセス制御権限

チェック
試しにプライベートウインドウから、pbi_userでパスワードを用いいてログインしてみると
DUOアプリの認証が来ないことを確認できます。

PBI desktopからSnowfklakeにつなぎに行きます
先ほど作成した、user名とパスワードを使用します
image.png

これで問題なくレポートが作成できます。
(レポートは適当に作成しています🙇)
image.png

Appendix (補足情報)

データソース設定の削除

同じデータソースに違う資格情報で接続し直したいときに行う必要があります。

[ファイル]>[オプションと設定]>[データソース設定]をクリック
image.png

対象のデータソースを選び、[アクセスの許可と編集]>[削除]>[OK]>[OK]の順にクリック
image.png

その後、PBIのウインドウを一度閉じてから、再度接続のチャレンジをしてみてください

さいごに

AUTHENTICATION POLICYの方法は、セキュリティ的には推奨はできないので、その点注意してください。
今後、MFAありでもスムーズに接続できる方法が出ることを期待します。
また他の方法をご存じでしたら、ご共有いただけますと幸いです。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?