Использование языка разметки утверждения безопасности для единого входа из Power BI в локальные источники данных

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

Примечание.

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

Поддерживаемые источники данных для SAML

Корпорация Майкрософт в настоящее время поддерживает SAP HANA с SAML. Дополнительные сведения о настройке и настройке единого входа для SAP HANA с помощью SAML см. в статье SAML SSO for BI Platform to HANA.

Мы поддерживаем дополнительные источники данных с Kerberos (включая SAP HANA).

Для SAP HANA рекомендуется включить шифрование перед установкой подключения единого входа SAML. Чтобы включить шифрование, настройте сервер HANA для приема зашифрованных подключений, а затем настройте шлюз для обмена данными с сервером HANA. Так как драйвер ODBC HANA по умолчанию не шифрует утверждения SAML, подписанное утверждение SAML отправляется из шлюза на сервер HANA в ясном режиме и уязвимо для перехвата и повторного использования сторонними лицами.

Важно!

Так как SAP больше не поддерживает OpenSSL, корпорация Майкрософт также прекратила свою поддержку. Существующие подключения продолжают работать, но вы больше не можете создавать новые подключения. Вместо этого используйте библиотеку шифрования SAP (CommonCryptoLib) или sapcrypto.

Настройка шлюза и источника данных

Чтобы использовать SAML, необходимо установить отношение доверия между серверами HANA, для которых требуется включить единый вход и шлюз. В этом сценарии шлюз служит поставщиком удостоверений SAML (IdP). Эту связь можно установить различными способами. SAP рекомендует использовать CommonCryptoLib для выполнения действий по настройке. Дополнительные сведения см. в официальной документации ПО SAP.

Создание сертификатов

Вы можете установить отношение доверия между сервером HANA и поставщиком удостоверений шлюза, подписав сертификат X509 шлюза с корневым центром сертификации (ЦС), доверенным сервером HANA.

Чтобы создать сертификаты, сделайте следующее:

  1. На устройстве под управлением SAP HANA создайте пустую папку для хранения сертификатов, а затем перейдите к этой папке.

  2. Создайте корневые сертификаты, выполнив следующую команду:

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

    Обязательно скопируйте и сохраните парольную фразу, чтобы использовать этот сертификат для подписывания других сертификатов. Вы должны увидеть созданные файлы CA_Cert.pem и CA_Key.pem .

  3. Создайте сертификаты поставщика удостоверений, выполнив следующую команду:

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

    Вы должны увидеть созданные файлы IdP_Key.pem и IdP_Req.pem .

  4. Подписывайте сертификаты поставщика удостоверений с помощью корневых сертификатов:

    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
    

    Вы увидите созданные файлы CA_Cert.srl и IdP_Cert.pem . В настоящее время вы обеспокоены только файлом IdP_Cert.pem .

Создание сопоставления для сертификата поставщика удостоверений SAML

Чтобы создать сопоставление для сертификата поставщика удостоверений SAML, сделайте следующее:

  1. В SAP HANA Studio щелкните правой кнопкой мыши имя сервера SAP HANA и выберите поставщик удостоверений SAML в консоли>безопасности>.

  2. Выберите параметр "Библиотека шифрования SAP". Не используйте параметр криптографической библиотеки OpenSSL, который не рекомендуется sap.

    Screenshot of the

  3. Чтобы импортировать подписанный сертификат IdP_Cert.pem, нажмите синюю кнопку импорта , как показано на следующем рисунке:

    Screenshot of the

  4. Не забудьте назначить имя поставщика удостоверений.

Импорт и создание подписанных сертификатов в HANA

Чтобы импортировать и создать подписанные сертификаты в HANA, выполните следующие действия.

  1. В SAP HANA Studio выполните следующий запрос:

    CREATE CERTIFICATE FROM '<idp_cert_pem_certificate_content>'
    

    Приведем пример:

    CREATE CERTIFICATE FROM
    '-----BEGIN CERTIFICATE-----
    MIIDyDCCArCgA...veryLongString...0WkC5deeawTyMje6
    -----END CERTIFICATE-----
    '
    
  2. Если нет личной среды безопасности (PSE) с целью SAML, создайте ее, выполнив следующий запрос в SAP HANA Studio:

    CREATE PSE SAMLCOLLECTION;
    set pse SAMLCOLLECTION purpose SAML;
    
  3. Добавьте созданный подписанный сертификат в PSE, выполнив следующую команду:

    alter pse SAMLCOLLECTION add CERTIFICATE <certificate_id>;
    

    Например:

    alter pse SAMLCOLLECTION add CERTIFICATE 1978320;
    

    Список созданных сертификатов можно проверка, выполнив следующий запрос:

    select * from PUBLIC"."CERTIFICATES"
    

    Сертификат теперь правильно установлен. Чтобы подтвердить установку, можно выполнить следующий запрос:

    select * from "PUBLIC"."PSE_CERTIFICATES"
    

Сопоставление пользователя

Чтобы сопоставить пользователя, сделайте следующее:

  1. В SAP HANA Studio выберите папку "Безопасность ".

    Screenshot of the Security folder structure on the left pane.

  2. Разверните узел "Пользователи", а затем выберите пользователя, с которым вы хотите сопоставить пользователя Power BI.

  3. Выберите поле проверка SAML, а затем выберите "Настроить", как показано на следующем рисунке:

    Screenshot of the

  4. Выберите поставщика удостоверений, созданного в разделе "Создание сопоставления" для раздела сертификата поставщика удостоверений SAML. Для внешнего удостоверения введите имя участника-пользователя Power BI (как правило, адрес электронной почты, который пользователь использует для входа в Power BI), а затем нажмите кнопку "Добавить".

    Screenshot of the

    Если вы настроили шлюз для использования параметра конфигурации ADUserNameReplacementProperty , введите значение, которое заменит исходное имя участника-пользователя Power BI. Например, если задать для ADUserNameReplacementProperty значение SAMAccountName, введите SAMAccountName пользователя.

Настройка шлюза

Теперь, когда вы настроили сертификат и удостоверение шлюза, преобразуйте сертификат в формат PFX-файла, а затем настройте шлюз для использования сертификата, выполнив следующие действия.

  1. Преобразуйте сертификат в формат PFX, выполнив следующую команду. Эта команда называет полученный файл samlcert.pfx и задает корневой каталог в качестве пароля, как показано ниже:

    openssl pkcs12 -export -out samltest.pfx -in IdP_Cert.pem -inkey IdP_Key.pem -passin pass:root -passout pass:root
    
  2. Скопируйте PFX-файл на компьютер шлюза:

    a. Дважды щелкните samltest.pfx и выберите "Локальный компьютер>далее".

    b. Введите пароль и нажмите кнопку "Далее".

    c. Выберите "Разместить все сертификаты" в следующем хранилище и нажмите кнопку "Обзор>личных".>

    Screenshot of the

    d. Нажмите кнопку "Далее", а затем нажмите кнопку "Готово".

  3. Чтобы предоставить учетной записи службы шлюза доступ к закрытому ключу сертификата, сделайте следующее:

    a. На компьютере шлюза запустите консоль управления Майкрософт (MMC).

    Screenshot of the gateway machine

    b. В MMC выберите "Добавить или удалить оснастку файла>".

    Screenshot of the

    c. Выберите "Добавить сертификаты">и нажмите кнопку "Далее" учетной записи>компьютера.

    d. Нажмите кнопку "Готово> локального компьютера".>

    д) Разверните личные>сертификаты сертификатов> и найдите сертификат.

    f. Щелкните правой кнопкой мыши сертификат и выберите пункт "Все задачи>управления закрытыми ключами".

    Screenshot of the

    ж. Добавьте учетную запись службы шлюза в список. По умолчанию учетная запись — NT SERVICE\PBIEgwService. Вы можете узнать, какая учетная запись выполняет службу шлюза, выполнив службы services.msc , а затем найдите локальную службу шлюза данных.

    Screenshot of the

Наконец, добавьте отпечаток сертификата в конфигурацию шлюза:

  1. Чтобы получить список сертификатов на компьютере, выполните следующую команду PowerShell:

    Get-ChildItem -path cert:\LocalMachine\My
    
  2. Скопируйте отпечаток созданного сертификата.

  3. Перейдите в каталог шлюза, который является C:\Program Files\Локальный шлюз данных по умолчанию.

  4. Откройте файл PowerBI.DataMovement.Pipeline.GatewayCore.dll.config и найдите раздел SapHanaSAMLCertThumbprint . Вставьте отпечаток, скопированный на шаге 2.

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

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

Теперь можно использовать страницу "Управление шлюзом" в Power BI для настройки источника данных SAP HANA. В разделе "Расширенные Параметры" включите единый вход через SAML. Таким образом, можно публиковать отчеты и наборы данных, привязанные к такому источнику данных.

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

Примечание.

Единый вход использует проверку подлинности Windows, чтобы убедиться, что учетная запись Windows может получить доступ к компьютеру шлюза. Если это не так, обязательно добавьте NT-AUTHORITY\Authenticationd Users (S-1-5-11) в локальную группу "Пользователи".

Устранение неполадок с использованием SAML для единого входа в SAP HANA

В этом разделе приведены подробные инструкции по устранению неполадок с использованием SAML для единого входа в SAP HANA. С помощью этих действий вы можете самостоятельно диагностировать и исправлять проблемы, с которыми вы можете столкнуться.

Отклоненные учетные данные

После настройки единого входа на основе SAML на портале Power BI может появиться следующая ошибка: "Предоставленные учетные данные нельзя использовать для источника SapHana". Эта ошибка означает, что учетные данные SAML были отклонены SAP HANA.

Трассировки проверки подлинности на стороне сервера предоставляют подробные сведения об устранении проблем с учетными данными в SAP HANA. Чтобы настроить трассировку для сервера SAP HANA, сделайте следующее:

  1. На сервере SAP HANA включите трассировку проверки подлинности, выполнив следующий запрос:

    ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') set ('trace', 'authentication') = 'debug' with reconfigure 
    
  2. Воспроизведите проблему.

  3. В SAP HANA Studio откройте консоль администрирования и перейдите на вкладку "Файлы диагностики".

  4. Откройте последнюю трассировку сервера индексов и найдите SAMLAuthenticator.cpp.

    Вы должны найти подробное сообщение об ошибке, указывающее первопричину, как показано в следующем примере:

    [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. После завершения устранения неполадок отключите трассировку проверки подлинности, выполнив следующий запрос:

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

Проверка и устранение ошибок шлюза

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

Ошибка SSL (сертификат)

Симптомы ошибки

Эта проблема имеет несколько симптомов. При попытке добавить новый источник данных может появиться следующее сообщение об ошибке:

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

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

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

При изучении Mashup[date]*.log появится следующее сообщение об ошибке:

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

Решение

Чтобы устранить эту ошибку SSL, перейдите к подключению к источнику данных, а затем в раскрывающемся списке "Проверка сертификата сервера" выберите "Нет", как показано на следующем рисунке:

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

После выбора этого параметра сообщение об ошибке больше не появится.

Ошибка SignXML шлюза

Ошибка SignXML шлюза может быть результатом неправильных параметров SapHanaSAMLCertThumbprint или может быть проблемой с сервером HANA. Записи в журналах шлюза помогают определить, где находится проблема, и как устранить ее.

Симптомы ошибки

Записи журнала дляSignXML: Found the cert...: Если файл GatewayInfo[date].log содержит эту ошибку, был найден сертификат SignXML, и ваши усилия по устранению неполадок должны сосредоточиться на шагах, найденных в разделе "Проверка и устранение неполадок на стороне сервера HANA".

Записи журнала для Couldn't find saml cert: если файл GatewayInfo[date].log содержит эту ошибку, неправильно задано значение SapHanaSAMLCertThumbprint . В следующем разделе разрешения описывается, как устранить проблему.

Решение

Чтобы правильно задать SapHanaSAMLCertThumbprint, следуйте инструкциям в разделе "Настройка шлюза". Инструкции начинаются с "Наконец", добавьте отпечаток сертификата в конфигурацию шлюза.

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

Проверка

Если sapHanaSAMLCertThumbprint настроен правильно, журналы шлюза будут содержать записи, которые включают SignXML: Found the cert.... На этом этапе вы сможете перейти к разделу "Проверка и устранение неполадок на стороне сервера HANA".

Если шлюз не может использовать сертификат для подписывания утверждения SAML, может появиться ошибка в журналах, аналогичных следующим:

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.

Чтобы устранить эту ошибку, следуйте инструкциям, начиная с шага 3 в разделе "Настройка шлюза".

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

Проверка и устранение неполадок на стороне сервера HANA

Используйте решения в этом разделе, если шлюз может найти сертификат и подписать утверждение SAML, но у вас по-прежнему возникают ошибки. Вам потребуется собрать трассировки проверки подлинности HANA, как описано ранее в разделе "Отклоненные учетные данные".

Поставщик удостоверений SAML

Наличие Found SAML provider строки в трассировках проверки подлинности HANA указывает, что поставщик удостоверений SAML настроен правильно. Если строка отсутствует, конфигурация неправильная.

Решение

Сначала определите, используется ли ваша организация OpenSSL или commoncrypto в качестве sslcryptoprovider. Чтобы определить, какой поставщик используется, сделайте следующее:

  1. Откройте SAP HANA Studio.

  2. Откройте консоль Администратор istration для используемого клиента.

  3. Выберите вкладку "Конфигурация" и используйте sslcryptoprovider в качестве фильтра, как показано на следующем рисунке:

    Screenshot of the sslcryptoprovider information in SAP HANA Studio.

Затем убедитесь, что криптографическая библиотека настроена правильно, выполнив следующие действия:

  1. Перейдите в консоль безопасности в SAP HANA Studio, выбрав вкладку "Поставщики удостоверений SAML" и сделайте следующее:

    • Если sslcryptoprovider является OpenSSL, выберите библиотеку шифрования OpenSSL.
    • Если sslcryptoprovider является commonCrypto, выберите библиотеку шифрования SAP.

    На следующем изображении выбрана библиотека шифрования SAP:

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

  2. Разверните изменения, нажав кнопку "Развернуть" в правом верхнем углу, как показано на следующем рисунке:

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

Проверка

При правильной настройке трассировок они будут сообщать Found SAML provider и не будут сообщатьSAML Provider not found. Вы можете перейти к следующему разделу "Устранение неполадок с подписью утверждения SAML".

Если поставщик шифрования задан, но SAML Provider not found по-прежнему сообщается, выполните поиск строки в трассировке, начинающейся со следующего текста:

Search SAML provider for certificate with subject =

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

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

Устранение неполадок с подписью утверждения SAML

Вы можете найти трассировки проверки подлинности HANA, содержащие записи, аналогичные следующим:

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

Наличие таких записей означает, что подпись не является доверенной.

Решение

Если вы используете OpenSSL в качестве sslcryptoprovider, проверка, чтобы узнать, находятся ли файлы trust.pem и key.pem в SSL-каталоге. Дополнительные сведения см. в блоге SAP по защите связи между SAP HANA Studio и СЕРВЕРом SAP HANA с помощью SSL.

Если вы используете commoncrypto в качестве sslcryptoprovider, проверка, чтобы узнать, есть ли коллекция с сертификатом в клиенте.

Проверка

При правильной настройке трассировок они будут сообщать Found valid XML signature.

Устранение неполадок сопоставления имени участника-пользователя

Вы можете найти трассировки HANA, содержащие записи, аналогичные следующим:

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

Ошибка указывает, что nameId johnny@contoso.com найден в утверждениях SAML, но он не существует или не сопоставляется правильно в сервере HANA.

Решение

Перейдите к пользователю базы данных HANA и в разделе выбранного проверка box SAML выберите ссылку "Настройка". Откроется следующее окно:

Screenshot showing that the incorrect user name is displayed.

Как описывается сообщение об ошибке, HANA пыталась найти johnny@contoso.com, но внешнее удостоверение отображается только как джонни. Эти два значения должны соответствовать. Чтобы устранить проблему, в разделе "Внешнее удостоверение" измените значение johnny@contoso.comна . Обратите внимание, что это значение учитывает регистр.

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