Používanie protokolu Kerberos na jediné prihlásenie (SSO) k serveru SAP BW pomocou knižnice CommonCryptoLib (sapcrypto.dll)

Tento článok popisuje konfiguráciu zdroja údajov SAP BW na povolenie jediného prihlásenia (SSO) z služba Power BI pomocou knižnice CommonCryptoLib (sapcrypto.dll).

Poznámka

Pred pokusom o obnovenie zostavy založenej na systéme SAP BW, ktorá používa jediné prihlásenie cez protokol Kerberos, dokončite oba kroky v tomto článku a kroky v téme Konfigurácia jediného prihlásenia cez protokol Kerberos. Keď ako knižnicu SNC používate knižnicu CommonCryptoLib, umožňujete tým pripojenie cez jediné prihlásenie k aplikačným serverom SAP BW aj serverom správ SAP BW.

Poznámka

Konfigurácia knižníc (sapcrypto a gx64krb5) na tom istom serveri brány je nepodporovaným scenárom. Neodporúča sa nakonfigurovať obe knižnice na rovnakom serveri brány, pretože by viedli k mixu knižníc. Ak chcete používať obe knižnice, úplne oddeľte server brány. Môžete napríklad nakonfigurovať knižnicu gx64krb5 pre server A a potom sapcrypto pre server B. Nezabudnite, že akékoľvek zlyhanie na serveri A, ktoré používa knižnicu gx64krb5, nie je podporované, pretože knižnice SAP a Microsoft už nepodporujú knižnice gx64krb5.

Konfigurácia servera SAP BW na povolenie jediného prihlásenia pomocou knižnice CommonCryptoLib

Poznámka

Lokálna brána údajov je 64-bitový softvér, a preto na vykonanie jediného prihlásenia BW vyžaduje 64-bitovú verziu knižnice CommonCryptoLib (sapcrypto.dll). Ak plánujete pripojenie cez jediné prihlásenie k serveru SAP BW otestovať v rozhraní SAP GUI ešte pred pokusom o pripojenie cez jediné prihlásenie prostredníctvom brány (odporúča sa), budete potrebovať aj 32-bitovú verziu knižnice CommonCryptoLib, pretože rozhranie SAP GUI je 32-bitový softvér.

  1. Skontrolujte, či je váš server BW správne nakonfigurovaný pre jediné prihlásenie cez protokol Kerberos pomocou knižnice CommonCryptoLib. Ak je, môžete použiť jediné prihlásenie na prístup k serveru BW (buď priamo, alebo prostredníctvom servera správ SAP BW) pomocou nástroja SAP, ako je napríklad rozhranie SAP GUI nakonfigurované na používanie knižnice CommonCryptoLib.

    Ďalšie informácie o krokoch inštalácie nájdete v téme Jediné prihlásenie cez SAP: Overenie pomocou protokolu Kerberos/SPNEGO. Váš server BW by mal používať CommonCryptoLib ako svoju knižnicu SNC a mať názov SNC, ktorý začína reťazcom CN=, napríklad CN=BW1. Ďalšie informácie o požiadavkách na názov SNC nájdete v téme Parametre SNC pre konfiguráciu protokolu Kerberos.

  2. Ak ste to ešte neurobili, nainštalujte si verziu x64 rozhrania SAP .NET Pripojenie or v počítači, v rámci ktorý je brána nainštalovaná.

    Nainštalovanie súčasti môžete skontrolovať pokusom o pripojenie k serveru BW v aplikácii Power BI Desktop z počítača s bránou. Ak sa nemôžete pripojiť pomocou implementácie 2.0, Pripojenie .NET nie je nainštalovaný alebo nebol nainštalovaný do GAC.

  3. Uistite sa, že v počítači, v akom je nainštalovaná brána, nie je spustený klient SAP Secure Login Client (SLC).

    SLC ukladá žiadosti protokolu Kerberos do vyrovnávacej pamäte spôsobom, ktorý môže zasahovať do schopnosti brány používať protokol Kerberos na jediné prihlásenie.

  4. Ak je nainštalovaná služba SLC, odinštalujte ju alebo sa uistite, že ste ukončili klienta SAP Secure Login Client. Kliknite pravým tlačidlom myši na ikonu v systémovej lište a pred pokusom o pripojenie cez jediné prihlásenie pomocou brány vyberte položky Odhlásiť sa a Ukončiť .

    SLC sa nepodporuje na používanie v počítačoch so systémom Windows Server. Ďalšie informácie nájdete v poznámke 2780475 SAP (vyžaduje sa konto s-user).

    SAP Secure Login Client

  5. Ak odinštalujete SLC alebo vyberiete položky Odhlásiť sa a Ukončiť, otvorte okno príkazového riadku a zadaním príkazu klist purge vymažte všetky žiadosti protokolu Kerberos vo vyrovnávacej pamäti pred pokusom o pripojenie jediného prihlásenia prostredníctvom brány.

  6. Z aplikácie SAP Launchpad si stiahnite 64-bitovú verziu knižnice CommonCryptoLib (sapcrypto.dll) verzie 8.5.25 alebo novšej a skopírujte ju do priečinka v počítači s bránou. V tom istom adresári, do ktorého ste sapcrypto.dll skopírovali, vytvorte súbor s názvom sapcrypto.ini s nasledujúcim obsahom:

    ccl/snc/enable_kerberos_in_client_role = 1
    

    Súbor .ini obsahuje informácie o konfigurácii vyžadované knižnicou CommonCryptoLib na povolenie jediného prihlásenia v scenári brány.

    Poznámka

    Tieto súbory musia byť uložené na tom istom mieste; Inými slovami, cesta /path/to/sapcrypto/ by mala obsahovať sapcrypto.ini aj sapcrypto.dll.

    Používateľ služby brány a používateľ služby Active Directory (AD), ktorý používateľ služby zosobní, potrebujú čítať a spúšťať povolenia pre obidva súbory. Odporúčame udeliť povolenia pre súbory .ini aj .dll do skupiny Overení používatelia. Na testovacie účely môžete tieto povolenia explicitne udeliť používateľovi služby brány aj používateľovi služby Active Directory, ktorý používate na testovanie. Na nasledujúcej snímke obrazovky sme udelili skupine Overení používatelia povolenia na čítanie a vykonanie pre sapcrypto.dll:

    Authenticated users

  7. Ak ešte nemáte k bráne, cez ktorú sa má prechádzať pripojenie cez jediné prihlásenie, priradený zdroj údajov SAP BW, pridajte ho na stránke Spravovať brány v služba Power BI. Ak už takýto zdroj údajov máte, upravte ho:

    • Ak chcete vytvoriť pripojenie cez jediné prihlásenie k aplikačnému serveru BW, ako typ zdroja údajov vyberte SAP Business Warehouse.
    • Ak chcete vytvoriť pripojenie cez jediné prihlásenie k serveru správ BW, vyberte možnosť Server správ Sap Business Warehouse.
  8. Pre knižnicu SNC vyberte premennú prostredia SNC_LIB alebo SNC_LIB_64 alebo možnosť Vlastné.

    • Ak vyberiete možnosť SNC_LIB, musíte nastaviť hodnotu premennej prostredia SNC_LIB_64 v počítači s bránou na absolútnu cestu k 64-bitovej kópii sapcrypto.dll v počítači s bránou. Napríklad C:\Users\Test\Desktop\sapcrypto.dll.

    • Ak vyberiete možnosť Vlastné, prilepte absolútnu cestu sapcrypto.dll do poľa Cesta k vlastnej knižnici SNC, ktoré sa zobrazí na stránke Spravovať brány.

  9. Ako Názov partnera SNC zadajte názov SNC servera BW. V časti Rozšírené nastavenia skontrolujte, či je začiarknuté políčko Pre dotazy DirectQuery použiť jediné prihlásenie cez protokol Kerberos. Vyplňte ostatné polia tak, ako by ste vytvárali pripojenie overovania systému Windows z aplikácie PBI Desktop.

  10. Vytvorte premennú systémového prostredia CCL_PROFILE a nastavte jej hodnotu na cestu k sapcrypto.ini.

    CCL_PROFILE system environment variable

    Súbory .dll a .ini sapcrypto musia existovať v rovnakom umiestnení. V príklade uvedenom vyššie sa oba sapcrypto.ini a sapcrypto.dll nachádzajú na pracovnej ploche.

  11. Reštartujte službu brány.

    Restart gateway service

  12. Spustenie zostavy Power BI

Riešenie problémov

Ak sa vám nepodarilo obnoviť zostavu v služba Power BI, problém môžete diagnostikovať pomocou sledovania brány, sledovania CPIC a sledovania knižnice CommonCryptoLib. Sledovanie CPIC a knižnicu CommonCryptoLib sú produkty SAP, a preto spoločnosť Microsoft pre ne nemôže poskytnúť podporu.

Denníky brány

  1. Zreprodukujte problém.

  2. Otvorte aplikáciu brány a vyberte položku Exportovať denníky na karte Diagnostika.

    Export gateway logs

Sledovanie CPIC

  1. Ak chcete povoliť sledovanie CPIC, nastavte dve premenné prostredia: CPIC_TRACE a CPIC_TRACE_DIR.

    Prvá premenná nastaví úroveň sledovania a druhá premenná nastaví adresár súboru sledovania. Adresár musí byť umiestnenie, do ktorom môžu zapisovať členovia skupiny Overení používatelia.

  2. Nastavte CPIC_TRACE na hodnotu 3 a CPIC_TRACE_DIR na akýkoľvek adresár, do ktorého chcete zapísať súbory sledovania. Napríklad:

    CPIC tracing

  3. Zreprodukujte problém a skontrolujte, či CPIC_TRACE_DIR obsahuje súbory sledovania.

    Sledovanie CPIC môže diagnostikovať problémy na vyššej úrovni, ako je napríklad zlyhanie načítania knižnice sapcrypto.dll. Tu je napríklad úryvok kódu zo súboru sledovania CPIC, kde sa vyskytla chyba načítania .dll:

    [Thr 7228] *** ERROR => DlLoadLib()==DLENOACCESS - LoadLibrary("C:\Users\test\Desktop\sapcrypto.dll")
    Error 5 = "Access is denied." [dlnt.c       255]
    

    Ak sa u vás vyskytne takéto zlyhanie, ale nastavili ste povolenia Na čítanie a vykonanie v sapcrypto.dll a sapcrypto.ini, ako je popísané v časti vyššie, skúste nastaviť rovnaké povolenia na čítanie a vykonanie v priečinku, ktorý obsahuje súbory.

    Ak sa vám stále nepodarilo načítať .dll, skúste zapnúť auditovanie pre daný súbor. Preskúmanie výsledných denníkov auditu v Zobrazovač udalostí systému Windows vám môže pomôcť zistiť, prečo sa súbor nenačítava. Vyhľadajte záznam o zlyhaní iniciovaný zosobneným používateľom služby Active Directory. Zlyhanie v denníku auditu pre zosobneného používateľa MYDOMAIN\mytestuser by vyzeralo takto:

    A handle to an object was requested.
    
    Subject:
        Security ID:        MYDOMAIN\mytestuser
        Account Name:       mytestuser
        Account Domain:     MYDOMAIN
        Logon ID:           0xCF23A8
    
    Object:
        Object Server:      Security
        Object Type:        File
        Object Name:        <path information>\sapcrypto.dll
        Handle ID:          0x0
        Resource Attributes:    -
    
    Process Information:
        Process ID:     0x2b4c
        Process Name:   C:\Program Files\On-premises data gateway\Microsoft.Mashup.Container.NetFX45.exe
    
    Access Request Information:
        Transaction ID:     {00000000-0000-0000-0000-000000000000}
        Accesses:           ReadAttributes
    
    Access Reasons:     ReadAttributes: Not granted
    
    Access Mask:        0x80
    Privileges Used for Access Check:   -
    Restricted SID Count:   0
    

Sledovanie knižnice CommonCryptoLib

  1. Zapnite sledovanie knižnice CommonCryptoLib pridaním týchto riadkov do sapcrypto.ini súboru, ktorý ste predtým vytvorili:

    ccl/trace/level=5
    ccl/trace/directory=<drive>:\logs\sectrace
    
  2. ccl/trace/directory Zmeňte možnosť na umiestnenie, do ktorého môžu zapisovať členovia skupiny Overení používatelia.

  3. Prípadne môžete vytvoriť nový súbor .ini a zmeniť toto správanie. V tom istom adresári ako sapcrypto.ini a sapcrypto.dll vytvorte súbor s názvom sectrace.ini s nasledujúcim obsahom. DIRECTORY Nahraďte možnosť umiestnením v počítači, do ktorom môžu zapisovať členovia skupiny Overení používatelia:

    LEVEL = 5
    DIRECTORY = <drive>:\logs\sectrace
    
  4. Zreprodukujte problém a skontrolujte, či umiestnenie, na ktoré odkazuje možnosť DIRECTORY , obsahuje súbory sledovania.

  5. Po dokončení vypnite sledovanie CPIC a CCL.

    Ďalšie informácie o sledovaní knižnice CommonCryptoLib nájdete v téme Poznámka 2491573 SAP (vyžaduje sa konto s-user systému SAP).

Zosobnenie

Táto časť popisuje riešenie problémov so zosobnením a krokmi na riešenie problémov so zosobnením.

Príznak: Pri pohľade na gatewayInfo[date].log nájdete záznam podobný nasledujúcemu: Informácie o zosobnení položky user DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: Impersonation). Ak sa hodnota impersonationLevel líši od hodnoty Impersonation, zosobnenie prebieha správne.

Riešenie: Postupujte podľa krokov uvedených v článku Udelenie práv lokálnej politiky kontu služby brány cez článok o počítači s bránou. Po zmene konfigurácie reštartujte službu brány.

Overenie: Obnovte alebo vytvorte zostavu a zhromažďovajte gatewayInfo [date].log. Otvorte najnovší súbor denníka GatewayInfo a znova skontrolujte nasledujúci reťazec: Informácie o zosobnení používateľa DOMÉNA\Používateľ (IsAuthenticated: True, ImpersonationLevel: Impersonation) na zabezpečenie toho, že hodnota pre ImpersonationLevel sa zhoduje so zosobnením.

Delegovanie

Problémy s delegovaním sa zvyčajne v služba Power BI zobrazujú ako všeobecné chyby. Ak chcete zistiť, či delegovanie predstavuje problém, je užitočné zhromaždiť sledovania wiresharku a použiť protokol Kerberos ako filter. Informácie o chybách protokolu Kerberos nájdete v blogovom príspevku. V zvyšnej časti sa popisuje riešenie problémov s príznakmi a riešenie problémov s delegovaním.

Príznak: V služba Power BI sa môže vyskytnúť neočakávaná chyba podobná nasledujúcej snímke obrazovky. GatewayInfo [date].log uvidíte [DM.GatewayCore] pričom sa vyskytne výnimka počas pokusu o vykonanie dotazu Ado pre clientPipelineId a import [0D_NW_CHANN] zodpovedá žiadnemu exportu.

Screenshot of unhelpful error

V mashup [date].log sa zobrazí všeobecná chyba GSS-API(maj): neboli zadané žiadne poverenia.

Pri pohľade na sledovania CPIC (s-Microsoft.Mashup*.trc) sa zobrazí niečo podobné ako v nasledujúcom článku:

[Thr 4896] *** ERROR => SncPEstablishContext() failed for target='p:CN=BW5' [sncxxall.c 3638]
[Thr 4896] *** ERROR => SncPEstablishContext()==SNCERR_GSSAPI [sncxxall.c 3604]
[Thr 4896] GSS-API(maj): No credentials were supplied
[Thr 4896] Unable to establish the security context
[Thr 4896] target="p:CN=BW5"
[Thr 4896] <<- SncProcessOutput()==SNCERR_GSSAPI
[Thr 4896]
[Thr 4896] LOCATION CPIC (TCP/IP) on local host HNCL2 with Unicode
[Thr 4896] ERROR GSS-API(maj): No credentials were supplied
[Thr 4896] Unable to establish the security context
[Thr 4896] target="p:CN=BW5"
[Thr 4896] TIME Thu Oct 15 20:49:31 2020
[Thr 4896] RELEASE 721
[Thr 4896] COMPONENT SNC (Secure Network Communication)
[Thr 4896] VERSION 6
[Thr 4896] RC -4
[Thr 4896] MODULE sncxxall.c
[Thr 4896] LINE 3604
[Thr 4896] DETAIL SncPEstablishContext
[Thr 4896] SYSTEM CALL gss_init_sec_context
[Thr 4896] COUNTER 3
[Thr 4896]
[Thr 4896] *** ERROR => STISEND:STISncOut failed 20 [r3cpic.c 9834]
[Thr 4896] STISearchConv: found conv without search

Chyba sa v sekundách od počítača brány s príponou Microsoft.Mashup.Con-[].trc vyjasní:

[2020.10.15 20:31:38.396000][4][Microsoft.Mashup.Con][Kerberos ][ 3616] AcquireCredentialsHandleA called successfully.
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] InitializeSecurityContextA returned -2146893053 (0x80090303). Preparation for kerberos failed!
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] Getting kerberos ticket for 'SAP/BW5' failed (user name is affonso_v@HANABQ.COM)
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] Error for requested algorithm 18: 0/C000018B The security database on the server does not have a computer account for this workstation trust relationship.
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] Error for requested algorithm 17: 0/C000018B The security database on the server does not have a computer account for this workstation trust relationship.
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] Error for requested algorithm 23: 0/C000018B The security database on the server does not have a computer account for this workstation trust relationship.
[2020.10.15 20:31:38.396000][2][Microsoft.Mashup.Con][Kerberos ][ 3616] Error for requested algorithm 3: 0/C000018B The security database on the server does not have a computer account for this workstation trust relationship.

Problém sa môže zobraziť aj vtedy, keď sa pozriete na sledovania WireShark.

Screenshot of tracing program showing an error

Poznámka

Ostatné chyby , KRB5KDC_ERR_PREAUTH_REQUIRED , možno bezpečne ignorovať.

Riešenie: Do konta služby je potrebné pridať SPN SAP/BW5. Podrobné informácie a kroky sú k dispozícii v dokumentácii SAP.

Môže sa vyskytnúť podobná, ale nie identická chyba, ktorá sa prejaví v trasovaní WireShark ako nasledujúca chyba KRB5KDC_ERR_BADOPTION:

Screenshot of WireShark program showing a different error

Táto chyba označuje, že sa nepodarilo nájsť SAP/BW5 hlavného názvu služby, ale nie v službách, ktorým môže toto konto predložiť delegované poverenia na karte Delegovanie z konta služby brány . Ak chcete tento problém vyriešiť, postupujte podľa krokov na konfiguráciu konta služby brány pre štandardné delegované obmedzené protokolom Kerberos.

Overenie: Správna konfigurácia zabráni tomu, aby brána zobrazila všeobecné alebo neočakávané chyby. Ak sa naďalej zobrazujú chyby, skontrolujte konfiguráciu samotnej brány alebo konfiguráciu servera BW.

Chyby poverení

Táto časť popisuje riešenie problémov s príznakmi a riešenie problémov s chybami poverení. Môžu sa zobraziť aj všeobecné chyby z služba Power BI, ako je to popísané v predchádzajúcej časti o delegovaní.

Na základe symptómov, ktoré sa zobrazujú v zdroji údajov (SAP BW), existujú rôzne rozlíšenia, takže skontrolujeme obe.

Príznak 1: V sektraces sec-disp+work[].trc zo servera BW sa zobrazia sledovania podobné nasledujúcemu:

[2020.05.26 14:21:28.668325][4][disp+work ][SAPCRYPTOLIB][435584] { gss_display_name [2020.05.26 14:21:28.668338][4][disp+work ][GSS ][435584] gss_display_name output buffer (41 bytes) [2020.05.26 14:21:28.668338][4][disp+work ][GSS ][435584] CN=DAVID@XS.CONTOSO.COM@CONTOSO.COM

Riešenie: Ak je to potrebné, dokončite kroky konfigurácie a nastavte parametre konfigurácie mapovania používateľov v počítači s bránou. Tieto kroky budete musieť vykonať dokonca aj vtedy, ak už máte Pripojenie Microsoft Entra nakonfigurovaný.

Overenie: Zostavu budete môcť úspešne načítať v služba Power BI. Ak nie je úspešné, pozrite si kroky v príznaku 2.

Príznak 2: V sektraces sec-disp+work[].trc zo servera BW sa zobrazia sledovania podobné nasledujúcemu:

[2020.10.19 23:10:15.469000][4][disp+work.EXE ][SAPCRYPTOLIB][ 4460] { gss_display_name
[2020.10.19 23:10:15.469000][4][disp+work.EXE ][GSS ][ 4460] gss_display_name output buffer (23 bytes)
[2020.10.19 23:10:15.469000][4][disp+work.EXE ][GSS ][ 4460] CN=DAVID@CONTOSO.COM

Rozlíšenie: Skontrolujte, či sa externé ID používateľa protokolu Kerberos zhoduje s tým, čo sa zobrazuje v sekundách.

  1. Otvorte rozhranie SAP Logon.
  2. Použite transakciu SU01.
  3. Upraviť používateľa.
  4. Prejdite na kartu SNC a overte, či sa názov SNC zhoduje s tým, čo sa zobrazuje v denníkoch.

Overenie: Po správnom dokončení budete môcť vytvárať a obnovovať zostavy v služba Power BI.

Ďalšie informácie o lokálnej bráne údajov a režime DirectQuery získate v nasledujúcich témach: