共用方式為


針對從 Power BI 到內部部署數據源的 SSO 使用安全性判斷提示標記語言

藉由啟用單一登錄 (SSO),您可以輕鬆地讓Power BI報表和儀錶板從內部部署來源重新整理數據,同時尊重在這些來源上設定的用戶層級許可權。 若要開啟無縫 SSO 連線,您可以使用 安全性判斷提示標記語言 (SAML)

注意

您只能使用單一登錄 SAML 搭配內部部署數據網關聯機到一個數據源。 若要使用單一登錄 SAML 連線到其他數據源,您必須使用不同的內部部署數據閘道。

SAML 支援的數據源

Microsoft 目前支援使用 SAML 的 SAP HANA。 如需使用 SAML 設定和設定 SAP HANA 單一登錄的詳細資訊,請參閱 SAML SSO for BI Platform to HANA

我們支援 Kerberos 的其他數據源(包括 SAP HANA)。

針對 SAP HANA,建議您先啟用加密,再建立 SAML SSO 連線。 若要啟用加密,請將 HANA 伺服器設定為接受加密連線,然後將閘道設定為使用加密來與 HANA 伺服器通訊。 由於 HANA ODBC 驅動程式預設不會加密 SAML 判斷提示,因此已簽署的 SAML 判斷提示會從閘道傳送到清楚的 HANA 伺服器,而且容易受到第三方攔截和重複使用。

重要

因為 SAP 不再支援 OpenSSL,Microsoft 也已停止其支援。 您現有的聯機會繼續運作,但您無法再建立新的連線。 請改用 SAP 密碼編譯連結庫 (CommonCryptoLib), 或 sapcrypto。

設定閘道和數據源

若要使用 SAML,您必須在您想要啟用 SSO 和閘道的 HANA 伺服器之間建立信任關係。 在此案例中,閘道會作為 SAML 識別提供者(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 識別提供者憑證的對應

若要建立 SAML 識別提供者憑證的對應,請執行下列動作:

  1. 在 SAP HANA Studio 中,以滑鼠右鍵按下您的 SAP HANA 伺服器名稱,然後選取 [安全性>開啟安全性控制台>SAML 識別提供者]。

  2. 選取 [ SAP 密碼編譯連結庫 ] 選項。 請勿使用 SAP 已淘汰的 OpenSSL 密碼編譯連結庫選項。

    Screenshot of the

  3. 若要匯入已簽署的憑證 IdP_Cert.pem,請選取藍色 的 [匯 入] 按鈕,如下圖所示:

    Screenshot of the

  4. 請記得為識別提供者指派名稱。

在 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 中 ,選取 [安全性] 資料夾。

    Screenshot of the Security folder structure on the left pane.

  2. 展開 [ 使用者],然後選取您想要將Power BI用戶對應至的使用者。

  3. 選取 [ SAML] 複選框,然後選取 [設定],如下圖所示:

    Screenshot of the

  4. 選取您在 [SAML 識別提供者憑證建立對應] 區段中建立的識別提供者。 針對 [外部身分識別],輸入 Power BI 使用者的 UPN(通常,用戶用來登入 Power BI 的電子郵件位址),然後選取 [ 新增]。

    Screenshot of the

    如果您已將閘道設定為使用 ADUserNameReplacementProperty 組態選項,請輸入將取代Power BI使用者原始UPN的值。 例如,如果您將ADUserNameReplacementProperty 設定SAMAccountName,請輸入使用者的SAMAccountName

設定閘道

既然您已設定閘道憑證和身分識別,請將憑證轉換成 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. 選取 [將所有憑證放在下列存放區],然後選取 [瀏覽>個人>確定]。

    Screenshot of the

    d. 選取 [ 下一步],然後選取 [ 完成]。

  3. 若要授與閘道服務帳戶對憑證私鑰的存取權,請執行下列動作:

    a. 在閘道電腦上,執行 Microsoft Management Console (MMC)。

    Screenshot of the gateway machine

    b. 在 MMC 中,選取 [檔案>新增/移除嵌入式管理單元]。

    Screenshot of the

    c. 選取 [憑證>新增],然後選取 [計算機帳戶>下一步]。

    d. 選取 [本機計算機>完成>] [確定]。

    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 數據網關

  4. 開啟 PowerBI.DataMovement.Pipeline.GatewayCore.dll.config,然後尋找 SapHanaSAMLCertThumbprint 區段。 貼上您在步驟 2 中複製的指紋。

  5. 重新啟動閘道服務。

執行 Power BI 報表

現在您可以使用 Power BI 中的 [ 管理閘道 ] 頁面來設定 SAP HANA 數據源。 在 [進階 設定] 下,透過SAML啟用SSO。 如此一來,您就可以發佈報表和數據集系結至該數據源。

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

注意

SSO 使用 Windows 驗證,因此請確定 Windows 帳戶可以存取閘道電腦。 如果不確定,請務必將NT-AUTHORITY\Authenticated Users (S-1-5-11) 新增至本機計算機 “Users” 群組。

針對使用 SAML 進行 SAP HANA 單一登錄進行疑難解答

本節提供針對使用 SAML 進行 SAP HANA 單一登錄進行疑難解答的廣泛步驟。 使用這些步驟可協助您自行診斷並修正可能遇到的任何問題。

拒絕的認證

設定 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 中,開啟管理控制台,然後選取 [ 診斷檔案] 索引標籤

  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,請遵循一節中的指示。 指示從 Finally 開始 ,將憑證指紋新增至閘道組態

變更組態檔之後,您必須重新啟動閘道服務,變更才會生效。

驗證

正確設定 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 識別提供者

HANA 驗證追蹤中字串的存在 Found SAML provider 表示 SAML 識別提供者已正確設定。 如果字串不存在,則設定不正確。

解決方法

首先,判斷您的組織是否使用 OpenSSL 或 commoncrypto 作為 sslcryptoprovider。 若要判斷正在使用哪一個提供者,請執行下列動作:

  1. 開啟 SAP HANA Studio。

  2. 開啟您正在使用之租使用者的 管理員 istration 控制台。

  3. 選取 [組態] 索引卷標,並使用 sslcryptoprovider 作為篩選條件,如下圖所示:

    Screenshot of the sslcryptoprovider information in SAP HANA Studio.

接下來,執行下列動作來確認密碼編譯連結庫已正確設定:

  1. 選取 [SAML 識別提供者 ] 索引標籤,然後執行下列其中一項動作,以移至 SAP HANA Studio 中的安全性控制台:

    • 如果 sslcryptoprovider 是 OpenSSL,請選取 [OpenSSL 密碼編譯連結庫]。
    • 如果 sslcryptoprovider 是 commonCrypto,請選取 [SAP 密碼編譯連結庫]。

    在下圖中, 已選取 SAP 密碼編譯連結庫

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

  2. 選取右上方的 [部署 ] 按鈕來部署變更,如下圖所示:

    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 =

在該字串中,請確定主體和簽發者與安全性控制台的 [SAML 識別提供者] 索引標籤中顯示的完全相同。 即使是單一字元的差異也會造成問題。 如果您發現差異,您可以在 SAP 密碼編譯連結庫中修正問題,讓專案完全相符。

如果變更 SAP 密碼編譯連結庫無法修正此問題,只要按兩下即可手動編輯 [發行到 ] 和 [發行者] 字段。

針對 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!

這類專案的存在表示簽章不受信任。

解決方法

如果您使用 OpenSSL 作為 sslcryptoprovider,請檢查 trust.pem 和 key.pem 檔案是否位於 SSL 目錄中。 如需詳細資訊,請參閱 SAP 部落格 保護 SAP HANA Studio 與 SAP HANA Server 透過 SSL 之間的通訊。

如果您使用 commoncrypto 作為 sslcryptoprovider,請檢查是否有集合與租使用者中的憑證。

驗證

正確設定追蹤時,它們會報告 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 Server 中正確對應。

解決方法

移至 HANA 資料庫使用者,然後在選取的 [SAML] 複選框下,選取 [ 設定 ] 連結。 隨即出現下列視窗:

Screenshot showing that the incorrect user name is displayed.

如錯誤訊息所述,HANA 嘗試尋找 johnny@contoso.com,但外部身分識別只會 顯示為johnny。 這兩個值必須相符。 若要解決此問題,請在 [外部身分識別] 底下,將值變更為 johnny@contoso.com。 請注意,此值區分大小寫。

如需內部部署數據閘道和 DirectQuery 的詳細資訊,請參閱下列資源: