Power BI からオンプレミス データ ソースへの SSO に Security Assertion Markup Language を使用する

シングル サインオン (SSO) を有効にすることにより、オンプレミスのソースで構成されているユーザー レベルのアクセス許可を尊重しながら、Power BI のレポートとダッシュボードでそれらのソースからデータを簡単に更新できるようになります。 シームレスな SSO 接続を有効にするには、Security Assertion Markup Language (SAML) を使用します。

注意

オンプレミス データ ゲートウェイでは、シングル サインオン SAML を使用して 1 つのデータ ソースにのみ接続できます。 シングル サインオン SAML を使用して追加のデータ ソースに接続するには、別のオンプレミス データ ゲートウェイを使用する必要があります。

SAML でサポートされているデータ ソース

現在、Microsoft で SAML がサポートされているのは SAP HANA です。 SAML を使用した SAP HANA のシングル サインオンの設定と構成の詳細については、「BI プラットフォームから HANA への SAML SSO」を参照してください。

Kerberos では、追加のデータ ソース (SAP HANA を含む) をサポートしています。

SAP HANA については、SAML SSO 接続を確立する前に暗号化を有効にすることをお勧めします。 暗号化を有効にするには、暗号化された接続を許可するよう HANA サーバーを構成し、HANA サーバーとの通信に暗号化を使用するようゲートウェイを構成します。 HANA ODBC ドライバーは既定で SAML アサーションを暗号化しないため、署名された SAML アサーションは、ゲートウェイから HANA サーバーに "プレーンテキスト" で送信され、第三者による傍受や再利用に対して脆弱になります。

重要

SAP では OpenSSL がサポートされなくなったため、Microsoft もそのサポートを停止しました。 既存の接続は引き続き機能しますが、新しい接続を作成できなくなります。 代わりに、SAP 暗号化ライブラリ (CommonCryptoLib) または sapcrypto を使用してください。

ゲートウェイとデータ ソースを構成する

SAML を使用するには、SSO を有効にする HANA サーバーとゲートウェイの間に信頼関係を確立する必要があります。 このシナリオでは、ゲートウェイは SAML ID プロバイダー (IdP) として機能します。 この関係は、さまざまな方法で確立できます。 SAP では、CommonCryptoLib を使用してセットアップ手順を完了することが推奨されています。 詳細については、SAP の公式ドキュメントを参照してください。

証明書を作成する

HANA サーバーによって信頼されたルート証明機関 (CA) を使用してゲートウェイ IdP の X509 証明書に署名することで、HANA サーバーとゲートウェイ IdP の間の信頼関係を確立できます。

証明書を作成するには、次の手順のようにします。

  1. SAP HANA が実行されているデバイスで、証明書を格納するための空のフォルダーを作成し、そのフォルダーに移動します。

  2. 次のコマンドを実行して、ルート証明書を作成します。

    openssl req -new -x509 -newkey rsa:2048 -days 3650 -sha256 -keyout CA_Key.pem -out CA_Cert.pem -extensions v3_ca'''
    

    この証明書を使用して他の証明書に署名するため、パスフレーズをコピーして保存しておいてください。 CA_Cert.pemCA_Key.pem ファイルが作成されていることがわかります。

  3. 次のコマンドを実行して、IdP 証明書を作成します。

    openssl req -newkey rsa:2048 -days 365 -sha256 -keyout IdP_Key.pem -out IdP_Req.pem -nodes
    

    IdP_Key.pemIdP_Req.pem ファイルが作成されていることがわかります。

  4. ルート証明書を使用して IdP 証明書に署名します。

    openssl x509 -req -days 365 -in IdP_Req.pem -sha256 -extensions usr_cert -CA CA_Cert.pem -CAkey CA_Key.pem -CAcreateserial -out IdP_Cert.pem
    

    CA_Cert.srlIdP_Cert.pem ファイルが作成されていることがわかります。 この時点では、IdP_Cert.pem のファイルのみと関係しています。

SAML ID プロバイダー証明書のマッピングを作成する

SAML ID プロバイダー証明書のマッピングを作成するには、次のようにします。

  1. SAP HANA Studio で、お使いの SAP HANA サーバー名を右クリックし、 [Security](セキュリティ)>[Open Security Console](セキュリティ コンソールを開く)>[SAML Identity Provider](SAML ID プロバイダー) を選択します。

  2. [SAP Cryptographic Library](SAP 暗号化ライブラリ) オプションを選択します。 [OpenSSL Cryptographic Library](OpenSSL 暗号化ライブラリ) オプションは "使用しないでください"。SAP によって非推奨になっています。

    Screenshot of the

  3. 署名された証明書の IdP_Cert.pem をインポートするには、次の図に示すように、青い [Import](インポート) ボタンを選択します。

    Screenshot of the

  4. ID プロバイダーに必ず名前を割り当ててください。

HANA で署名入り証明書をインポートして作成する

HANA で署名入り証明書をインポートして作成するには、次のようにします。

  1. SAP HANA Studio で、次のクエリを実行します。

    CREATE CERTIFICATE FROM '<idp_cert_pem_certificate_content>'
    

    次に例を示します。

    CREATE CERTIFICATE FROM
    '-----BEGIN CERTIFICATE-----
    MIIDyDCCArCgA...veryLongString...0WkC5deeawTyMje6
    -----END CERTIFICATE-----
    '
    
  2. 目的の SAML が含まれる個人用セキュリティ環境 (PSE) がない場合は、SAP HANA Studio で次のクエリを実行して作成します。

    CREATE PSE SAMLCOLLECTION;
    set pse SAMLCOLLECTION purpose SAML;
    
  3. 次のコマンドを実行して、新しく作成した署名入り証明書を PSE に追加します。

    alter pse SAMLCOLLECTION add CERTIFICATE <certificate_id>;
    

    次に例を示します。

    alter pse SAMLCOLLECTION add CERTIFICATE 1978320;
    

    次のクエリを実行することで、作成された証明書の一覧を確認できます。

    select * from PUBLIC"."CERTIFICATES"
    

    これで証明書が正しくインストールされました。 インストールを確認するには、次のクエリを実行します。

    select * from "PUBLIC"."PSE_CERTIFICATES"
    

ユーザーをマップする

ユーザーをマップするには、次のようにします。

  1. SAP HANA Studio で [Security](セキュリティ) フォルダーを選択します。

    Screenshot of the Security folder structure on the left pane.

  2. [User](ユーザー) を展開し、Power BI ユーザーをマップするユーザーを選択します。

  3. 次の図のように、 [SAML] チェック ボックスをオンにして、 [Configure](構成) を選択します。

    Screenshot of the

  4. SAML ID プロバイダー証明書のマッピングを作成する」セクションで作成した ID プロバイダーを選択します。 [External Identity](外部 ID) に Power BI ユーザーの UPN (通常は、Power BI へのログインにユーザーが使用するメール アドレス) を入力し、 [Add](追加) を選択します。

    Screenshot of the

    ADUserNameReplacementProperty 構成オプションを使用するようゲートウェイを構成した場合は、Power BI ユーザーの元の UPN を置き換える値を入力します。 たとえば、ADUserNameReplacementPropertySAMAccountName に設定する場合は、ユーザーの SAMAccountName を入力します。

ゲートウェイを構成する

これでゲートウェイの証明書と ID を構成できたので、証明書を PFX ファイル形式に変換し、その証明書を使用するようにゲートウェイを構成します。手順は次のとおりです。

  1. 次のコマンドを実行し、証明書を PFX 形式に変換します。 次に示すように、このコマンドによって、結果のファイルには samlcert.pfx という名前が付けられ、そのパスワードは root に設定されます。

    openssl pkcs12 -export -out samltest.pfx -in IdP_Cert.pem -inkey IdP_Key.pem -passin pass:root -passout pass:root
    
  2. ゲートウェイ コンピューターに PFX ファイルをコピーします。

    a. samltest.pfx をダブルクリックし、 [ローカル コンピューター]>[次へ] を選択します。

    b. パスワードを入力し、 [次へ] を選択します。

    c. [証明書をすべて次のストアに配置する] を選択し、 [参照]>[個人]>[OK] を選択します。

    Screenshot of the

    d. [次へ] を選択し、 [完了] を選択します。

  3. 証明書の秘密キーにアクセスする許可をゲートウェイ サービス アカウントに付与するには、次のようにします。

    a. ゲートウェイ コンピューターで、Microsoft 管理コンソール (MMC) を実行します。

    Screenshot of the gateway machine

    b. MMC で、 [ファイル]>[スナップインの追加と削除] を選択します。

    Screenshot of the

    c. [証明書]>[追加] を選択し、 [コンピューター アカウント]>[次へ] を選択します。

    d. [ローカル コンピューター]>[完了]>[OK] の順に選択します。

    e. [証明書]>[個人]>[証明書] の順に展開し、証明書を見つけます。

    f. 証明書を右クリックし、 [すべてのタスク]>[秘密キーの管理] を選択します。

    Screenshot of the

    g. ゲートウェイ サービス アカウントを一覧に追加します。 既定では、アカウントは NT SERVICE\PBIEgwService です。 services.msc を実行することにより、ゲートウェイ サービスが実行されているアカウントを見つけ、オンプレミス データ ゲートウェイ サービスを確認できます。

    Screenshot of the

最後に、証明書の拇印をゲートウェイ構成に追加します。

  1. コンピューター上の証明書の一覧を表示するには、次の PowerShell コマンドを実行します。

    Get-ChildItem -path cert:\LocalMachine\My
    
  2. 作成した証明書の拇印をコピーします。

  3. ゲートウェイ ディレクトリ (既定では C:\Program Files\On-premises data gateway) に移動します。

  4. PowerBI.DataMovement.Pipeline.GatewayCore.dll.config を開き、SapHanaSAMLCertThumbprint セクションを見つけます。 ステップ 2 でコピーした拇印を貼り付けます。

  5. ゲートウェイ サービスを再起動します。

Power BI レポートを実行する

Power BI の [Manage Gateway](ゲートウェイの管理) ページを使用して SAP HANA データ ソースを構成できるようになりました。 [詳細設定] で、SAML 経由で SSO を有効にします。 こうすることで、そのデータ ソースへのレポートやデータセットのバインドを公開できます。

 Screenshot of advanced settings with single sign-on for SAML.

Note

SSO によって Windows 認証が使用されるため、Windows アカウントでゲートウェイ コンピューターにアクセスできることを確認してください。 確認できない場合は、ローカル コンピューターの "Users" グループに NT-AUTHORITY\Authenticated Users (S-1-5-11) を必ず追加してください。

SAML を使用した SAP HANA へのシングル サインオンのトラブルシューティング

このセクションでは、SAP HANA へのシングル サインオンのために SAML を使用する場合のトラブルシューティング手順について詳しく説明します。 これらの手順は、発生している可能性のある問題を自分で診断して修正するのに役立ちます。

拒否された資格情報

SAML ベースの SSO を構成した後、Power BI ポータルに、「指定された資格情報は SapHana ソースに使用できません。」というエラーが表示される場合があります。このエラーは、SAML 資格情報が SAP HANA によって拒否されたことを示します。

サーバー側の認証トレースを利用すれば、SAP HANA での資格情報の問題をトラブルシューティングするための詳細情報が得られます。 SAP HANA サーバーに対するトレースを構成するには、次のようにします。

  1. SAP HANA サーバー上で、次のクエリを実行して認証トレースをオンにします。

    ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') set ('trace', 'authentication') = 'debug' with reconfigure 
    
  2. 問題を再現します。

  3. SAP HANA Studio で、管理コンソールを開き、 [Diagnosis Files](診断ファイル) タブを選択します。

  4. 最新のインデックス サーバー トレースを開いて、SAMLAuthenticator.cpp を検索します。

    次の例のような、根本原因を示す詳細なエラー メッセージが見つかるはずです。

    [3957]{-1}[-1/-1] 2018-09-11 21:40:23.815797 d Authentication   SAMLAuthenticator.cpp(00091) : Element '{urn:oasis:names:tc:SAML:2.0:assertion}Assertion', attribute 'ID': '123123123123123' is not a valid value of the atomic type 'xs:ID'.
    [3957]{-1}[-1/-1] 2018-09-11 21:40:23.815914 i Authentication   SAMLAuthenticator.cpp(00403) : No valid SAML Assertion or SAML Protocol detected
    
  5. トラブルシューティングが完了したら、次のクエリを実行して認証トレースをオフにします。

    ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') UNSET ('trace', 'authentication');
    

ゲートウェイのエラーを調べてトラブルシューティングを行う

このセクションの手順を実行するには、ゲートウェイ ログを収集する必要があります。

SSL エラー (証明書)

エラーの症状

この問題には複数の症状があります。 新しいデータ ソースを追加しようとする際には、次のようなエラー メッセージが表示される場合があります。

Unable to connect: We encountered an error while trying to connect to . Details: "We could not register this data source for any gateway instances within this cluster. Please find more details below about specific errors for each gateway instance."

レポートを作成または更新しようとすると、次の図のようなエラー メッセージが表示される場合があります。

Screenshot of a 'Cannot load model' troubleshooting SSL error window.

Mashup[date]*.log を調べると、次のエラー メッセージが見つかります。

A connection was successfully established with the server, but then an error occurred during the login process and the certificate chain was issued by an authority that is not trusted

解像度

この SSL エラーを解決するには、次の図のように、データ ソース接続に移動し、 [サーバー証明書の検証] ドロップダウン リストで、 [いいえ] を選択します。

Screenshot showing the S S L error being resolved on the 'Data Source Settings' pane.

この設定を選択すると、エラー メッセージが表示されなくなります。

ゲートウェイ SignXML エラー

ゲートウェイ SignXML エラーが発生する場合は、SapHanaSAMLCertThumbprint の設定が正しくないか、HANA サーバーに問題がある可能性があります。 ゲートウェイ ログのエントリを調べると、問題が発生している場所と、その解決方法を特定できます。

エラーの症状

SignXML: Found the cert... のログ エントリ: GatewayInfo[date].log ファイルにこのエラーが含まれている場合、SignXML 証明書は見つかっています。トラブルシューティング作業では、「HANA サーバー側の検証とトラブルシューティング」セクションの手順に重点を置いてください。

Couldn't find saml cert のログ エントリ: GatewayInfo[date].log ファイルにこのエラーが含まれている場合は、SapHanaSAMLCertThumbprint が正しく設定されていません。 次の解決方法セクションでは、この問題を解決する方法について説明します。

解像度

SapHanaSAMLCertThumbprint を適切に設定するには、「ゲートウェイを構成する」セクションの手順のようにします。 手順は、「最後に、証明書の拇印をゲートウェイ構成に追加します」から始まります。

構成ファイルを変更した後、ゲートウェイ サービスを再起動して変更を有効にする必要があります。

検証

SapHanaSAMLCertThumbprint が適切に設定されると、ゲートウェイのログに、SignXML: Found the cert... を含んだエントリが作成されます。 この時点で、「HANA サーバー側の検証とトラブルシューティング」セクションに進むことができるようになります。

ゲートウェイが証明書を使用して SAML アサーションに署名できない場合には、ログに次のようなエラーが記録されることがあります。

GatewayPipelineErrorCode=DM_GWPipeline_UnknownError GatewayVersion= InnerType=CryptographicException InnerMessage=<pi>Signing key is not loaded.</pi> InnerToString=<pi>System.Security.Cryptography.CryptographicException: Signing key is not loaded.

このエラーを解決するには、「ゲートウェイを構成する」セクションのステップ 3 以降の手順のようにします。

構成を変更した後、ゲートウェイ サービスを再起動して変更を有効にします。

HANA サーバー側の検証とトラブルシューティング

ゲートウェイで証明書を検索し、SAML アサーションに署名することはできても、まだエラーが発生する場合は、このセクションの解決策を使用します。 前の「拒否された資格情報」セクションで説明されているように、HANA 認証トレースを収集する必要があります。

SAML ID プロバイダー

HANA 認証トレースに Found SAML provider という文字列が存在する場合は、SAML ID プロバイダーが正しく構成されていることを示します。 この文字列がない場合は、構成が正しくありません。

解像度

まず、組織で使用している sslcryptoprovider が OpenSSL なのか、それとも commoncrypto なのかを確認します。 使用されているプロバイダーを判断するには、次の手順のようにします。

  1. SAP HANA Studio を開きます。

  2. 使用しているテナントの管理コンソールを開きます。

  3. 次の図に示すように、 [Configuration](構成) タブを選択し、フィルターとして sslcryptoprovider を使用します。

    Screenshot of the sslcryptoprovider information in SAP HANA Studio.

次に、以下のようにして、暗号化ライブラリが正しく設定されていることを確認します。

  1. SAP HANA Studio で [SAML Identity Providers](SAML ID プロバイダー) タブを選択してセキュリティ コンソールに移動し、次のいずれかの操作を行います。

    • sslcryptoprovider が OpenSSL の場合は、 [OpenSSL Cryptographic Library](OpenSSL 暗号化ライブラリ) を選択します。
    • sslcryptoprovider が commonCrypto の場合は、 [SAP Cryptographic Library](SAP 暗号化ライブラリ) を選択します。

    次の図では、 [SAP Cryptographic Library](SAP 暗号化ライブラリ) が選択されています。

    Screenshot of SAP HANA Studio with 'SAP Cryptographic Library' selected as the sslcryptoprovider.

  2. 次の図に示すように、右上にある [Deploy](デプロイ) ボタンを選択して、変更をデプロイします。

    Screenshot of the 'Deploy' button for deploying your solution changes.

検証

トレースが適切に構成されている場合は、Found SAML provider が報告され、SAML Provider not found は報告 "されません"。 次のセクション「SAML アサーション署名のトラブルシューティング」に進むことができます。

暗号化サービス プロバイダーが設定されているにもかかわらず、まだ SAML Provider not found が報告されている場合は、次のテキストで始まる文字列をトレースで検索します。

Search SAML provider for certificate with subject =

その文字列で、subject と issuer が、セキュリティ コンソールの [SAML identity provider](SAML ID プロバイダー) タブに表示されるものとまったく同じであることを確認します。 1 文字違うだけでも、問題が発生する可能性があります。 違いが見つかった場合は、エントリが正確に一致するように、SAP 暗号化ライブラリで問題を修正できます。

SAP 暗号化ライブラリを変更しても問題が解決しない場合は、 [Issued To](発行先) フィールドと [Issued By](発行元) フィールドをダブルクリックするだけで、手動で編集することができます。

SAML アサーション署名のトラブルシューティング

HANA 認証トレースに次のようなエントリが含まれる場合があります。

[48163]{-1}[-1/-1] 2020-09-11 21:15:18.896165 i Authentication SAMLAuthenticator.cpp(00398) : Unable to verify XML signature [48163]{-1}[-1/-1] 2020-09-11 21:15:18.896168 i Authentication MethodSAML.cpp(00103) : unsuccessful login attempt with SAML ticket!

このようなエントリが存在することは、署名が信頼されていないことを意味します。

解像度

sslcryptoprovider として OpenSSL を使用している場合は、trust.pemkey.pem ファイルが SSL ディレクトリにあるかどうかを確認します。 詳細については、SAP のブログ「Securing the communication between SAP HANA Studio and SAP HANA Server through SSL (SSL を使用して SAP HANA Studio と SAP HANA サーバー間の通信をセキュリティで保護する)」を参照してください。

sslcryptoprovider として commoncrypto を使用している場合は、テナント内に証明書を含むコレクションがあるかどうかを確認します。

検証

トレースが適切に構成されている場合は、Found valid XML signature と報告されます。

UPN マッピングのトラブルシューティング

次のようなエントリを含む HANA トレースが見つかることがあります。

SAMLAuthenticator.cpp(00886) : Assertion Subject NameID: `johnny@contoso.com` SAMLAuthenticator.cpp(00398) : Database user does not exist

このエラーは、SAML アサーションに nameId johnny@contoso.com が見つかったもの、それが存在しないか、HANA サーバーで正しくマップされていないことを示しています。

解像度

HANA データベース ユーザーに移動し、選択された [SAML] チェック ボックスの下の [Configure](構成) リンクを選択します。 次のウィンドウが表示されます。

Screenshot showing that the incorrect user name is displayed.

エラー メッセージで示されているように、HANA により johnny@contoso.com の検出が試みられました、外部 ID には johnny とだけ表示されています。 これら 2 つの値が一致している必要があります。 この問題を解決するには、[External Identity](外部 ID) で値を johnny@contoso.com に変更します。 この値は、大文字と小文字が区別されることに注意してください。

オンプレミス データ ゲートウェイと DirectQuery の詳細については、次のリソースを参照してください。