Jednotné přihlašování kerberos pro jednotné přihlašování k SAP BW pomocí knihovny CommonCryptoLib (sapcrypto.dll)

Tento článek popisuje, jak nakonfigurovat zdroj dat SAP BW tak, aby umožňoval jednotné přihlašování z služba Power BI pomocí knihovny CommonCryptoLib (sapcrypto.dll).

Poznámka:

Než se pokusíte aktualizovat sestavu založenou na SAP BW, která používá jednotné přihlašování kerberos, proveďte kroky uvedené v tomto článku i kroky v části Konfigurace jednotného přihlašování kerberos. Použití knihovny CommonCryptoLib jako knihovny SNC umožňuje připojení jednotného přihlašování k aplikačním serverům SAP BW i serverům zpráv SAP BW.

Poznámka:

Konfigurace obou knihoven (sapcrypto i gx64krb5) na stejném serveru brány je nepodporovaný scénář. Nedoporučuje se konfigurovat obě knihovny na stejném serveru brány, protože to povede ke kombinaci knihoven. Pokud chcete použít obě knihovny, zcela oddělte server brány. Například nakonfigurujte gx64krb5 pro server A a pak sapcrypto pro server B. Mějte na paměti, že všechna selhání na serveru A, který používá gx64krb5, není podporována, protože sap a Microsoft už gx64krb5 nepodporují.

Konfigurace SAP BW pro povolení jednotného přihlašování pomocí knihovny CommonCryptoLib

Poznámka:

Místní brána dat je 64bitový software, a proto k provedení jednotného přihlašování BW vyžaduje 64bitovou verzi knihovny CommonCryptoLib (sapcrypto.dll). Pokud plánujete otestovat připojení jednotného přihlašování k serveru SAP BW v grafickém uživatelském rozhraní SAP před pokusem o připojení přes jednotné přihlašování přes bránu (doporučeno), budete také potřebovat 32bitovou verzi knihovny CommonCryptoLib, protože SAP GUI je 32bitový software.

  1. Ujistěte se, že je váš server BW správně nakonfigurovaný pro jednotné přihlašování přes Kerberos pomocí knihovny CommonCryptoLib. Pokud ano, můžete použít jednotné přihlašování pro přístup k vašemu serveru BW (buď přímo, nebo prostřednictvím serveru zpráv SAP BW) pomocí nástroje SAP, jako je SAP GUI, který je nakonfigurovaný tak, aby používal CommonCryptoLib.

    Další informace o krocích nastavení najdete v tématu Jednotné přihlašování SAP: Ověřování pomocí protokolu Kerberos/SPNEGO. Váš server BW by měl jako knihovnu SNC používat CommonCryptoLib a má název SNC, který začíná cn=, například CN=BW1. Další informace o požadavcích na název SNC (konkrétně parametr snc/identity/as) najdete v tématu Parametry SNC pro konfiguraci protokolu Kerberos.

  2. Pokud jste to ještě neudělali, nainstalujte na počítač, na který je brána nainstalovaná, verzi x64 Připojení or SAP .NET.

    Pokud se pokusíte připojit k serveru BW v Power BI Desktopu z počítače brány, můžete zkontrolovat, jestli je komponenta nainstalovaná. Pokud se nemůžete připojit pomocí implementace 2.0, rozhraní .NET Připojení or není nainstalované nebo nebylo nainstalováno do GAC.

  3. Ujistěte se, že na počítači, na kterém je nainstalovaná brána, není spuštěný klient SAP SLC (Secure Login Client).

    SLC ukládá lístky protokolu Kerberos do mezipaměti způsobem, který může narušit schopnost brány používat Kerberos pro jednotné přihlašování.

  4. Pokud je SLC nainstalovaný, odinstalujte ho nebo se ujistěte, že ukončete klienta SAP Secure Login Client. Klikněte pravým tlačítkem myši na ikonu na hlavním panelu systému a před pokusem o připojení přes jednotné přihlašování pomocí brány vyberte Odhlásit se a ukončit .

    SLC se nepodporuje pro použití na počítačích s Windows Serverem. Další informace najdete v tématu SAP Note 2780475 (vyžaduje se s-uživatel).

    SAP Secure Login Client

  5. Pokud odinstalujete SLC nebo vyberete Odhlásit se a ukončit, otevřete okno cmd a před pokusem o připojení přes bránu vymažte klist purge všechny lístky Kerberos uložené v mezipaměti.

  6. Z launchpadu SAP stáhněte 64bitovou verzi CommonCryptoLib (sapcrypto.dll) verze 8.5.25 nebo vyšší a zkopírujte ji do složky na počítači brány. Ve stejném adresáři, do kterého jste zkopírovali sapcrypto.dll, vytvořte soubor s názvem sapcrypto.ini s následujícím obsahem:

    ccl/snc/enable_kerberos_in_client_role = 1
    

    Soubor .ini obsahuje informace o konfiguraci vyžadované službou CommonCryptoLib k povolení jednotného přihlašování ve scénáři brány.

    Poznámka:

    Tyto soubory musí být uloženy ve stejném umístění; jinými slovy, /path/to/sapcrypto/ by měl obsahovat sapcrypto.ini i sapcrypto.dll.

    Uživatel služby brány i uživatel Active Directory (AD), kterého bude uživatel služby zosobňovat, potřebují k oběma souborům oprávnění ke čtení a spuštění. Doporučujeme udělit oprávnění pro soubory .ini i .dll skupině Authenticated Users. Pro účely testování můžete tato oprávnění explicitně udělit uživateli služby brány i uživateli služby Active Directory, který používáte k testování. Na následujícím snímku obrazovky jsme udělili skupině Ověření uživatelé oprávnění číst a spouštět pro sapcrypto.dll:

    Authenticated users

  7. Pokud ještě nemáte zdroj dat SAP BW přidružený k bráně, kterou má připojení přes jednotné přihlašování procházet, přidejte ho na stránce Spravovat brány v služba Power BI. Pokud už takový zdroj dat máte, upravte ho:

    • Pokud chcete vytvořit připojení jednotného přihlašování k aplikačnímu serveru BW, zvolte jako typ zdroje dat SAP Business Warehouse.
    • Pokud chcete vytvořit připojení jednotného přihlašování k serveru zpráv BW, vyberte Sap Business Warehouse Message Server .
  8. Pro knihovnu SNC vyberte SNC_LIB nebo SNC_LIB_64 proměnnou prostředí nebo vlastní.

    • Pokud vyberete SNC_LIB, musíte na počítači brány nastavit hodnotu proměnné prostředí SNC_LIB_64 na absolutní cestu 64bitové kopie sapcrypto.dll na počítači brány. Například C:\Users\Test\Desktop\sapcrypto.dll.

    • Pokud zvolíte Možnost Vlastní, vložte absolutní cestu k sapcrypto.dll do pole Cesta k vlastní knihovně SNC, které se zobrazí na stránce Spravovat brány.

  9. Jako název partnera SNC zadejte název SNC serveru BW. V části Upřesnit nastavení se ujistěte, že je zaškrtnuté políčko Použít jednotné přihlašování přes Kerberos pro dotazy DirectQuery. Vyplňte další pole, jako kdybyste navazovali připojení ověřování systému Windows z PBI Desktopu.

  10. Vytvořte proměnnou systémového prostředí CCL_PROFILE a nastavte její hodnotu na cestu k sapcrypto.ini.

    CCL_PROFILE system environment variable

    Soubory sapcrypto .dll a .ini musí existovat ve stejném umístění. V předchozím příkladu jsou sapcrypto.ini i sapcrypto.dll umístěné na ploše.

  11. Restartujte službu brány.

    Restart gateway service

  12. Spuštění sestavy Power BI

Řešení problému

Pokud nemůžete aktualizovat sestavu v služba Power BI, můžete k diagnostice problému použít trasování brány, trasování CPIC a trasování knihovny CommonCryptoLib. Protože trasování CPIC a CommonCryptoLib jsou produkty SAP, Microsoft pro ně nemůže poskytovat podporu.

Protokoly brány

  1. Reprodukujte problém.

  2. Otevřete aplikaci brány a na kartě Diagnostika vyberte Exportovat protokoly.

    Export gateway logs

Trasování CPIC

  1. Pokud chcete povolit trasování CPIC, nastavte dvě proměnné prostředí: CPIC_TRACE a CPIC_TRACE_DIR.

    První proměnná nastaví úroveň trasování a druhá proměnná nastaví adresář trasovacího souboru. Adresář musí být umístění, do kterého můžou zapisovat členové skupiny Authenticated Users.

  2. Nastavte CPIC_TRACE na hodnotu 3 a CPIC_TRACE_DIR na adresář, do kterého chcete trasovací soubory zapisovat. Příklad:

    CPIC tracing

  3. Reprodukujte problém a ujistěte se, že CPIC_TRACE_DIR obsahuje trasovací soubory.

    Trasování CPIC může diagnostikovat problémy na vyšší úrovni, jako je selhání načtení knihovny sapcrypto.dll. Tady je například fragment kódu z trasovacího souboru CPIC, kde došlo k chybě .dll načtení:

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

    Pokud narazíte na takové selhání, ale u sapcrypto.dll a sapcrypto.ini jste nastavili oprávnění ke čtení a spuštění, jak je popsáno v předchozí části, zkuste u složky obsahující soubory nastavit stejná oprávnění ke čtení a provedení.

    Pokud stále nemůžete načíst .dll, zkuste zapnout auditování souboru. Prozkoumání výsledných protokolů auditu ve Windows Prohlížeč událostí vám může pomoct určit, proč se soubor nenačítá. Vyhledejte položku selhání iniciovanou zosobněným uživatelem služby Active Directory. Například pro zosobněného uživatele MYDOMAIN\mytestuser by selhání v protokolu auditu vypadalo přibližně 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
    

Trasování knihovny CommonCryptoLib

  1. Zapněte trasování knihovny CommonCryptoLib přidáním těchto řádků do souboru sapcrypto.ini, který jste vytvořili dříve:

    ccl/trace/level=5
    ccl/trace/directory=<drive>:\logs\sectrace
    
  2. ccl/trace/directory Změňte možnost na umístění, do kterého můžou zapisovat členové skupiny Authenticated Users.

  3. Můžete také vytvořit nový soubor .ini, který toto chování změní. Ve stejném adresáři jako sapcrypto.ini a sapcrypto.dll vytvořte soubor s názvem sectrace.ini s následujícím obsahem. DIRECTORY Nahraďte možnost umístěním na vašem počítači, do kterého můžou zapisovat členové skupiny Authenticated Users:

    LEVEL = 5
    DIRECTORY = <drive>:\logs\sectrace
    
  4. Reprodukujte problém a ověřte, že umístění, na které odkazuje adresář , obsahuje trasovací soubory.

  5. Až budete hotovi, vypněte trasování CPIC a CCL.

    Další informace o trasování knihovny CommonCryptoLib najdete v tématu SAP Note 2491573 (vyžaduje se sap s-user).

Zosobnění

Tato část popisuje řešení potíží s příznaky a kroky řešení problémů se zosobněním.

Příznak: Při pohledu na GatewayInfo[date].log najdete položku podobnou této: Informace o zosobnění uživatele DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: ImpersonationLevel: Impersonation). Pokud se hodnota impersonationLevel liší od zosobnění, neprobíhá zosobnění správně.

Řešení: Postupujte podle kroků uvedených v článku o udělení oprávnění místních zásad účtu služby brány v článku o počítači brány. Po změně konfigurace restartujte službu brány.

Ověření: Aktualizujte nebo vytvořte sestavu a shromážděte gatewayInfo[datum].log. Otevřete nejnovější soubor protokolu GatewayInfo a zkontrolujte znovu následující řetězec: O zosobnění uživatele DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: Impersonation) a ujistěte se, že hodnota zosobněníLevelodpovídá zosobnění.

Delegování

Problémy s delegování se obvykle zobrazují v služba Power BI jako obecné chyby. Pokud chcete zjistit, jestli se jedná o problém delegování, je užitečné shromáždit trasování Wireshark a použít protokol Kerberos jako filtr. Informace o chybách protokolu Kerberos najdete v blogovém příspěvku. Zbývající část této části popisuje řešení potíží s příznaky a kroky řešení problémů s delegováním.

Příznak: V služba Power BI může dojít k neočekávané chybě, podobně jako na následujícím snímku obrazovky. GatewayInfo[date].log uvidíte, že [DM.GatewayCore] ingestuje výjimku během pokusu o spuštění dotazu Ado pro clientPipelineId a import [0D_NW_CHANN] neodpovídá žádnému exportu.

Screenshot of unhelpful error

V mashup[date].log se zobrazí obecná chyba GSS-API(maj): Nebyly zadány žádné přihlašovací údaje.

Když se podíváte na trasování CPIC (sec-Microsoft.Mashup*.trc), uvidíte něco podobného jako v následujícím příkladu:

[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 bude jasnější v sektrace z počítače brány sec-Microsoft.Mashup.Con-[].trc:

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

Pokud se podíváte na trasování WireShark, můžete se také podívat na problém.

Screenshot of tracing program showing an error

Poznámka:

Ostatní chyby KRB5KDC_ERR_PREAUTH_REQUIRED je možné bezpečně ignorovat.

Řešení: Do účtu služby musíte přidat SPN SAP/BW5. Podrobné informace a kroky jsou k dispozici v dokumentaci k SAP.

Můžete narazit na podobnou, ale ne identickou chybu, která se projevuje v trasování WireShark jako následující chyba KRB5KDC_ERR_BADOPTION:

Screenshot of WireShark program showing a different error

Tato chyba značí , že se dá najít hlavní název služby SAP/BW5 , ale není ve službách, ke kterým může tento účet prezentovat delegovaná pověření na kartě Delegování z účtu služby Brány. Pokud chcete tento problém vyřešit, nakonfigurujte účet služby brány pro standardní omezené delegování kerberos.

Ověřování: Správná konfigurace zabrání zobrazení obecných nebo neočekávaných chyb bránou. Pokud se stále zobrazují chyby, zkontrolujte konfiguraci samotné brány nebo konfiguraci serveru BW.

Chyby přihlašovacích údajů

Tato část popisuje řešení potíží s příznaky a kroky řešení problémů s chybami přihlašovacích údajů. V služba Power BI se také můžou zobrazovat obecné chyby, jak je popsáno v předchozí části o delegování.

Na základě příznaků, které vidíte ve zdroji dat (SAP BW), existují různá řešení, takže se podíváme na obojí.

Příznak 1: V sectraces sec-disp+work[].trc ze serveru BW uvidíte trasování podobné následujícímu:

[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

Řešení: V případě potřeby dokončete kroky konfigurace pro nastavení parametrů konfigurace mapování uživatelů na počítači brány. Tyto kroky budete muset dokončit, i když už máte nakonfigurovaný Microsoft Entra Připojení.

Ověření: Sestavu budete moct úspěšně načíst do služba Power BI. Pokud to není úspěšné, podívejte se na kroky v příznaku 2.

Příznak 2: V sectraces sec-disp+work[].trc ze serveru BW uvidíte trasování podobné následujícímu:

[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

Řešení: Zkontrolujte, jestli externí ID kerberos pro uživatele odpovídá tomu, co se zobrazuje.

  1. Otevřete SAP Logon.
  2. Použijte transakci SU01.
  3. Upravte uživatele.
  4. Přejděte na kartu SNC a ověřte, že název SNC odpovídá tomu, co se zobrazuje v protokolech.

Ověření: Po správném dokončení budete moct vytvářet a aktualizovat sestavy v služba Power BI.

Další informace o místní bráně dat a DirectQuery najdete v následujících zdrojích informací: