Использование Kerberos для единого входа из Power BI в локальные источники данныхUse Kerberos for SSO (single sign-on) from Power BI to on-premises data sources

Вы можете установить эффективное подключение с единым входом, включив обновление отчетов и панели мониторинга Power BI с помощью данных из локальной среды. Для этого настройте локальный шлюз данных с Kerberos.You can get seamless single sign-on connectivity, enabling Power BI reports and dashboards to update from on-premises data, by configuring your on-premises data gateway with Kerberos. Локальный шлюз данных упрощает единый вход (SSO) с помощью функции DirectQuery, которая используется для подключения к локальным источникам данных.The on-premises data gateway facilitates single sign-on (SSO) using DirectQuery, which it uses to connect to on-premises data sources.

В настоящее время поддерживаются следующие источники данных: SQL Server, SAP HANA и Teradata. Все они основаны на ограниченном делегировании Kerberos.The following data sources are currently supported, SQL Server, SAP HANA, and Teradata, all based on Kerberos Constrained Delegation.

  • SQL ServerSQL Server
  • SAP HANASAP HANA
  • TeradataTeradata

Когда пользователь работает с отчетом DirectQuery в службе Power BI, каждая операция перекрестной фильтрации, среза, сортировки и редактирования отчета генерирует запросы, которые в режиме реального времени отправляются в основной источник данных в локальной среде.When a user interacts with a DirectQuery report in the Power BI Service, each cross-filter, slice, sorting, and report editing operation can result in queries executing live against the underlying on-premises data source. Если для источника данных настроен единый вход, запросы выполняются с идентификатором пользователя, работающего в Power BI (то есть через веб-интерфейс или мобильные приложения Power BI).When single sign-on is configured for the data source, queries execute under the identity of the user interacting with Power BI (that is, through the web experience or Power BI mobile apps). Таким образом, каждый пользователь может просмотреть данные, доступ к которым ему разрешен в основном источнике данных. Если настроен единый вход, общее кэширование данных разных пользователей не выполняется.Thereby, each user sees precisely the data for which they have permissions in the underlying data source – with single sign-on configured, there is no shared data caching across different users.

Этапы выполнения запроса с единым входомRunning a query with SSO - steps that occur

Запрос, который выполняется с единым входом, состоит из трех этапов, которые представлены на следующей схеме:A query that runs with SSO consists of three steps, as shown in the following diagram.

Примечание

Единый вход для Oracle еще не предусмотрен, но находится в разработке и ожидается в ближайшее время.SSO for Oracle is not enabled yet, but is under development and coming soon.

Ниже приведены дополнительные сведения об этих действиях:Here are additional details about those steps:

  1. При отправке каждого запроса в настроенный шлюз служба Power BI включает имя субъекта-пользователя.For each query, the Power BI service includes the user principal name (UPN) when sending a query request to the configured gateway.
  2. Шлюз должен сопоставить имя субъекта-пользователя Azure с локальным идентификатором Active Directory.The gateway needs to map the Azure Active Directory UPN to a local Active Directory identity.

    а.a. Если решение AAD DirSync (также известное как AAD Connect) настроено, то сопоставление выполнится на этом шлюзе автоматически.If AAD DirSync (also known as AAD Connect) is configured, then the mapping works automatically in the gateway.

    б.b. В противном случае шлюз может выполнить поиск и сопоставить имя участника-пользователя Azure AD с локальным пользователем, выполнив поиск в домене локальной версии Active Directory.Otherwise, the gateway can look up and map the Azure AD UPN to a local user by performing a lookup against the local Active Directory domain.

  3. После сопоставления процесс службы шлюза олицетворяет локального пользователя, устанавливает подключение к базе данных и отправляет запрос.The gateway service process impersonates the mapped local user, opens the connection to the underlying database and sends the query. Шлюз не обязательно устанавливать на том же компьютере, что и базу данных.The gateway does not need to be installed on the same machine as the database.

    • Олицетворение пользователя и подключение к базе данных будут успешными, только если учетная запись службы шлюза является учетной записью домена (или идентификатором безопасности службы) и если конфигурация ограниченного делегирования Kerberos позволяет базе данных принимать билеты Kerberos из учетной записи службы шлюза.The user impersonation and connection to the database is only successful if the gateway service account is a domain account (or service SID), and if Kerberos constrained delegation was configured for the database to accept Kerberos tickets from the gateway service account.

    Примечание

    Если настроено AAD DirSync/Connect и учетные записи синхронизированы, службе шлюза не требуется выполнять поиск в локальной службе AD на этапе выполнения. А что касается идентификатора безопасности службы, для службы шлюза можно использовать его локальный вариант (вместо учетной записи домена).Regarding the service sid, if AAD DirSync / Connect is configured and user accounts are synchronized, the gateway service does not need perform local AD lookups at runtime, and you can use the local Service SID (instead of requiring a domain account) for the gateway service. Этапы настройки ограниченного делегирования Kerberos, описанные в этом документе, совпадают (просто применяются на основе идентификатора безопасности службы, а не учетной записи домена).The Kerberos constrained delegation configuration steps outlined in this document are the same (just applied based on the service SID, instead of domain account).

Примечание

Для использования в SAP HANA единого входа система SAP должна соответствовать следующим особым требованиям к конфигурации HANA.To enable SSO for SAP HANA, you need to ensure the following HANA-specific configurations are met for SAP:

  1. Сервер SAP HANA должен работать под управлением версии 2.00.022* или более поздней.Ensure the SAP HANA server is running version 2.00.022* or higher / later.
  2. На компьютере шлюза установите последнюю версию драйвера ODBC для HANA от SAP.On the gateway machine, install SAP’s latest HANA ODBC driver. Минимальная версия драйвера ODBC для HANA — 2.00.020.00, выпущенная в августе 2017 г.The minimum version is HANA ODBC version 2.00.020.00 from August 2017.

Возможно, вам помогут следующие ссылки на исправления и обновления от SAP.The following links to patches and upgrades from SAP may be useful. Учтите, что для входа на следующие ресурсы нужно использовать учетную запись поддержки SAP и что SAP может изменить или обновить эти ссылки.Note that you must log in to the following resources using your SAP Support account, and that SAP may change or update these links.

Ошибки из-за неполной конфигурации KerberosErrors from an insufficient Kerberos configuration

Если основной сервер базы данных и шлюз неправильно настроены для ограниченного делегирования Kerberos, может поступить следующее сообщение об ошибке:If the underlying database server and gateway are not configured properly for Kerberos Constrained Delegation, you may receive the following error message:

Технические сведения, связанные с сообщением об ошибке, могут выглядеть так:And the technical details associated with the error message may look like the following:

Эта ошибка возникает из-за неполной конфигурации Kerberos: шлюз не может правильно олицетворить исходного пользователя, поэтому не удается подключиться к базе данных.The result is that the because of insufficient Kerberos configuration, the gateway could not impersonate the originating user properly, and the database connection attempt failed.

Подготовка к ограниченному делегированию KerberosPreparing for Kerberos Constrained Delegation

Чтобы ограниченное делегирование Kerberos правильно работало, необходимо настроить несколько элементов, в том числе имена субъектов-служб и параметры делегирования в учетных записях служб.Several items must be configured in order for Kerberos Constrained Delegation to work properly, including Service Principal Names (SPN) and delegation settings on service accounts.

Предварительное требование 1. Установка и настройка локального шлюза данныхPrerequisite 1: Install & configure the on-premises data gateway

Этот выпуск локального шлюза данных поддерживает обновление на месте, а также подхват параметров из существующих шлюзов.This release of the on-premises data gateway supports an in-place upgrade, as well as settings take-over of existing gateways.

Предварительное требование 2. Запуск службы Windows для шлюза в качестве учетной записи доменаPrerequisite 2: Run the gateway Windows service as a domain account

В стандартной установке шлюз выполняет роль учетной записи службы для локального компьютера (например, NT Service\PBIEgwService). Пример представлен на следующем изображении:In a standard installation, the gateway runs as a machine-local service account (specifically, NT Service\PBIEgwService) such as what's shown in the following image:

Чтобы включить ограниченное делегирование Kerberos, шлюз необходимо запускать как учетную запись домена, если служба AAD уже синхронизирована с локальным каталогом Active Directory (с помощью AAD DirSync или Connect).To enable Kerberos Constrained Delegation, the gateway must run as a domain account, unless your AAD is already synchronized with your local Active Directory (using AAD DirSync/Connect). Обеспечить надлежащую работу измененной учетной записи можно двумя способами:For this account change to work correctly, you have two options:

  • Если вы начали работу с предыдущей версией локального шлюза данных, последовательно выполните все пять шагов (в том числе запуск конфигуратора шлюзов на шаге 3), описанные в следующей статье:If you started with a previous version of the on-premises data gateway, follow precisely all five steps in sequence (including running the gateway configurator in step 3) described in the following article:

    • Смена учетной записи службы шлюза на пользователя домена.Changing the gateway service account to a domain user
    • Если вы уже установили предварительную версию локального шлюза данных, можно сменить учетную запись службы через интерфейс непосредственно из конфигуратора шлюзов.If you already installed the Preview version of the on-premises data gateway, there is a new UI-guided approach to switch service accounts directly from within the gateway’s configurator. См. раздел Переключение шлюза на учетную запись домена в конце этой статьи.See the Switching the gateway to a domain account section near the end of this article.

Примечание

Если настроено AAD DirSync/Connect и учетные записи синхронизированы, службе шлюза не требуется выполнять поиск в локальной службе AD на этапе выполнения. Для службы шлюза также можно использовать идентификатор безопасности локальной службы (вместо учетной записи домена).If AAD DirSync / Connect is configured and user accounts are synchronized, the gateway service does not need to perform local AD lookups at runtime, and you can use the local Service SID (instead of requiring a domain account) for the gateway service. Этапы настройки ограниченного делегирования Kerberos, описанные в этой статье, будут аналогичными для такой конфигурации (они просто применяются к идентификатору безопасности службы, а не учетной записи домена).The Kerberos Constrained Delegation configuration steps outlined in this article are the same as that configuration (they are simply applied based on the service SID, instead of domain account).

Предварительное требование 3. Получение прав администратора домена для настройки параметров ограниченного делегирования Kerberos и имен субъектов-служб (SetSPN)Prerequisite 3: Have domain admin rights to configure SPNs (SetSPN) and Kerberos Constrained Delegation settings

Технически администратор домена может на временной или постоянной основе разрешить любому пользователю настраивать делегирование Kerberos и имена субъектов-служб. Но это не рекомендуется делать для пользователей без прав администратора.While it is technically possible for a domain administrator to temporarily or permanently allow rights to someone else to configure SPNs and Kerberos delegation, without requiring domain admin rights, that's not the recommended approach. В следующем разделе подробно описаны этапы настройки для выполнения предварительного требования 3.In the following section, the configuration steps necessary for Pre-requisite 3 in detail.

Настройка ограниченного делегирования Kerberos для шлюза и источника данныхConfiguring Kerberos Constrained Delegation for the gateway and data source

Чтобы правильно настроить систему, необходимо настроить или проверить два следующих элемента:To properly configure the system, we need to configure or validate the following two items:

  1. При необходимости настройте имя субъекта-службы для учетной записи домена в службе шлюза (если она еще не создана).If needed, configure an SPN for the gateway service domain account (if none are created yet).
  2. Настройте параметры делегирования для учетной записи домена в службе шлюза.Configure delegation settings on the gateway service domain account.

Обратите внимание, что эти шаги может выполнять только администратор домена.Note that you must be a domain administrator to perform those two configuration steps.

В следующих разделах описаны действия по настройке.The following sections describe these steps in turn.

Настройка имени субъекта-службы для учетной записи службы шлюзаConfigure an SPN for the gateway service account

Сначала определите, создано ли имя субъекта-службы для учетной записи домена, используемой в качестве учетной записи службы шлюза. Для этого выполните следующие действия:First, determine whether an SPN was already created for the domain account used as the gateway service account, but following these steps:

  1. Войдите как администратор домена и запустите средство Пользователи и компьютеры Active Directory.As a domain administrator, launch Active Directory Users and Computers
  2. Щелкните правой кнопкой мыши домен, выберите Найти и введите имя учетной записи службы шлюза.Right-click on the domain, select Find, and type in the account name of the gateway service account
  3. В результатах поиска щелкните правой кнопкой мыши учетную запись службы шлюза и выберите Свойства.In the search result, right-click on the gateway service account and select Properties.

    • Если в диалоговом окне Свойства отображается вкладка Делегирование, значит, имя субъекта-службы уже создано и вы можете перейти к следующему подразделу для настройки параметров делегирования.If the Delegation tab is visible on the Properties dialog, then an SPN was already created and you can jump ahead to the next subsection about configuring Delegation settings.

Если в диалоговом окне Свойства не отображается вкладка Делегирование, можно создать имя субъекта-службы для учетной записи. После этого будет добавлена вкладка Делегирование. Это самый простой способ настройки параметров делегирования.If there is no Delegation tab on the Properties dialog, you can manually create an SPN on that account which adds the Delegation tab (that is the easiest way to configure delegation settings). Имя субъекта-службы можно создать с помощью средства setspn, доступного в Windows. Для создания имени субъекта-службы требуются права администратора домена.Creating an SPN can be done using the setspn tool that comes with Windows (you need domain admin rights to create the SPN).

Предположим, что учетная запись службы шлюза — PBIEgwTest\GatewaySvc, а компьютер, на котором работает шлюз, называется Machine1.For example, imagine the gateway service account is “PBIEgwTest\GatewaySvc”, and the machine name with the gateway service running is called Machine1. Чтобы задать имя субъекта-службы для учетной записи службы шлюза для этого компьютера, выполните следующую команду:To set the SPN for the gateway service account for that machine in this example, you would run the following command:

После этого можно перейти к настройке параметров делегирования.With that step completed, we can move on to configuring delegation settings.

Настройка параметров делегирования в учетной записи домена службы шлюзаConfigure delegation settings on the gateway service account

Второе требование конфигурации — это параметры делегирования в учетной записи службы шлюза.The second configuration requirement is the delegation settings on the gateway service account. Для этого можно использовать разные средства.There are multiple tools you can use to perform these steps. В этом примере мы будем использовать средство Пользователи и компьютеры Active Directory, которое является оснасткой консоли управления (MMC). Это средство используется для администрирования и публикации данных в каталоге. По умолчанию оно доступно в контроллерах домена.In this article, we'll use Active Directory Users and Computers, which is a Microsoft Management Console (MMC) snap-in that you can use to administer and publish information in the directory, and available on domain controllers by default. На других компьютерах можно использовать средство установки компонентов Windows.You can also enable it through Windows Feature configuration on other machines.

Необходимо настроить ограниченное делегирование Kerberos с транзитом протокола.We need to configure Kerberos Constrained Delegation with protocol transiting. При помощи функции ограниченного делегирования определите службы, которые нужно делегировать. Например, если вызовы делегирования от учетной записи службы шлюза должны получать только сервер SQL Server или SAP HANA.With constrained delegation, you must be explicit with which services you want to delegate to – for example, only your SQL Server or your SAP HANA server will accept delegation calls from the gateway service account.

В этом разделе предполагается, что вы уже настроили имена субъектов-служб для ваших базовых источников данных (таких как SQL Server, SAP HANA, Teradata и т. д.).This section assumes you have already configured SPNs for your underlying data sources (such as SQL Server, SAP HANA, Teradata, so on). Чтобы узнать, как настроить имена субъектов-служб сервера источника данных, см. техническую документацию соответствующего сервера базы данных.To learn how to configure those data source server SPNs, please refer to technical documentation for the respective database server. Также см. запись блога, в которой объясняется, какое имя субъекта-службы требуется вашему приложению.You can also look at the blog post that describes What SPN does your app require?

В приведенных ниже инструкциях предполагается, что у вас есть локальная среда с двумя компьютерами: компьютер шлюза и сервер базы данных (база данных SQL Server). В этом примере будут использоваться следующие параметры и имена:In the following steps we assume an on-premises environment with two machines: a gateway machine and a database server (SQL Server database), and for the sake of this example we'll also assume the following settings and names:

  • Имя компьютера шлюза: PBIEgwTestGW.Gateway machine name: PBIEgwTestGW
  • Учетная запись службы шлюза: PBIEgwTest\GatewaySvc (отображаемое имя учетной записи: соединитель шлюза).Gateway service account: PBIEgwTest\GatewaySvc (account display name: Gateway Connector)
  • Имя компьютера источника данных SQL Server: PBIEgwTestSQL.SQL Server data source machine name: PBIEgwTestSQL
  • Учетная запись для службы источника данных SQL Server: PBIEgwTest\SQLService.SQL Server data source service account: PBIEgwTest\SQLService

Учитывая эти примеры имен и параметров, этапы настройки будут следующими:Given those example names and settings, the configuration steps are the following:

  1. Войдите как администратор домена и запустите средство Пользователи и компьютеры Active Directory.With domain administrator rights, launch Active Directory Users and Computers.
  2. Щелкните правой кнопкой мыши учетную запись службы шлюза (PBIEgwTest\GatewaySvc) и выберите Свойства.Right-click on the gateway service account (PBIEgwTest\GatewaySvc) and select Properties.
  3. Выберите вкладку Делегирование.Select the Delegation tab.
  4. Выберите параметр Доверять компьютеру делегирование указанных служб.Select Trust this computer for delegation to specified services only.
  5. Выберите Использовать любой протокол проверки подлинности.Select Use any authentication protocol.
  6. В разделе Службы, с которыми эта учетная запись может использовать делегированные учетные данные: нажмите кнопку Добавить.Under the Services to which this account can present delegated credentials: select Add.
  7. В открывшемся диалоговом окне выберите Пользователи или компьютеры.In the new dialog, select Users or Computers.
  8. Введите данные учетной записи для службы базы данных SQL Server (PBIEgwTest\SQLService) и нажмите кнопку ОК.Enter the service account for the SQL Server Database service (PBIEgwTest\SQLService) and select OK.
  9. Выберите имя субъекта-службы, созданное для сервера базы данных.Select the SPN that you created for the database server. В этом примере имя субъекта-службы будет начинаться с MSSQLSvc.In our example, the SPN will begin with MSSQLSvc. Если вы добавили полное доменное имя и имя субъекта-службы NetBIOS для службы базы данных, выберите оба имени.If you added both the FQDN and the NetBIOS SPN for your database service, select both. Вы можете увидеть только одно имя.You may only see one.
  10. Нажмите кнопку ОК.Select OK. Вы должны увидеть имя субъекта-службы в списке.You should see the SPN in the list now.
  11. При необходимости выберите Развернуто, чтобы отображалось имя субъекта-службы NetBIOS и полное доменное имя.Optionally, you can select Expanded to show both the FQDN and NetBIOS SPN in
  12. Если установлен флажок Развернуто, диалоговое окно должно выглядеть так:The dialog will look similar to the following if you checked Expanded.

  13. Нажмите кнопку ОК.Select OK.

    Теперь на компьютере со службой шлюза (PBIEgwTestGW в нашем примере), назначьте учетной записи службы шлюза локальную политику "Имитация клиента после проверки подлинности".Finally, on the machine running the gateway service (PBIEgwTestGW in our example), the gateway service account must be granted the local policy “Impersonate a client after authentication”. Это можно выполнить или проверить с помощью редактора локальных групповых политик (gpedit).You can perform/verify this with the Local Group Policy Editor (gpedit).

  14. На компьютере шлюза выполните команду gpedit.mscOn the gateway machine, run: gpedit.msc
  15. Последовательно выберите элементы Политика локального компьютера > Конфигурация компьютера > Параметры Windows > Параметры безопасности > Локальные политики > Назначение прав пользователя, как показано на следующем изображении:Navigate to Local Computer Policy > Computer Configuration > Windows Settings > Security Settings > Local Policies > User Rights Assignment, as shown in the following image.

  16. В списке политик в разделе Назначение прав пользователя выберите Имитация клиента после проверки подлинности.From the list of policies under User Rights Assignment, select Impersonate a client after authentication.

    Щелкните правой кнопкой мыши, откройте свойства параметра Имитация клиента после проверки подлинности и проверьте список учетных записей.Right-click and open the Properties for Impersonate a client after authentication and check the list of accounts. В нем должна быть указана учетная запись службы шлюза (PBIEgwTest\GatewaySvc).It must include the gateway service account (PBIEgwTest\GatewaySvc).

  17. В списке политик в разделе Назначение прав пользователя выберите Act as part of the operating system (SeTcbPrivilege) (Работа в режиме операционной системы (SeTcbPrivilege)).From the list of policies under User Rights Assignment, select Act as part of the operating system (SeTcbPrivilege). Убедитесь, что учетная запись службы шлюза также входит в список учетных записей.Ensure that the gateway service account is included in the list of accounts as well.
  18. Перезапустите процесс службы локального шлюза данных.Restart the on-premises data gateway service process.

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

Выполнив все инструкции, приведенные ранее в этой статье, на странице Управление шлюза в Power BI можно настроить источник данных, включить единый вход в разделе Дополнительные параметры, а затем публиковать отчеты и наборы данных, которые привязаны к источнику данных.After all the configuration steps outlined earlier in this article have been completed, you can use the Manage Gateway page in Power BI to configure the data source, and under its Advanced Settings, enable SSO, then publish reports and datasets binding to that data source.

Эта конфигурация применима для большинства случаев.This configuration will work in most cases. Но при использовании Kerberos в разных средах могут применяться разные конфигурации.However, with Kerberos there can be different configurations depending on your environment. Если отчет по-прежнему не загружается, обратитесь к администратору домена для дальнейшего изучения проблемы.If the report still won't load, you'll need to contact your domain administrator to investigate further.

Переключение шлюза на учетную запись доменаSwitching the gateway to a domain account

Ранее в этой статье мы упоминали о переключении шлюза с учетной записи локальной службы на учетную запись домена с помощью пользовательского интерфейса локального шлюза данных.Earlier in this article, we discussed switching the gateway from a local service account to run as a domain account, using the on-premises data gateway user interface. Ниже объясняется, как это сделать.Here are the steps necessary to do so.

  1. Запустите средство настройки локального шлюза данных.Launch the on-premises data gateway configuration tool.

  2. На главной странице нажмите кнопку Войти и войдите в учетную запись Power BI.Select the Sign-in button on the main page, and sign in with your Power BI account.
  3. После входа выберите вкладку Параметры службы.After sign-in is completed, select the Service Settings tab.
  4. Щелкните Изменить учетную запись, чтобы запустить интерактивное пошаговое руководство, как показано на следующем изображении:Click Change account to start the guided walk-through, as shown in the following figure.

Дальнейшие действияNext steps

Дополнительные сведения о локальном шлюзе данных и DirectQuery см. в следующих ресурсах:For more information about the on-premises data gateway and DirectQuery, check out the following resources: