Поделиться через


Использование единого входа Kerberos в SAP BW с помощью CommonCryptoLib (sapcrypto.dll)

В этой статье описывается настройка источника данных SAP BW для включения единого входа из служба Power BI с помощью CommonCryptoLib (sapcrypto.dll).

Примечание.

Прежде чем пытаться обновить отчет на основе SAP BW, использующий единый вход Kerberos, выполните действия, описанные в этой статье, и действия по настройке единого входа Kerberos. Использование CommonCryptoLib в качестве библиотеки SNC позволяет подключаться к серверам приложений SAP BW и серверам сообщений SAP BW.

Примечание.

Настройка обоих библиотек (sapcrypto и gx64krb5) на одном сервере шлюза является неподдерживаемым сценарием. Не рекомендуется настраивать обе библиотеки на одном сервере шлюза, так как это приведет к сочетанию библиотек. Если вы хотите использовать обе библиотеки, полностью отделите сервер шлюза. Например, настройте gx64krb5 для сервера A, а затем sapcrypto для сервера B. Помните, что любой сбой на сервере A, использующего gx64krb5, не поддерживается, так как gx64krb5 больше не поддерживается SAP и Майкрософт.

Настройка SAP BW для включения единого входа с помощью CommonCryptoLib

Примечание.

Локальный шлюз данных является 64-разрядным программным обеспечением и поэтому требует 64-разрядной версии CommonCryptoLib (sapcrypto.dll) для выполнения единого входа BW. Если вы планируете проверить подключение единого входа к серверу SAP BW в SAP GUI перед попыткой подключения единого входа через шлюз (рекомендуется), вам также потребуется 32-разрядная версия CommonCryptoLib, так как SAP GUI — 32-разрядная версия программного обеспечения.

  1. Убедитесь, что сервер BW правильно настроен для единого входа Kerberos с помощью CommonCryptoLib. Если это так, вы можете использовать единый вход для доступа к серверу BW (напрямую или через сервер сообщений SAP BW) с помощью средства SAP, например SAP GUI, настроенного для использования CommonCryptoLib.

    Дополнительные сведения о действиях по настройке см. в статье SAP Single Sign-On: Authentication with Kerberos/SPNEGO. Сервер BW должен использовать CommonCryptoLib в качестве своей библиотеки SNC и иметь имя SNC, которое начинается с CN=, например CN=BW1. Дополнительные сведения о требованиях к имени SNC (в частности, snc/identity/as) см. в разделе "Параметры SNC для конфигурации Kerberos".

  2. Если вы еще этого не сделали, установите версию x64-версии Подключение SAP .NET на компьютере, на котором установлен шлюз.

    Вы можете проверка, был ли установлен компонент, пытаясь подключиться к серверу BW в Power BI Desktop с компьютера шлюза. Если вы не можете подключиться с помощью реализации 2.0, Подключение or .NET не установлен или не установлен к GAC.

  3. Убедитесь, что на компьютере, где установлен шлюз, не запущен клиент безопасного входа SAP (Secure Login Client — SLC).

    Клиент SLC кэширует билеты Kerberos таким образом, который может негативно повлиять на способность шлюза использовать Kerberos для единого входа.

  4. Если SLC установлен, удалите его или убедитесь, что вы завершите работу с клиентом SAP Secure Login. Щелкните правой кнопкой мыши значок в области системы и выберите "Выйти" и "Выйти", прежде чем пытаться подключиться к единому входу с помощью шлюза.

    SLC не поддерживается для использования на компьютерах Windows Server. Дополнительные сведения см. в 2780475 заметки SAP (требуется для пользователей).

    SAP Secure Login Client

  5. Если удалить SLC или выбрать выход из системы, откройте окно cmd и введитеklist purge, чтобы очистить все кэшированные билеты Kerberos перед попыткой подключения единого входа через шлюз.

  6. Скачайте 64-разрядную версию CommonCryptoLib (sapcrypto.dll) версии 8.5.25 или больше из панели запуска SAP и скопируйте ее в папку на компьютере шлюза. В том же каталоге, где вы скопировали sapcrypto.dll, создайте файл с именем sapcrypto.ini со следующим содержимым:

    ccl/snc/enable_kerberos_in_client_role = 1
    

    Файл .ini содержит сведения о конфигурации, необходимые CommonCryptoLib для включения единого входа в сценарии шлюза.

    Примечание.

    Эти файлы должны храниться в одном расположении; другими словами, /path/to/sapcrypto/ должен содержать как sapcrypto.ini, так и sapcrypto.dll.

    Как пользователь службы шлюза, так и пользователь Active Directory (AD), которого олицетворяет пользователь службы, должны иметь разрешения на чтение и выполнение для обоих файлов. Мы рекомендуем предоставить разрешения как для .ini, так и .dll файлов группе "Прошедшие проверку подлинности". В целях тестирования вы также можете явно предоставить эти разрешения пользователю службы шлюза и пользователю Active Directory, используемому для тестирования. На следующем снимке экрана мы предоставили группе "Пользователи с проверкой подлинности" и разрешения на выполнение для sapcrypto.dll:

    Authenticated users

  7. Если у вас еще нет источника данных SAP BW, связанного с шлюзом, через который требуется выполнить подключение единого входа, добавьте его на странице "Управление шлюзами" в служба Power BI. Если у вас уже есть такой источник данных, измените его:

    • Выберите SAP Business Warehouse в качестве типа источника данных, если вы хотите создать подключение единого входа к серверу приложений BW.
    • Выберите сервер сообщений Sap Business Warehouse, если вы хотите создать подключение единого входа к серверу сообщений BW.
  8. Для библиотеки SNC выберите переменную среды SNC_LIB или SNC_LIB_64 или пользовательскую.

    • Если выбрать SNC_LIB, необходимо задать значение переменной среды SNC_LIB_64 на компьютере шлюза абсолютный путь к 64-разрядной копии sapcrypto.dll на компьютере шлюза. Например, C:\Users\Test\Desktop\sapcrypto.dll.

    • Если вы выберете custom, вставьте абсолютный путь к sapcrypto.dll в поле "Путь пользовательской библиотеки SNC", которое отображается на странице "Управление шлюзами".

  9. В поле "Имя партнера SNC" введите имя SNC сервера BW. В разделе "Дополнительные параметры" убедитесь, что использование единого входа через Kerberos для запросов DirectQuery проверка. Заполните другие поля, как если бы вы установили подключение проверки подлинности Windows из PBI Desktop.

  10. Создайте переменную системной среды CCL_PROFILE и задайте путь к sapcrypto.ini.

    CCL_PROFILE system environment variable

    Файлы sapcrypto .dll и .ini должны существовать в одном расположении. В приведенном выше примере sapcrypto.ini и sapcrypto.dll находятся на рабочем столе.

  11. Перезапустите службу шлюза.

    Restart gateway service

  12. Запуск отчета Power BI

Устранение неполадок

Если вы не можете обновить отчет в служба Power BI, можно использовать трассировку шлюза, трассировку CPIC и трассировку CommonCryptoLib для диагностики проблемы. Так как трассировка CPIC и CommonCryptoLib являются продуктами SAP, корпорация Майкрософт не может обеспечить их поддержку.

Журналы шлюза

  1. Воспроизведите проблему.

  2. Откройте приложение шлюза и выберите "Экспорт журналов" на вкладке "Диагностика".

    Export gateway logs

Трассировка CPIC

  1. Чтобы включить трассировку CPIC, задайте две переменные среды: CPIC_TRACE и CPIC_TRACE_DIR.

    Первая переменная задает уровень трассировки, а вторая переменная задает каталог файла трассировки. Каталог должен быть расположением, в которое могут записываться члены группы прошедших проверку подлинности пользователей.

  2. Задайте для CPIC_TRACE значение 3 и CPIC_TRACE_DIR в любой каталог, в который нужно записать файлы трассировки. Например:

    CPIC tracing

  3. Воспроизводите проблему и убедитесь, что CPIC_TRACE_DIR содержит файлы трассировки.

    Трассировка CPIC может диагностировать проблемы с более высоким уровнем, такие как сбой загрузки библиотеки sapcrypto.dll. Например, ниже приведен фрагмент из файла трассировки CPIC, в котором произошла ошибка загрузки .dll:

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

    Если возникла такая ошибка, но вы установили разрешения на чтение и выполнение для sapcrypto.dll и sapcrypto.ini, как описано в приведенном выше разделе, попробуйте задать те же разрешения на чтение и выполнение в папке, содержащей файлы.

    Если вы по-прежнему не можете загрузить .dll, попробуйте включить аудит для файла. Изучение результирующего журнала аудита в Windows Просмотр событий может помочь определить, почему файл не загружается. Найдите запись сбоя, инициированную олицетворенным пользователем Active Directory. Например, для олицетворенного пользователя MYDOMAIN\mytestuser ошибка в журнале аудита будет выглядеть примерно так:

    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
    

Трассировка CommonCryptoLib

  1. Включите трассировку CommonCryptoLib, добавив эти строки в созданный ранее файл sapcrypto.ini:

    ccl/trace/level=5
    ccl/trace/directory=<drive>:\logs\sectrace
    
  2. Измените параметр на ccl/trace/directory расположение, в которое могут записывать члены группы "Прошедшие проверку подлинности пользователей".

  3. Кроме того, создайте новый файл .ini, чтобы изменить это поведение. В том же каталоге, что и sapcrypto.ini и sapcrypto.dll, создайте файл с именем sectrace.ini со следующим содержимым. Замените DIRECTORY параметр расположением на компьютере, в которое могут записываться члены группы "Прошедшие проверку подлинности пользователей":

    LEVEL = 5
    DIRECTORY = <drive>:\logs\sectrace
    
  4. Воспроизводит проблему и убедитесь, что расположение, на которое указывает КАТАЛОГ, содержит файлы трассировки.

  5. По завершении отключите трассировку CPIC и CCL.

    Дополнительные сведения о трассировке CommonCryptoLib см. в 2491573 заметки SAP (требуется для пользователя SAP).

Олицетворение

В этом разделе описываются действия по устранению неполадок и устранения проблем с олицетворением.

Симптом: при просмотре gatewayInfo[date].log вы найдете запись, аналогичную следующей: олицетворение пользователя DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: Олицетворение). Если значение для ImpersonationLevel отличается от олицетворения, олицетворение происходит неправильно.

Решение. Выполните действия, описанные в статье о предоставлении прав локальной политики учетной записи службы шлюза на компьютере шлюза. Перезапустите службу шлюза после изменения конфигурации.

Проверка: обновление или создание отчета и сбор данных GatewayInfo[date].log. Откройте последний файл журнала GatewayInfo и снова проверка следующую строку: олицетворение пользователя DOMAIN\User (IsAuthenticated: True, ImpersonationLevel: ImpersonationLevel), чтобы убедиться, что значение для олицетворенияLevel соответствует олицетворению.

Делегирование

Проблемы делегирования обычно отображаются в служба Power BI как универсальные ошибки. Чтобы определить, является ли делегирование проблемой, полезно собирать трассировки Wireshark и использовать Kerberos в качестве фильтра. Сведения об ошибках Kerberos см. в записи блога. В остальной части этого раздела описываются действия по устранению неполадок и устранения проблем с делегированием.

Симптом. В служба Power BI может возникнуть непредвиденная ошибка, аналогичная следующему снимку экрана. ШлюзInfo [date].log вы увидите , что [DM.GatewayCore] прием исключения во время попытки выполнения запроса Ado для clientPipelineId и импорт [0D_NW_CHANN] не соответствует экспорту.

Screenshot of unhelpful error

В Mashup[date].log вы увидите универсальную ошибку GSS-API(maj): учетные данные не были предоставлены.

Просмотр трассировок CPIC (sec-Microsoft.Mashup*.trc) вы увидите примерно следующее:

[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

Ошибка становится ясной в секундах от компьютера шлюза 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.

Вы также можете увидеть проблему при просмотре трассировок WireShark.

Screenshot of tracing program showing an error

Примечание.

Другие ошибки KRB5KDC_ERR_PREAUTH_REQUIRED можно безопасно игнорировать.

Решение. Необходимо добавить sap/BW5 субъекта-службы в учетную запись службы. Подробные сведения и шаги доступны в документации ПО SAP.

Вы можете столкнуться с аналогичной ошибкой, но не идентичной, которая манифестирует трассировку WireShark, как следующая ошибка KRB5KDC_ERR_BADOPTION:

Screenshot of WireShark program showing a different error

Эта ошибка указывает, что можно найти SAP/BW5 субъекта-службы, но она не находится в службах, в которых эта учетная запись может представлять делегированные учетные данные на вкладке "Делегирование" из учетной записи службы шлюза. Чтобы устранить эту проблему, выполните действия по настройке учетной записи службы шлюза для стандартного ограниченного делегирования kerberos.

Проверка. Правильная конфигурация предотвратит универсальные или непредвиденные ошибки, которые будут представлены шлюзом. Если вы по-прежнему видите ошибки, проверка конфигурацию самого шлюза или конфигурацию сервера BW.

Ошибки учетных данных

В этом разделе описываются действия по устранению неполадок с симптомами и решением проблем с ошибками учетных данных. Вы также можете увидеть универсальные ошибки из служба Power BI, как описано в предыдущем разделе по делегированию.

Существуют различные разрешения, основанные на симптомах, которые вы видите в источнике данных (SAP BW), поэтому мы рассмотрим оба.

Симптом 1. В секtraces sec-disp+work[].trc из сервера BW server отображаются трассировки, аналогичные следующим:

[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

Разрешение. При необходимости выполните действия по настройке конфигурации, чтобы задать параметры конфигурации сопоставления пользователей на компьютере шлюза. Вам потребуется выполнить эти действия, даже если у вас уже настроена Подключение Microsoft Entra.

Проверка. Вы сможете успешно загрузить отчет в служба Power BI. Если это не выполнено, см. шаги, описанные в симптоме 2.

Симптом 2. В секtraces sec-disp+work[].trc из сервера BW отображаются трассировки, аналогичные следующим:

[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

Разрешение. Проверьте, соответствует ли внешний идентификатор Kerberos для пользователя, что отображается в секtraces.

  1. Откройте вход SAP.
  2. Используйте транзакцию SU01.
  3. Измените пользователя.
  4. Перейдите на вкладку SNC, убедитесь, что имя SNC соответствует отображаемому в журналах.

Проверка: при правильном завершении вы сможете создавать и обновлять отчеты в служба Power BI.

Дополнительные сведения о локальном шлюзе данных и DirectQuery см. в следующих ресурсах: