Power BI SSO からSnowflakeへ¶
このトピックでは、Microsoft Power BI を使用してSnowflakeセッションをインスタンス化し、シングルサインオン(SSO)を使用してSnowflakeにアクセスする方法について説明します。
このトピックの内容:
概要¶
Snowflakeにより、Microsoft Power BI ユーザーは、IDプロバイダー認証情報と OAuth 2.0実装を使用してSnowflakeに接続し、Snowflakeのデータにアクセスするための SSO エクスペリエンスを提供できるようになります。
Power BI サービスは埋め込みSnowflakeドライバーを使用してSnowflakeに接続するため、この機能により、オンプレミスのPower BI ゲートウェイの実装が不要になります。
一般的なワークフロー¶
次の図は、Power BI からSnowflakeセッションをインスタンス化する認証フローをまとめたものです。
ユーザーは、Microsoft Azure Active Directory(Azure AD)を使用してPower BI サービスにログインします。
(オプション)IDプロバイダーがAzure AD ではない場合、Azure AD は、ユーザーをPower BI サービスにロギングする前に SAML 認証でユーザーを確認します。
ユーザーがSnowflakeに接続すると、Power BI サービスはAzure AD にSnowflakeのトークンを要求します。
Power BI サービスは埋め込みSnowflakeドライバーを使用して、Azure AD トークンを接続文字列の一部としてSnowflakeに送信します。
Snowflakeは、トークンを検証し、トークンからユーザー名を抽出してSnowflakeユーザーにマップし、ユーザーの既定のロールを使用してPower BI サービスのSnowflakeセッションを作成します。
前提条件¶
Snowflakeアカウントのために、Power BI SSO 機能を使用する前に次を確認します。
Snowflakeで ネットワークポリシー を使用している場合は、SnowflakeアカウントがホストされているAzure地域と、必要に応じて追加のAzure地域を含む、 Microsoft Azure IP 範囲 を許可できます。
重要
AzureのSnowflakeアカウントが配置されているAzure 地域 のPower BI に固有のネットワークポリシーを作成するには、ご使用の地域用Microsoftからの JSON ダウンロードを検索します。
たとえば、AzureのSnowflakeアカウントがカナダ中央地域にある場合は、 JSON ダウンロードで
PowerBI.CanadaCentral
を検索します。addressPrefixes
リストから IP アドレス範囲を選択します。これらの IP アドレス範囲を使用して、Snowflakeでネットワークポリシーを作成または更新します。addressPrefixes
リストが空の場合は、Microsoftに連絡して更新をリクエストしてください。複数のMicrosoft Azureサービス(例:Power BI、 SCIM)を使用している場合は、Azure管理者に連絡して正しい IP アドレス範囲を確認し、ユーザーにSnowflakeへのアクセスを許可する正しい IP アドレス範囲が、Snowflakeネットワークポリシーに含まれていることを確認してください。
ユーザーにSnowflake ACCOUNTADMIN または SECURITYADMIN のいずれかのロールを使用する必要がある場合は、 Snowflakeサポート にお問い合わせください。
注釈
デフォルトでは、アカウント管理者(つまり、 ACCOUNTADMIN システムロールを持つユーザー)とセキュリティ管理者(つまり、 SECURITYADMIN システムロールを持つユーザー)のロールによる、Microsoft Power BI を使用したSnowflakeセッションのインスタンス化はブロックされています。これらのロールを許可するビジネス上のニーズがあり、セキュリティチームがそれを許可している場合は、 Snowflakeサポート に連絡し、アカウントに対してこれらのロールを許可するようにリクエストしてください。
login_name
、name
、またはSnowflake内におけるユーザーのemail
属性の入力では、Azureの ADupn
属性にマップする必要があります。login_name
属性が定義されていない場合、プロセスはデフォルトでname
属性になります。
制限事項¶
現在、Snowflake Power BI SSO 機能には次の制限があります。
AWS PrivateLink およびAzure Private Linkはサポートされていません。これら2つのサービスのいずれかを使用してSnowflakeに接続する必要がある場合は、オンプレミスゲートウェイを使用して接続します。このパスウェイでは、シングルサインオンは提供されません。
入門¶
このセクションでは、SnowflakeでPower BI セキュリティ統合を作成する方法と、Power BI を介してSnowflakeにアクセスする方法について説明します。
Power BI セキュリティ統合の作成¶
注釈
Power BI サービスにPower BI ゲートウェイを使用してSnowflakeに接続する場合、または認証にSnowflakeのユーザー名とパスワードを使用する場合、このステップは不要です。
Power BI を使用して SSO からSnowflakeデータにアクセスするには、以下に示すように CREATE SECURITY INTEGRATION を使用してPower BI のセキュリティ統合を作成する必要があります。
セキュリティ統合には、 external_oauth_issuer
パラメーターの正しい値が必要です。この値の一部は、Azure AD テナントにマップされます。この値は、Power BI テナントの About セクションにあります。
組織にPower BI サービスの高度な展開がある場合は、Azure AD 管理者に問い合わせて、発行者 URL の構築に使用するAzure AD テナントの正しい値を取得してください。
たとえば、Azure AD テナント ID が a828b821-f44f-4698-85b2-3c6749302698
の場合、 https://sts.windows.net/a828b821-f44f-4698-85b2-3c6749302698/
と類似の AZURE_AD_ISSUER
値を構築します。値の最後にスラッシュ(つまり、 /
)を含めることが重要です。
AZURE_AD_ISSUER
の値を作成した後、 CREATE SECURITY INTEGRATION コマンドを実行します。SnowflakeアカウントがMicrosoft Azure Governmentのクラウド 地域 にあるかどうかに基づいて、 external_oauth_audience_list
セキュリティ統合パラメーターの値を正しく設定してください。
Microsoft Power BI のセキュリティ統合
create security integration powerbi type = external_oauth enabled = true external_oauth_type = azure external_oauth_issuer = '<AZURE_AD_ISSUER>' 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 = 'login_name';
Microsoft Power BI のMicrosoft Azure Governmentセキュリティ統合
create security integration powerbi_mag type = external_oauth enabled = true external_oauth_type = azure external_oauth_issuer = '<AZURE_AD_ISSUER>' external_oauth_jws_keys_url = 'https://login.windows.net/common/discovery/keys' external_oauth_audience_list = ('https://analysis.usgovcloudapi.net/powerbi/connector/snowflake') external_oauth_token_user_mapping_claim = 'upn' external_oauth_snowflake_user_mapping_attribute = 'login_name';
重要
この SQL コマンドを実行できるのは、アカウント管理者(つまり、 ACCOUNTADMIN ロールを持つユーザー)またはグローバル CREATE INTEGRATION 権限を持つロールのみです。
セキュリティ統合パラメータの値は大文字と小文字が区別され、セキュリティ統合に入力する値は環境内のこれらの値と一致する必要があります。大文字と小文字が一致しない場合、アクセストークンが検証されず、認証試行が失敗する可能性があります。
すべてのパラメーター値が完全に一致することを確認します。たとえば、 <AZURE_AD_ISSUER>
URL 値がバックスラッシュで終了せず、セキュリティ統合が URL の最後にバックスラッシュ文字で作成された場合、エラーメッセージが表示されます。その場合は、セキュリティ統合オブジェクトをドロップし( DROP INTEGRATION を使用)、正しい URL の値でオブジェクトを再度作成する必要があります( CREATE SECURITY INTEGRATION を使用)。
ご使用の環境で、ユーザーの UPN
属性値 がSnowflakeの login_name
ではなくユーザーのメールフィールドと一致する場合は、 login_name
を email_address
に置き換えます。例:
create security integration powerbi
type = external_oauth
...
external_oauth_snowflake_user_mapping_attribute = 'email_address';
外部 OAuth セキュリティ統合の変更¶
セキュリティ統合で ALTER ステートメントを実行することにより、外部 OAuth セキュリティ統合を更新できます。
詳細については、 ALTER SECURITY INTEGRATION をご参照ください。
Power BI からSnowflakeへの接続¶
Power BI からSnowflakeに接続する方法の詳細については、Power BI のドキュメントをご参照ください。
外部 OAuth でのネットワークポリシーの使用¶
現在、ネットワークポリシーは外部 OAuth セキュリティ統合に追加できません。
ユースケースで OAuth とSnowflakeネットワークポリシーが必要な場合は、 Snowflake OAuth を使用してください。
詳細については、 OAuth およびネットワークポリシー をご参照ください。
トラブルシューティング¶
ウェアハウスの再開。特定のユーザーが一時停止しているウェアハウスを使用しようとすると、Microsoft Power BI は、 エラーメッセージ に説明されていないエラーメッセージを表示します。確認し、必要に応じて、エラーメッセージを解決するために自動的に再開するようにウェアハウスを構成します。詳細については、 ウェアハウスの開始/再開 をご参照ください。
Power BI をSnowflakeに接続しようとする時に、エラーが発生する場合があります。エラーメッセージによっては、Microsoft、Snowflake、またはその両方でのトラブルシューティングが必要になる場合があります。
エラーメッセージ¶
次のテーブルは、ユーザーがPower BI で認証しているときにSnowflakeが返すエラーメッセージを示しています。
動作 |
エラーメッセージ |
トラブルシューティングアクション |
---|---|---|
無効なアクセストークンまたはオーディエンス値。 |
データソースの認証情報を更新できませんでした。 ODBC:ERROR [28000] 無効な OAuth アクセストークン。 [<番号>]。 |
|
Snowflakeアカウントに AAD ユーザーが見つかりません。 |
データソースの認証情報を更新できませんでした。 ODBC:ERROR [28000] 誤ったユーザー名またはパスワードが指定されました。 |
ユーザーがSnowflakeに存在することを確認します( |
Snowflakeユーザーは存在しますが、無効になっています。 |
データソースの認証情報を更新できませんでした。 ODBC:ERROR [28000] ユーザーアクセスが無効になっています。ローカルシステム管理者に連絡してください。 |
Snowflakeで、 |
Snowflakeは、期限切れの AAD トークンをPower BI から受け取ります。 |
データソースの認証情報を更新できませんでした。ODBC:ERROR [28000] OAuth アクセストークンが期限切れです。 [<番号>]。 |
Snowflakeサポートにお問い合わせください。 |
Snowflakeアカウントでセキュリティ統合が作成または無効化されていません。 |
データソース認証情報の更新に失敗しました。 ODBC:ERROR [28000] OAuth 認証サーバー統合が有効になっていません。 |
|
既定のロールがユーザーに設定されていません。 |
データソース認証情報の更新に失敗しました。 ODBC: ERROR [28000] ユーザーに既定のロールが割り当てられていません。ローカルシステム管理者に連絡して既定のロールを割り当ててもらい、再試行してください。 |
ユーザーの既定のロールを設定してください。 |
ユーザーの既定のロールがユーザーに付与されていません。 |
250001(08001)のためにテストが失敗しました。 DB: <ホスト>に接続できませんでした。ユーザー構成済みの既定のロール「<ROLE>」は、このユーザーに許可されていません。ローカルシステム管理者に問い合わせるか、 PUBLIC などの別のロールを選択する接続文字列で CLI クライアントを使用してログインを試みてください。 |
ユーザーの既定のロールを確認し、付与します。 |
ログイン履歴¶
ユーザーがPower BI にアクセスできてもSnowflakeセッションをインスタンス化できない場合、サポートされている コネクタ またはSnowflakeウェブインターフェイスを使用して次のコマンドを実行することにより、ユーザーが最後にSnowflakeにアクセスしたのはいつかを判断できます。成功した認証のみが記録されます。
use role accountadmin;
select *
from table(information_schema.login_history(dateadd('hours',-1,current_timestamp()),current_timestamp()))
order by event_timestamp;
結果ごとに、 USER_NAME
列と FIRST_AUTHENTICATION_FACTOR
列を評価します。
USER_NAME
値は、 前提条件 セクションで説明されている属性マッピングと一致する必要があります。
FIRST_AUTHENTICATION_FACTOR
はOAUTH_ACCESS_TOKEN
に設定する必要があります。