Bagikan melalui


Gunakan akses menyeluruh Kerberos untuk SSO ke SAP BW menggunakan CommonCryptoLib (sapcrypto.dll)

Artikel ini menjelaskan cara mengonfigurasi sumber data SAP BW Anda untuk mengaktifkan akses menyeluruh (SSO) dari layanan Power BI dengan menggunakan CommonCryptoLib (sapcrypto.dll).

Catatan

Sebelum Anda mencoba merefresh laporan berbasis SAP BW yang menggunakan SSO Kerberos, selesaikan kedua langkah dalam artikel ini dan langkah-langkah dalam Mengonfigurasi SSO berbasis Kerberos. Menggunakan CommonCryptoLib sebagai pustaka Secure Network Communications (SNC) Anda memungkinkan koneksi SSO ke Server Aplikasi SAP BW dan Server Pesan SAP BW.

Catatan

Mengonfigurasi kedua pustaka (sapcrypto dan gx64krb5) pada server gateway yang sama adalah skenario yang tidak didukung. Tidak disarankan untuk mengonfigurasi kedua pustaka di server gateway yang sama karena akan menyebabkan campuran pustaka. Jika Anda ingin menggunakan kedua pustaka, silakan pisahkan sepenuhnya server gateway. Misalnya, konfigurasikan gx64krb5 untuk server A lalu sapcrypto untuk server B. Harap diingat bahwa setiap kegagalan pada server A yang menggunakan gx64krb5 tidak didukung, karena gx64krb5 tidak lagi didukung oleh SAP dan Microsoft.

Mengonfigurasi SAP BW untuk mengaktifkan SSO menggunakan CommonCryptoLib

Catatan

Gateway data lokal adalah perangkat lunak 64-bit dan oleh karena itu memerlukan CommonCryptoLib (sapcrypto.dll) versi 64-bit untuk melakukan SSO BW. Jika Anda berencana untuk menguji koneksi SSO ke server SAP BW Anda di SAP GUI sebelum mencoba koneksi SSO melalui gateway (disarankan), Anda juga memerlukan CommonCryptoLib versi 32-bit, karena SAP GUI adalah perangkat lunak 32-bit.

  1. Pastikan server BW Anda dikonfigurasi dengan benar untuk SSO Kerberos menggunakan CommonCryptoLib. Jika ya, Anda dapat menggunakan SSO untuk mengakses server BW Anda (baik secara langsung atau melalui SAP BW Message Server) dengan alat SAP seperti SAP GUI yang telah dikonfigurasi untuk menggunakan CommonCryptoLib.

    Untuk informasi selengkapnya tentang langkah-langkah penyiapan, lihat Akses Menyeluruh SAP: Mengautentikasi dengan Kerberos/SPNEGO. Server BW Anda harus menggunakan CommonCryptoLib sebagai Pustaka SNC-nya dan memiliki nama SNC yang dimulai dengan CN=, seperti CN=BW1. Untuk informasi selengkapnya tentang persyaratan nama SNC (khususnya, parameter snc/identity/as), lihat Parameter SNC untuk Konfigurasi Kerberos.

  2. Jika Anda belum melakukannya, instal konektor SAP .NET versi x64 di komputer tempat gateway telah diinstal.

    Anda dapat memeriksa apakah komponen telah diinstal dengan mencoba menyambungkan ke server BW Anda di Power BI Desktop dari komputer gateway. Jika Anda tidak dapat terhubung dengan menggunakan implementasi 2.0, Konektor .NET tidak diinstal atau belum diinstal ke cache perakitan global.

  3. Pastikan bahwa SAP Secure Login Client (SLC) tidak berjalan di komputer tempat gateway diinstal.

    SLC menyimpan tiket Kerberos dengan cara yang dapat mengganggu kemampuan gateway untuk menggunakan Kerberos untuk SSO.

  4. Jika SLC diinstal, hapus instalannya atau pastikan Anda keluar dari SAP Secure Login Client. Klik kanan ikon di baki sistem dan pilih Keluar dan Keluar sebelum Anda mencoba koneksi SSO dengan menggunakan gateway.

    SLC tidak didukung untuk digunakan pada komputer Windows Server. Untuk informasi selengkapnya, lihat 2780475 Catatan SAP (diperlukan pengguna s).

    Klien Masuk Aman SAP

  5. Jika Anda menghapus instalan SLC atau memilih Keluar dan Keluar, buka jendela cmd dan masukkan klist purge untuk menghapus tiket Kerberos yang di-cache sebelum Anda mencoba koneksi SSO melalui gateway.

  6. Unduh CommonCryptoLib (sapcrypto.dll) versi 64-bit 8.5.25 atau yang lebih baru dari Launchpad SAP, dan salin ke folder di komputer gateway Anda. Di direktori yang sama tempat Anda menyalin sapcrypto.dll, buat file bernama sapcrypto.ini, dengan konten berikut:

    ccl/snc/enable_kerberos_in_client_role = 1
    

    File .ini berisi informasi konfigurasi yang diperlukan oleh CommonCryptoLib untuk mengaktifkan SSO dalam skenario gateway.

    Catatan

    File-file ini harus disimpan di lokasi yang sama; dengan kata lain, /path/to/sapcrypto/ harus berisi sapcrypto.ini dan sapcrypto.dll.

    Baik pengguna layanan gateway maupun pengguna Active Directory (AD) yang ditiru pengguna layanan memerlukan izin baca dan eksekusi untuk kedua file. Sebaiknya berikan izin pada file .ini dan .dll ke grup Pengguna Terautentikasi. Untuk tujuan pengujian, Anda juga dapat secara eksplisit memberikan izin ini kepada pengguna layanan gateway dan pengguna AD yang Anda gunakan untuk pengujian. Dalam cuplikan layar berikut, kami telah memberikan izin Baca & jalankan grup Pengguna Terautentikasi untuk sapcrypto.dll:

    Pengguna yang diautentikasi

  7. Jika Anda belum memiliki sumber data SAP BW yang terkait dengan gateway yang Anda inginkan agar koneksi SSO mengalir, tambahkan satu di halaman Kelola Koneksi dan Gateway di layanan Power BI. Jika Anda sudah memiliki sumber data seperti itu, edit:

    • Pilih SAP Business Warehouse sebagai Jenis Sumber Data jika Anda ingin membuat koneksi SSO ke Server Aplikasi BW.
    • Pilih Sap Business Warehouse Message Server jika Anda ingin membuat koneksi SSO ke Server Pesan BW.
  8. Untuk Pustaka SNC, pilih variabel lingkungan SNC_LIB atau SNC_LIB_64, atau Kustom.

    • Jika Anda memilih SNC_LIB, Anda harus mengatur nilai variabel lingkungan SNC_LIB_64 pada mesin gateway ke jalur absolut salinan sapcrypto.dll 64-bit di mesin gateway. Misalnya, C:\Users\Test\Desktop\sapcrypto.dll.

    • Jika Anda memilih Kustom, tempelkan jalur absolut untuk sapcrypto.dll ke bidang Jalur Pustaka SNC Kustom yang muncul di halaman Kelola gateway.

  9. Untuk Nama Mitra SNC, masukkan Nama SNC server BW. Di bawah Pengaturan tingkat lanjut, pastikan bahwa Gunakan SSO melalui Kerberos untuk kueri DirectQuery dicentang. Isi bidang lain seolah-olah Anda membuat koneksi Autentikasi Windows dari PBI Desktop.

  10. Buat variabel lingkungan sistem CCL_PROFILE dan atur nilainya ke jalur ke sapcrypto.ini.

    CCL_PROFILE variabel lingkungan sistem

    File .dll dan .ini sapcrypto harus ada di lokasi yang sama. Dalam contoh di atas, sapcrypto.ini dan sapcrypto.dll keduanya terletak di desktop.

  11. Mulai ulang layanan gateway.

    Memulai ulang layanan gateway

  12. Menjalankan laporan Power BI

Pemecahan Masalah

Jika Anda tidak dapat me-refresh laporan di layanan Power BI, Anda dapat menggunakan pelacakan gateway, pelacakan CPIC, dan pelacakan CommonCryptoLib untuk mendiagnosis masalah. Karena pelacakan CPIC dan CommonCryptoLib adalah produk SAP, Microsoft tidak dapat memberikan dukungan untuk mereka.

Log gateway

  1. Rekonstruksi masalah tersebut.

  2. Buka aplikasi gateway, dan pilih log Ekspor dari tab Diagnostik.

    Mengekspor log gateway

Pelacakan CPIC

  1. Untuk mengaktifkan pelacakan CPIC, atur dua variabel lingkungan: CPIC_TRACE dan CPIC_TRACE_DIR.

    Variabel pertama mengatur tingkat pelacakan dan variabel kedua mengatur direktori file pelacakan. Direktori harus menjadi lokasi yang dapat ditulis oleh anggota grup Pengguna Terautentikasi.

  2. Atur CPIC_TRACE ke 3 dan CPIC_TRACE_DIR ke direktori mana pun yang Anda inginkan untuk menulis file pelacakan. Contohnya:

    Pelacakan CPIC

  3. Reproduksi masalah dan pastikan bahwa CPIC_TRACE_DIR berisi file pelacakan.

    Pelacakan CPIC dapat mendiagnosis masalah tingkat yang lebih tinggi seperti kegagalan memuat pustaka sapcrypto.dll. Misalnya, berikut adalah cuplikan dari file pelacakan CPIC di mana terjadi kesalahan beban .dll:

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

    Jika Anda mengalami kegagalan seperti itu tetapi Anda telah mengatur izin Baca & Jalankan pada sapcrypto.dll dan sapcrypto.ini seperti yang dijelaskan di bagian di atas, coba atur izin Baca & Jalankan yang sama pada folder yang berisi file.

    Jika Anda masih tidak dapat memuat .dll, coba aktifkan audit untuk file tersebut. Memeriksa log audit yang dihasilkan di Penampil Kejadian Windows mungkin membantu Anda menentukan mengapa file gagal dimuat. Cari entri kegagalan yang dimulai oleh pengguna AD yang ditiru. Misalnya, untuk pengguna yang ditiru, MYDOMAIN\mytestuser kegagalan dalam log audit akan terlihat seperti ini:

    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
    

Pelacakan CommonCryptoLib

  1. Aktifkan pelacakan CommonCryptoLib dengan menambahkan baris ini ke file sapcrypto.ini yang Anda buat sebelumnya:

    ccl/trace/level=5
    ccl/trace/directory=<drive>:\logs\sectrace
    
  2. Ubah ccl/trace/directory opsi ke lokasi tempat anggota grup Pengguna Terautentikasi dapat menulis.

  3. Atau, buat file .ini baru untuk mengubah perilaku ini. Dalam direktori yang sama dengan sapcrypto.ini dan sapcrypto.dll, buat file bernama sectrace.ini dengan konten berikut. Ganti DIRECTORY opsi dengan lokasi di komputer Anda yang dapat ditulis anggota grup Pengguna Terautentikasi:

    LEVEL = 5
    DIRECTORY = <drive>:\logs\sectrace
    
  4. Reproduksi masalah dan verifikasi bahwa lokasi yang diarahkan oleh DIREKTORI berisi file pelacakan.

  5. Setelah selesai, nonaktifkan pelacakan CPIC dan CCL.

    Untuk informasi selengkapnya tentang pelacakan CommonCryptoLib, lihat 2491573 Catatan SAP (diperlukan SAP s-user).

Peniruan

Bagian ini menjelaskan pemecahan masalah gejala dan langkah-langkah resolusi untuk masalah peniruan.

Gejala: Saat melihat GatewayInfo[date].log, Anda menemukan entri yang mirip dengan berikut ini: Tentang meniru DOMAIN\User pengguna (IsAuthenticated: True, ImpersonationLevel: Impersonation). Jika nilai untuk ImpersonationLevel berbeda dari Peniruan, peniruan tidak terjadi dengan benar.

Resolusi: Ikuti langkah-langkah yang ditemukan dalam memberikan hak kebijakan lokal akun layanan gateway pada artikel mesin gateway. Mulai ulang layanan gateway setelah mengubah konfigurasi.

Validasi: Refresh atau buat laporan dan kumpulkan GatewayInfo[date].log. Buka file log GatewayInfo terbaru dan periksa lagi string Tentang untuk meniru pengguna DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: Impersonation) untuk memastikan bahwa nilai untuk ImpersonationLevel cocok dengan Peniruan.

Delegasi

Masalah delegasi biasanya muncul di layanan Power BI sebagai kesalahan umum. Untuk menentukan apakah delegasi adalah masalahnya, hal ini berguna untuk mengumpulkan jejak Wireshark dan menggunakan Kerberos sebagai filter. Untuk referensi kesalahan Kerberos, lihat posting blog ini. Bagian lainnya menjelaskan pemecahan masalah gejala dan langkah-langkah resolusi untuk masalah delegasi.

Gejala: Dalam layanan Power BI, Anda mungkin mengalami kesalahan tak terduga yang mirip dengan yang ada di cuplikan layar berikut. Di GatewayInfo[date].log Anda akan melihat [DM.GatewayCore] menyerap pengecualian selama upaya eksekusi kueri ADO untuk clientPipelineId dan impor [0D_NW_CHANN] tidak cocok dengan ekspor.

Cuplikan layar kesalahan yang tidak membantu

Di Mashup[date].log Anda melihat kesalahan umum GSS-API(maj): Tidak ada kredensial yang diberikan.

Melihat jejak CPIC (sec-Microsoft.Mashup.trc*) Anda akan melihat sesuatu yang mirip dengan yang berikut ini:

[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

Kesalahan menjadi lebih jelas dalam sekrace dari komputer gateway 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.

Anda juga dapat melihat masalah jika Anda melihat jejak WireShark.

Cuplikan layar program pelacakan memperlihatkan kesalahan

Catatan

Kesalahan lain KRB5KDC_ERR_PREAUTH_REQUIRED dapat diabaikan dengan aman.

Resolusi: Anda harus menambahkan SPN SAP/BW5 ke akun layanan. Informasi dan langkah-langkah terperinci tersedia dalam dokumentasi SAP.

Anda mungkin mengalami kesalahan serupa, tetapi tidak identik yang bermanifestasi dalam jejak WireShark sebagai kesalahan berikut KRB5KDC_ERR_BADOPTION:

Cuplikan layar program WireShark memperlihatkan kesalahan yang berbeda

Kesalahan ini menunjukkan SPN SAP/BW5 dapat ditemukan, tetapi tidak berada di bawah Layanan tempat akun ini dapat menyajikan kredensial yang didelegasikan di tab Delegasi untuk akun layanan gateway. Untuk memperbaiki masalah ini, ikuti langkah-langkah untuk mengonfigurasi akun layanan gateway untuk delegasi standar yang dibatasi kerberos.

Validasi: Konfigurasi yang tepat akan mencegah kesalahan umum atau tak terduga disajikan oleh gateway. Jika Anda masih melihat kesalahan, periksa konfigurasi gateway itu sendiri, atau konfigurasi server BW.

Kesalahan kredensial

Bagian ini menjelaskan pemecahan masalah gejala dan langkah-langkah resolusi untuk masalah kesalahan kredensial. Anda mungkin juga melihat kesalahan umum dari layanan Power BI, seperti yang dijelaskan di bagian sebelumnya tentang delegasi.

Ada resolusi yang berbeda, berdasarkan gejala yang Anda lihat di sumber data (SAP BW), jadi kami akan meninjau keduanya.

Gejala 1: Dalam file sectraces sec-disp+work[].trc dari BW Server, Anda melihat jejak yang mirip dengan yang berikut ini:

[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

Resolusi: Selesaikan langkah-langkah konfigurasi untuk mengatur parameter konfigurasi pemetaan pengguna pada mesin gateway jika perlu. Anda harus menyelesaikan langkah-langkah tersebut bahkan jika Anda sudah mengonfigurasi Microsoft Entra Connect.

Validasi: Anda akan berhasil memuat laporan di layanan Power BI. Jika Anda tidak dapat memuat laporan, lihat langkah-langkah di Gejala 2.

Gejala 2: Dalam file sectraces sec-disp+work[].trc dari BW Server, Anda melihat jejak yang mirip dengan yang berikut ini:

[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

Resolusi: Periksa apakah ID eksternal Kerberos untuk Pengguna cocok dengan apa yang ditampilkan oleh sectraces.

  1. Buka Masuk SAP.
  2. Gunakan transaksi SU01.
  3. Edit pengguna.
  4. Navigasi ke tab SNC dan verifikasi bahwa nama SNC cocok dengan apa yang ditampilkan di log Anda.

Validasi: Setelah selesai dengan benar, Anda akan dapat membuat dan me-refresh laporan di layanan Power BI.

Untuk informasi selengkapnya tentang gateway data lokal dan DirectQuery, lihat sumber daya berikut ini: