Używanie języka znaczników asercji zabezpieczeń na potrzeby logowania jednokrotnego z usługi Power BI do lokalnych źródeł danych

Po włączeniu logowania jednokrotnego (SSO) możesz ułatwić raportom i pulpitom nawigacyjnym usługi Power BI odświeżanie danych ze źródeł lokalnych przy jednoczesnym przestrzeganiu uprawnień na poziomie użytkownika skonfigurowanych w tych źródłach. Aby umożliwić bezproblemową łączność z logowaniem jednokrotnym, należy użyć języka SAML (Security Assertion Markup Language).

Uwaga

Połączenie z tylko jednym źródłem danych można nawiązać przy użyciu protokołu SAML logowania jednokrotnego z lokalną bramą danych. Aby nawiązać połączenie z dodatkowym źródłem danych przy użyciu protokołu SAML logowania jednokrotnego, musisz użyć innej lokalnej bramy danych.

Obsługiwane źródła danych dla języka SAML

Firma Microsoft obecnie obsługuje platformę SAP HANA z językiem SAML. Aby uzyskać więcej informacji na temat konfigurowania i konfigurowania logowania jednokrotnego dla platformy SAP HANA przy użyciu protokołu SAML, zobacz SAML SSO for BI Platform to HANA (Logowanie jednokrotne SAML dla platformy analizy biznesowej na platformie HANA).

Obsługujemy dodatkowe źródła danych przy użyciu protokołu Kerberos (w tym platformy SAP HANA).

W przypadku platformy SAP HANA zalecamy włączenie szyfrowania przed nawiązaniem połączenia logowania jednokrotnego SAML. Aby włączyć szyfrowanie, skonfiguruj serwer HANA do akceptowania zaszyfrowanych połączeń, a następnie skonfiguruj bramę do używania szyfrowania do komunikowania się z serwerem HANA. Ponieważ sterownik HANA ODBC domyślnie nie szyfruje asercji SAML, podpisana asercja SAML jest wysyłana z bramy do serwera HANA w postaci jasnej i jest podatna na przechwycenie i ponowne użycie przez inne firmy.

Ważne

Ponieważ oprogramowanie SAP nie obsługuje już biblioteki OpenSSL, firma Microsoft również zaprzestała obsługi. Istniejące połączenia nadal działają, ale nie można już tworzyć nowych połączeń. Zamiast tego użyj biblioteki kryptograficznego SAP (CommonCryptoLib) lub sapcrypto.

Konfigurowanie bramy i źródła danych

Aby użyć protokołu SAML, należy ustanowić relację zaufania między serwerami HANA, dla których chcesz włączyć logowanie jednokrotne i bramę. W tym scenariuszu brama służy jako dostawca tożsamości SAML. Tę relację można ustanowić na różne sposoby. Firma SAP zaleca użycie biblioteki CommonCryptoLib do wykonania kroków konfiguracji. Aby uzyskać więcej informacji, zobacz oficjalną dokumentację systemu SAP.

Tworzenie certyfikatów

Relację zaufania między serwerem HANA i dostawcą tożsamości bramy można ustanowić, podpisując certyfikat X509 dostawcy tożsamości bramy przy użyciu głównego urzędu certyfikacji zaufanego przez serwer HANA.

Aby utworzyć certyfikaty, wykonaj następujące czynności:

  1. Na urządzeniu z uruchomioną platformą SAP HANA utwórz pusty folder do przechowywania certyfikatów, a następnie przejdź do tego folderu.

  2. Utwórz certyfikaty główne, uruchamiając następujące polecenie:

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

    Pamiętaj, aby skopiować i zapisać hasło, aby użyć tego certyfikatu do podpisania innych certyfikatów. Powinny zostać wyświetlone tworzone pliki CA_Cert.pem i CA_Key.pem .

  3. Utwórz certyfikaty dostawcy tożsamości, uruchamiając następujące polecenie:

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

    Powinny zostać wyświetlone tworzone pliki IdP_Key.pem i IdP_Req.pem .

  4. Podpisz certyfikaty dostawcy tożsamości przy użyciu certyfikatów głównych:

    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
    

    Powinny zostać wyświetlone tworzone pliki CA_Cert.srl i IdP_Cert.pem . Obecnie interesuje Cię tylko plik IdP_Cert.pem .

Tworzenie mapowania certyfikatu dostawcy tożsamości SAML

Aby utworzyć mapowanie certyfikatu dostawcy tożsamości SAML, wykonaj następujące czynności:

  1. W programie SAP HANA Studio kliknij prawym przyciskiem myszy nazwę serwera SAP HANA, a następnie wybierz pozycję Security>Open Security Console SAML Identity Provider (Dostawca tożsamości SAML konsoli>zabezpieczeń zabezpieczeń).

  2. Wybierz opcję Biblioteka kryptograficzna SAP. Nie używaj opcji Biblioteka kryptograficzna OpenSSL, która jest przestarzała przez oprogramowanie SAP.

    Screenshot of the

  3. Aby zaimportować podpisany certyfikat IdP_Cert.pem, wybierz niebieski przycisk Importuj , jak pokazano na poniższej ilustracji:

    Screenshot of the

  4. Pamiętaj, aby przypisać nazwę dostawcy tożsamości.

Importowanie i tworzenie podpisanych certyfikatów na platformie HANA

Aby zaimportować i utworzyć podpisane certyfikaty na platformie HANA, wykonaj następujące czynności:

  1. W programie SAP HANA Studio uruchom następujące zapytanie:

    CREATE CERTIFICATE FROM '<idp_cert_pem_certificate_content>'
    

    Oto przykład:

    CREATE CERTIFICATE FROM
    '-----BEGIN CERTIFICATE-----
    MIIDyDCCArCgA...veryLongString...0WkC5deeawTyMje6
    -----END CERTIFICATE-----
    '
    
  2. Jeśli nie ma osobistego środowiska zabezpieczeń (PSE) z celem SAML, utwórz je, uruchamiając następujące zapytanie w programie SAP HANA Studio:

    CREATE PSE SAMLCOLLECTION;
    set pse SAMLCOLLECTION purpose SAML;
    
  3. Dodaj nowo utworzony podpisany certyfikat do programu PSE, uruchamiając następujące polecenie:

    alter pse SAMLCOLLECTION add CERTIFICATE <certificate_id>;
    

    Na przykład:

    alter pse SAMLCOLLECTION add CERTIFICATE 1978320;
    

    Listę utworzonych certyfikatów można sprawdzić, uruchamiając następujące zapytanie:

    select * from PUBLIC"."CERTIFICATES"
    

    Certyfikat jest teraz poprawnie zainstalowany. Aby potwierdzić instalację, możesz uruchomić następujące zapytanie:

    select * from "PUBLIC"."PSE_CERTIFICATES"
    

Mapuj użytkownika

Aby zamapować użytkownika, wykonaj następujące czynności:

  1. W programie SAP HANA Studio wybierz folder Zabezpieczenia .

    Screenshot of the Security folder structure on the left pane.

  2. Rozwiń węzeł Użytkownicy, a następnie wybierz użytkownika, do którego chcesz zamapować użytkownika usługi Power BI.

  3. Zaznacz pole wyboru SAML, a następnie wybierz pozycję Konfiguruj, jak pokazano na poniższej ilustracji:

    Screenshot of the

  4. Wybierz dostawcę tożsamości utworzonego w sekcji Tworzenie mapowania dla certyfikatu dostawcy tożsamości SAML. W polu Tożsamość zewnętrzna wprowadź nazwę UPN użytkownika usługi Power BI (zazwyczaj adres e-mail używany przez użytkownika do logowania się do usługi Power BI), a następnie wybierz pozycję Dodaj.

    Screenshot of the

    Jeśli brama została skonfigurowana do używania opcji konfiguracji ADUserNameReplacementProperty , wprowadź wartość, która zastąpi oryginalną nazwę UPN użytkownika usługi Power BI. Jeśli na przykład ustawisz wartość ADUserNameReplacementProperty na WARTOŚĆ SAMAccountName, wprowadź nazwę SAMAccountName użytkownika.

Konfigurowanie bramy

Po skonfigurowaniu certyfikatu i tożsamości bramy przekonwertuj certyfikat na format pliku PFX, a następnie skonfiguruj bramę do używania certyfikatu, wykonując następujące czynności:

  1. Przekonwertuj certyfikat na format PFX, uruchamiając następujące polecenie. To polecenie nazywa wynikowy plik samlcert.pfx i ustawia katalog główny jako hasło, jak pokazano poniżej:

    openssl pkcs12 -export -out samltest.pfx -in IdP_Cert.pem -inkey IdP_Key.pem -passin pass:root -passout pass:root
    
  2. Skopiuj plik PFX na maszynę bramy:

    a. Kliknij dwukrotnie plik samltest.pfx, a następnie wybierz pozycję Komputer>lokalny Dalej.

    b. Wprowadź hasło, a następnie wybierz pozycję Dalej.

    c. Wybierz pozycję Umieść wszystkie certyfikaty w następującym magazynie, a następnie wybierz pozycję Przeglądaj>osobiste>OK.

    Screenshot of the

    d. Wybierz przycisk Dalej, a następnie wybierz pozycję Zakończ.

  3. Aby udzielić kontu usługi bramy dostępu do klucza prywatnego certyfikatu, wykonaj następujące czynności:

    a. Na maszynie bramy uruchom program Microsoft Management Console (MMC).

    Screenshot of the gateway machine

    b. W programie MMC wybierz pozycję Dodaj/Usuń przystawkę pliku>.

    Screenshot of the

    c. Wybierz pozycję Certyfikaty>Dodaj, a następnie wybierz pozycję Konto>komputera Dalej.

    d. Wybierz pozycję Komputer>lokalny Zakończ>ok.

    e. Rozwiń węzeł Certyfikaty osobiste>certyfikaty>, a następnie wyszukaj certyfikat.

    f. Kliknij prawym przyciskiem myszy certyfikat, a następnie wybierz pozycję Wszystkie zadania>Zarządzaj kluczami prywatnymi.

    Screenshot of the

    g. Dodaj konto usługi bramy do listy. Domyślnie konto to NT SERVICE\PBIEgwService. Możesz dowiedzieć się, które konto uruchamia usługę bramy, uruchamiając plik services.msc , a następnie szukając lokalnej usługi bramy danych.

    Screenshot of the

Na koniec dodaj odcisk palca certyfikatu do konfiguracji bramy:

  1. Aby wyświetlić listę certyfikatów na maszynie, uruchom następujące polecenie programu PowerShell:

    Get-ChildItem -path cert:\LocalMachine\My
    
  2. Skopiuj odcisk palca utworzonego certyfikatu.

  3. Przejdź do katalogu bramy, który jest domyślnie C:\Program Files\On-premises data gateway .

  4. Otwórz plik PowerBI.DataMovement.Pipeline.GatewayCore.dll.config, a następnie wyszukaj sekcję SapHanaSAMLCertThumbprint . Wklej skopiowany odcisk palca w kroku 2.

  5. Uruchom ponownie usługę bramy.

Uruchamianie raportu usługi Power BI

Teraz możesz użyć strony Zarządzanie bramą w usłudze Power BI, aby skonfigurować źródło danych SAP HANA. W obszarze Zaawansowane Ustawienia włącz logowanie jednokrotne za pośrednictwem protokołu SAML. Dzięki temu można publikować raporty i zestawy danych powiązania z tym źródłem danych.

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

Uwaga

Logowanie jednokrotne używa uwierzytelniania systemu Windows, dlatego upewnij się, że konto systemu Windows może uzyskać dostęp do maszyny bramy. Jeśli nie masz pewności, dodaj nt-AUTHORITY\Uwierzytelnieni użytkownicy (S-1-5-11) do grupy "Użytkownicy" komputera lokalnego.

Rozwiązywanie problemów z używaniem protokołu SAML na potrzeby logowania jednokrotnego do platformy SAP HANA

Ta sekcja zawiera obszerne kroki rozwiązywania problemów z używaniem protokołu SAML na potrzeby logowania jednokrotnego do platformy SAP HANA. Korzystając z tych kroków, możesz samodzielnie zdiagnozować i rozwiązać wszelkie problemy, z którymi możesz się zmierzyć.

Odrzucone poświadczenia

Po skonfigurowaniu logowania jednokrotnego opartego na protokole SAML w portalu usługi Power BI może zostać wyświetlony następujący błąd: "Nie można użyć podanych poświadczeń dla źródła platformy SapHana". Ten błąd wskazuje, że poświadczenia SAML zostały odrzucone przez platformę SAP HANA.

Ślady uwierzytelniania po stronie serwera zawierają szczegółowe informacje dotyczące rozwiązywania problemów z poświadczeniami na platformie SAP HANA. Aby skonfigurować śledzenie dla serwera SAP HANA, wykonaj następujące czynności:

  1. Na serwerze SAP HANA włącz śledzenie uwierzytelniania, uruchamiając następujące zapytanie:

    ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') set ('trace', 'authentication') = 'debug' with reconfigure 
    
  2. Odtwórz problem.

  3. W programie SAP HANA Studio otwórz konsolę administracyjną, a następnie wybierz kartę Pliki diagnostyki .

  4. Otwórz najnowszy ślad serwera indeksowania, a następnie wyszukaj SAMLAuthenticator.cpp.

    Powinien zostać wyświetlony szczegółowy komunikat o błędzie wskazujący główną przyczynę, jak pokazano w poniższym przykładzie:

    [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. Po zakończeniu rozwiązywania problemów wyłącz śledzenie uwierzytelniania, uruchamiając następujące zapytanie:

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

Weryfikowanie i rozwiązywanie problemów z błędami bramy

Aby postępować zgodnie z procedurami w tej sekcji, należy zebrać dzienniki bramy.

Błąd SSL (certyfikat)

Objawy błędu

Ten problem ma wiele objawów. Podczas próby dodania nowego źródła danych może zostać wyświetlony komunikat o błędzie podobny do następującego:

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."

Podczas próby utworzenia lub odświeżenia raportu może zostać wyświetlony komunikat o błędzie podobny do tego na poniższej ilustracji:

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

Podczas badania mashupu[date]*.log zostanie wyświetlony następujący komunikat o błędzie:

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

Rozwiązanie

Aby rozwiązać ten błąd SSL, przejdź do połączenia ze źródłem danych, a następnie na liście rozwijanej Weryfikuj certyfikat serwera wybierz pozycję Nie, jak pokazano na poniższej ilustracji:

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

Po wybraniu tego ustawienia komunikat o błędzie nie będzie już wyświetlany.

Błąd signXML bramy

Błąd signXML bramy może być wynikiem nieprawidłowych ustawień sapHanaSAMLCertThumbprint lub może to być problem z serwerem HANA. Wpisy w dziennikach bramy pomagają zidentyfikować miejsce, w którym znajduje się problem i jak go rozwiązać.

Objawy błędu

Wpisy dziennika dlaSignXML: Found the cert...: Jeśli plik GatewayInfo[date].log zawiera ten błąd, znaleziono certyfikat SignXML, a twoje wysiłki dotyczące rozwiązywania problemów powinny skupić się na krokach znalezionych w sekcji "Weryfikowanie i rozwiązywanie problemów po stronie serwera HANA".

Wpisy dziennika dla Couldn't find saml cert: jeśli plik GatewayInfo[date].log zawiera ten błąd, program SapHanaSAMLCertThumbprint jest niepoprawnie ustawiony. W poniższej sekcji rozwiązywania opisano sposób rozwiązywania problemu.

Rozwiązanie

Aby prawidłowo ustawić program SapHanaSAMLCertThumbprint, postępuj zgodnie z instrukcjami w sekcji "Konfigurowanie bramy". Instrukcje zaczynają się od na koniec, dodaj odcisk palca certyfikatu do konfiguracji bramy.

Po zmianie pliku konfiguracji należy ponownie uruchomić usługę bramy, aby zmiany zaczęły obowiązywać.

Weryfikacja

Po poprawnym ustawieniu certyfikatu SapHanaSAMLCertThumbprint dzienniki bramy będą zawierać wpisy, które zawierają SignXML: Found the cert...element . Na tym etapie powinno być możliwe przejście do sekcji "Weryfikowanie i rozwiązywanie problemów po stronie serwera HANA".

Jeśli brama nie może użyć certyfikatu do podpisania asercji SAML, może zostać wyświetlony błąd w dziennikach podobnych do następujących:

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.

Aby rozwiązać ten błąd, postępuj zgodnie z instrukcjami rozpoczynającymi się od kroku 3 w sekcji "Konfigurowanie bramy".

Po zmianie konfiguracji uruchom ponownie usługę bramy, aby zmiany zaczęły obowiązywać.

Weryfikowanie i rozwiązywanie problemów po stronie serwera HANA

Skorzystaj z rozwiązań w tej sekcji, jeśli brama może znaleźć certyfikat i podpisać asercji SAML, ale nadal występują błędy. Należy zebrać ślady uwierzytelniania platformy HANA zgodnie z opisem we wcześniejszej sekcji "Odrzucone poświadczenia".

Dostawca tożsamości SAML

Obecność Found SAML provider ciągu w śladach uwierzytelniania HANA wskazuje, że dostawca tożsamości SAML jest prawidłowo skonfigurowany. Jeśli ciąg nie jest obecny, konfiguracja jest niepoprawna.

Rozwiązanie

Najpierw określ, czy organizacja używa biblioteki OpenSSL, czy commoncrypto jako dostawcy sslcryptoprovider. Aby określić, który dostawca jest używany, wykonaj następujące czynności:

  1. Otwórz program SAP HANA Studio.

  2. Otwórz konsolę Administracja istration dla używanej dzierżawy.

  3. Wybierz kartę Konfiguracja i użyj sslcryptoprovider jako filtru, jak pokazano na poniższej ilustracji:

    Screenshot of the sslcryptoprovider information in SAP HANA Studio.

Następnie sprawdź, czy biblioteka kryptograficzna jest poprawnie ustawiona, wykonując następujące czynności:

  1. Przejdź do konsoli zabezpieczeń w programie SAP HANA Studio, wybierając kartę Dostawcy tożsamości SAML i wykonaj jedną z następujących czynności:

    • Jeśli dostawca sslcryptoprovider to OpenSSL, wybierz pozycję Biblioteka kryptograficzna OpenSSL.
    • Jeśli dostawca sslcryptoprovider jest commonCrypto, wybierz pozycję Biblioteka kryptograficzna SAP.

    Na poniższej ilustracji wybrano bibliotekę kryptograficzną SAP:

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

  2. Wdróż zmiany, wybierając przycisk Wdróż w prawym górnym rogu, jak pokazano na poniższej ilustracji:

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

Weryfikacja

Gdy ślady są prawidłowo skonfigurowane, będą raportować Found SAML provider i nie będą raportować SAML Provider not found. Możesz przejść do następnej sekcji "Rozwiązywanie problemów z podpisem asercji SAML".

Jeśli dostawca kryptograficzny jest ustawiony, ale SAML Provider not found nadal jest raportowany, wyszukaj ciąg w śladzie rozpoczynającym się od następującego tekstu:

Search SAML provider for certificate with subject =

W tym ciągu upewnij się, że podmiot i wystawca są dokładnie takie same jak wyświetlane na karcie dostawcy tożsamości SAML w konsoli zabezpieczeń. Różnica nawet jednego znaku może spowodować problem. Jeśli znajdziesz różnicę, możesz rozwiązać problem z biblioteką kryptograficzną SAP, aby wpisy odpowiadały dokładnie.

Jeśli zmiana biblioteki kryptograficznego SAP nie rozwiąże problemu, możesz ręcznie edytować pola Wystawione i Wystawione przez , klikając je dwukrotnie.

Rozwiązywanie problemów z podpisem asercji SAML

Możesz znaleźć ślady uwierzytelniania platformy HANA zawierające wpisy podobne do następujących:

[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!

Obecność takich wpisów oznacza, że podpis nie jest zaufany.

Rozwiązanie

Jeśli używasz biblioteki OpenSSL jako dostawcy sslcryptoprovider, sprawdź, czy pliki trust.pem i key.pem znajdują się w katalogu SSL. Aby uzyskać więcej informacji, zobacz blog SAP Securing the communication between SAP HANA Studio and SAP HANA Server through SSL (Zabezpieczanie komunikacji między programem SAP HANA Studio i serwerem SAP HANA za pośrednictwem protokołu SSL).

Jeśli używasz biblioteki commoncrypto jako dostawcy sslcryptoprovider, sprawdź, czy istnieje kolekcja z certyfikatem w dzierżawie.

Weryfikacja

Gdy ślady są prawidłowo skonfigurowane, będą zgłaszać raport Found valid XML signature.

Rozwiązywanie problemów z mapowaniem nazwy UPN

Możesz znaleźć ślady platformy HANA zawierające wpisy podobne do następujących:

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

Błąd wskazuje, że identyfikator nameId johnny@contoso.com znajduje się w asercji SAML, ale nie istnieje lub nie jest poprawnie zamapowany na serwerze HANA.

Rozwiązanie

Przejdź do użytkownika bazy danych HANA i w obszarze zaznaczonego pola wyboru SAML wybierz link Konfiguruj . Zostanie wyświetlone następujące okno:

Screenshot showing that the incorrect user name is displayed.

Jak opisano w komunikacie o błędzie, platforma HANA próbowała znaleźć johnny@contoso.comelement , ale tożsamość zewnętrzna jest wyświetlana tylko jako johnny. Te dwie wartości muszą być zgodne. Aby rozwiązać ten problem, w obszarze Tożsamość zewnętrzna zmień wartość na johnny@contoso.com. Należy pamiętać, że w tej wartości jest uwzględniana wielkość liter.

Aby uzyskać więcej informacji na temat lokalnej bramy danych i trybu DirectQuery, zobacz następujące zasoby: