Uso de Kerberos para el SSO (inicio de sesión único) de Power BI en orígenes de datos localesUse Kerberos for SSO (single sign-on) from Power BI to on-premises data sources

Puede lograr una conectividad de inicio de sesión único perfecta con la habilitación de la actualización de los informes y paneles de Power BI con datos locales, mediante la configuración de la puerta de enlace de datos local con 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. La puerta de enlace de datos local facilita el inicio de sesión único (SSO) mediante DirectQuery, que es lo que utiliza para conectarse a los orígenes de datos locales.The on-premises data gateway facilitates single sign-on (SSO) using DirectQuery, which it uses to connect to on-premises data sources.

Se admiten actualmente los siguiente orígenes de datos, SQL Server, SAP HANA y Teradata, basados en la delegación restringida de 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

Cuando un usuario interactúa con un informe de DirectQuery en el servicio Power BI, cada operación de filtro cruzado, división, ordenación y edición de informes puede dar lugar a consultas que se ejecutan en vivo en el origen de datos local subyacente.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. Cuando se configura el inicio de sesión único para el origen de datos, las consultas se ejecutan bajo la identidad del usuario que interactúa con Power BI (es decir, a través de la experiencia web o aplicaciones móviles de 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). Por lo tanto, cada usuario ve los datos para los que tiene permisos en el origen de datos subyacente: con el inicio de sesión único configurado, no hay ningún almacenamiento en caché de datos compartido entre distintos usuarios.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.

Ejecución de una consulta con SSO: pasos que se producenRunning a query with SSO - steps that occur

Una consulta que se ejecuta con SSO consta de tres pasos, tal como se muestra en el diagrama siguiente.A query that runs with SSO consists of three steps, as shown in the following diagram.

Nota

SSO para Oracle aún no está habilitado, pero está en fase de desarrollo y estará disponible próximamente.SSO for Oracle is not enabled yet, but is under development and coming soon.

Estos son los detalles adicionales sobre estos pasos:Here are additional details about those steps:

  1. Para cada consulta, el servicio Power BI incluye el nombre principal de usuario (UPN) al enviar una solicitud de consulta a la puerta de enlace configurada.For each query, the Power BI service includes the user principal name (UPN) when sending a query request to the configured gateway.
  2. La puerta de enlace debe asignar el UPN de Azure Active Directory a una identidad de Active Directory local.The gateway needs to map the Azure Active Directory UPN to a local Active Directory identity.

    a.a. Si AAD DirSync (también conocido como AAD Connect) está configurado, la asignación funciona automáticamente en la puerta de enlace.If AAD DirSync (also known as AAD Connect) is configured, then the mapping works automatically in the gateway.

    b.b. En caso contrario, la puerta de enlace puede buscar y asignar el UPN de Azure AD a un usuario local mediante la realización de una búsqueda en el dominio local de 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. El proceso del servicio de puerta de enlace suplanta al usuario local asignado, abre la conexión a la base de datos subyacente y envía la consulta.The gateway service process impersonates the mapped local user, opens the connection to the underlying database and sends the query. No es necesario que la puerta de enlace esté instalada en el mismo equipo que la base de datos.The gateway does not need to be installed on the same machine as the database.

    • La suplantación de usuario y la conexión a la base de datos solo es correcta si la cuenta de servicio de la puerta de enlace es una cuenta de dominio (o SID de servicio), y si se ha configurado la delegación restringida de Kerberos para que la base de datos acepte vales de Kerberos de la cuenta de servicio de puerta de enlace.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.

    Nota

    En relación con el SID de servicio, si AAD DirSync o AAD Connect están configurados y las cuentas de usuario están sincronizadas, el servicio de puerta de enlace no necesita realizar búsquedas de AD locales en tiempo de ejecución y puede usar el SID de servicio local (en lugar de requerir una cuenta de dominio) para el servicio de puerta de enlace.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. Los pasos de configuración de la delegación restringida de Kerberos que se describen en este documento son los mismos (simplemente se aplican en función del SID de servicio, en lugar de la cuenta de dominio).The Kerberos constrained delegation configuration steps outlined in this document are the same (just applied based on the service SID, instead of domain account).

Nota

Para habilitar SSO para SAP HANA, tiene que asegurarse de que se cumplen con las siguientes configuraciones específicas de HANA para SAP:To enable SSO for SAP HANA, you need to ensure the following HANA-specific configurations are met for SAP:

  1. Asegúrese de que el servidor de SAP HANA ejecuta la versión 2.00.022* o una posterior.Ensure the SAP HANA server is running version 2.00.022* or higher / later.
  2. En el equipo de puerta de enlace, instale el controlador ODBC de HANA más reciente de SAP.On the gateway machine, install SAP’s latest HANA ODBC driver. La versión mínima es HANA ODBC versión 2.00.020.00, de agosto de 2017.The minimum version is HANA ODBC version 2.00.020.00 from August 2017.

Los vínculos siguientes a revisiones y actualizaciones de SAP le pueden resultar útiles.The following links to patches and upgrades from SAP may be useful. Tenga en cuenta que debe iniciar sesión en los siguientes recursos con su cuenta de soporte técnico de SAP, y ese SAP puede cambiar o actualizar estos vínculos.Note that you must log in to the following resources using your SAP Support account, and that SAP may change or update these links.

Errores de una configuración de Kerberos incompletaErrors from an insufficient Kerberos configuration

Si el servidor de base de datos y la puerta de enlace subyacentes no están configurados correctamente para la delegación restringida de Kerberos, puede recibir el mensaje de error siguiente:If the underlying database server and gateway are not configured properly for Kerberos Constrained Delegation, you may receive the following error message:

Y los detalles técnicos asociados con el mensaje de error pueden ser similares a los siguientes:And the technical details associated with the error message may look like the following:

El resultado es que, debido a la insuficiente configuración de Kerberos, la puerta de enlace no pudo suplantar al usuario de origen correctamente y el intento de conexión a la base de datos produjo un error.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.

Preparación de la delegación restringida de KerberosPreparing for Kerberos Constrained Delegation

Deben configurarse varios elementos para que la delegación restringida de Kerberos funcione correctamente, incluidos los nombres principales de servicio (SPN) y la configuración de delegación de cuentas de servicio.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.

Requisito previo 1: Instalación y configuración de la puerta de enlace de datos localPrerequisite 1: Install & configure the on-premises data gateway

Esta versión de la puerta de enlace de datos local admite la actualización in situ, así como la adquisición de la configuración de las puertas de enlace existentes.This release of the on-premises data gateway supports an in-place upgrade, as well as settings take-over of existing gateways.

Requisito previo 2: Ejecución del servicio de Windows de puerta de enlace como cuenta de dominioPrerequisite 2: Run the gateway Windows service as a domain account

En una instalación estándar, la puerta de enlace se ejecuta como una cuenta de servicio de la máquina local (en concreto, NT Service\PBIEgwService) como se muestra en la siguiente imagen: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:

Para habilitar la delegación restringida de Kerberos, debe ejecutar la puerta de enlace como una cuenta de dominio, a menos que AAD ya esté sincronizado con su Active Directory local (mediante AAD DirSync o AAD 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). Para que este cambio de cuenta funcione correctamente, tiene dos opciones:For this account change to work correctly, you have two options:

  • Si comenzó con una versión anterior de la puerta de enlace de datos local, siga al pie de la letra los cinco pasos en secuencia (incluida la ejecución de la configuración de la puerta de enlace en el paso 3) que se describen en el siguiente artículo: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:

    • Cambio de la cuenta de servicio de la puerta de enlace a un usuario de dominioChanging the gateway service account to a domain user
    • Si ya ha instalado la versión preliminar de la puerta de enlace de datos local, hay un nuevo enfoque a través de la interfaz de usuario para cambiar de cuenta de servicio directamente desde dentro del configurador de la puerta de enlace.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. Consulte la sección Cambio de la puerta de enlace a una cuenta de dominio cerca del final de este artículo.See the Switching the gateway to a domain account section near the end of this article.

Nota

Si AAD DirSync o AAD Connect están configurados y las cuentas de usuario están sincronizadas, el servicio de puerta de enlace no necesita realizar búsquedas de AD locales en tiempo de ejecución y puede usar el SID de servicio local (en lugar de requerir una cuenta de dominio) para el servicio de puerta de enlace.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. Los pasos de configuración de la delegación restringida de Kerberos que se describen en este artículo son los mismos que esa configuración (simplemente se aplican en función del SID de servicio, en lugar de la cuenta de dominio).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).

Requisito previo 3: Derechos de administrador de dominio para configurar los SPN (SetSPN) y la configuración de la delegación restringida de KerberosPrerequisite 3: Have domain admin rights to configure SPNs (SetSPN) and Kerberos Constrained Delegation settings

Aunque es técnicamente posible para un administrador de dominio otorgar derechos temporales o permanentes a otra persona para configurar SPN y la delegación de Kerberos sin necesidad de derechos de administrador de dominio, no es el enfoque recomendado.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. En la sección siguiente, se detallan los pasos de configuración necesarios para el Requisito previo 3.In the following section, the configuration steps necessary for Pre-requisite 3 in detail.

Configuración de la delegación restringida de Kerberos para el origen de datos y la puerta de enlaceConfiguring Kerberos Constrained Delegation for the gateway and data source

Para configurar correctamente el sistema, es necesario configurar o validar los dos elementos siguientes:To properly configure the system, we need to configure or validate the following two items:

  1. Si es necesario, configure un SPN para la cuenta de dominio del servicio de puerta de enlace (si aún no se ha creado ninguno).If needed, configure an SPN for the gateway service domain account (if none are created yet).
  2. Configure las opciones de delegación en la cuenta de dominio del servicio de puerta de enlace.Configure delegation settings on the gateway service domain account.

Tenga en cuenta que debe ser un administrador de dominio para realizar esos dos pasos de configuración.Note that you must be a domain administrator to perform those two configuration steps.

En las siguientes secciones se describen estos pasos.The following sections describe these steps in turn.

Configuración de un SPN para la cuenta de servicio de la puerta de enlaceConfigure an SPN for the gateway service account

En primer lugar, determine si ya se ha creado un nombre de entidad de seguridad de servicio para la cuenta de dominio que se usa como la cuenta de servicio de la puerta de enlace, pero siguiendo estos pasos:First, determine whether an SPN was already created for the domain account used as the gateway service account, but following these steps:

  1. Como administrador de dominio, inicie Usuarios y equipos de Active DirectoryAs a domain administrator, launch Active Directory Users and Computers
  2. Haga clic con el botón derecho en el dominio, seleccione Buscar y escriba el nombre de la cuenta de servicio de la puerta de enlaceRight-click on the domain, select Find, and type in the account name of the gateway service account
  3. En el resultado de la búsqueda, haga clic con el botón derecho en la cuenta de servicio de la puerta de enlace y seleccione Propiedades.In the search result, right-click on the gateway service account and select Properties.

    • Si la pestaña Delegación está visible en el cuadro de diálogo Propiedades, ya se ha creado un SPN y puede pasar a la siguiente subsección sobre cómo configurar la delegación.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.

Si no hay pestaña Delegación en el cuadro de diálogo Propiedades, puede crear manualmente un SPN en dicha cuenta que agrega la pestaña Delegación (esa es la manera más fácil de configurar la delegación).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). Puede crear un SPN utilizando la herramienta setspn que viene con Windows (necesita derechos de administrador de dominio para crear el SPN).Creating an SPN can be done using the setspn tool that comes with Windows (you need domain admin rights to create the SPN).

Imagine, por ejemplo, que la cuenta de servicio de la puerta de enlace es "PBIEgwTest\GatewaySvc" y el nombre del equipo que ejecuta el servicio de puerta de enlace es Machine1.For example, imagine the gateway service account is “PBIEgwTest\GatewaySvc”, and the machine name with the gateway service running is called Machine1. Para establecer el SPN para la cuenta de servicio de la puerta de enlace para esa máquina en este ejemplo, ejecutaría el comando siguiente:To set the SPN for the gateway service account for that machine in this example, you would run the following command:

Con ese paso completado, podemos continuar con la configuración de las opciones de delegación.With that step completed, we can move on to configuring delegation settings.

Configuración de los valores de delegación en la cuenta de servicio de la puerta de enlaceConfigure delegation settings on the gateway service account

El segundo requisito de la configuración es la configuración de la delegación en la cuenta de servicio de la puerta de enlace.The second configuration requirement is the delegation settings on the gateway service account. Hay varias herramientas que puede usar para realizar estos pasos.There are multiple tools you can use to perform these steps. En este artículo, vamos a usar Usuarios y equipos de Active Directory, que es un complemento de Microsoft Management Console (MMC) que puede usar para administrar y publicar información en el directorio y está disponible en los controladores de dominio de forma predeterminada.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. También puede habilitarlo a través de la configuración de las Características de Windows en otros equipos.You can also enable it through Windows Feature configuration on other machines.

Es necesario configurar la delegación restringida de Kerberos con tránsito de protocolo.We need to configure Kerberos Constrained Delegation with protocol transiting. Con la delegación restringida, es preciso ser explícito con los servicios a los que desea delegar (por ejemplo, solo SQL Server o el servidor de SAP HANA aceptarán llamadas de delegación de la cuenta de servicio de la puerta de enlace).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.

En esta sección se da por supuesto que ya ha configurado los SPN de los orígenes de datos subyacentes (como SQL Server, SAP HANA, Teradata, etc.).This section assumes you have already configured SPNs for your underlying data sources (such as SQL Server, SAP HANA, Teradata, so on). Para obtener información sobre cómo configurar los SPN del servidor del origen de datos, consulte la documentación técnica para el servidor de base de datos respectivo.To learn how to configure those data source server SPNs, please refer to technical documentation for the respective database server. También puede buscar en la entrada de blog que describe ¿Qué SPN requiere la aplicación?You can also look at the blog post that describes What SPN does your app require?

En los siguientes pasos se supone un entorno local con dos equipos: un equipo de puerta de enlace y un servidor de base de datos (base de datos de SQL Server) y para este ejemplo también supondremos la configuración y los nombres siguientes: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:

  • Nombre de la máquina de puerta de enlace: PBIEgwTestGWGateway machine name: PBIEgwTestGW
  • Cuenta de servicio de la puerta de enlace: PBIEgwTest\GatewaySvc (nombre para mostrar de la cuenta: Conector de la puerta de enlace)Gateway service account: PBIEgwTest\GatewaySvc (account display name: Gateway Connector)
  • Nombre de la máquina del origen de datos de SQL Server: PBIEgwTestSQLSQL Server data source machine name: PBIEgwTestSQL
  • Cuenta de servicio del origen de datos de SQL Server: PBIEgwTest\SQLServiceSQL Server data source service account: PBIEgwTest\SQLService

Con esos nombres y configuración de ejemplo, los pasos de configuración son los siguientes:Given those example names and settings, the configuration steps are the following:

  1. Con derechos de administrador de dominio, inicie Usuarios y equipos de Active Directory.With domain administrator rights, launch Active Directory Users and Computers.
  2. Haga clic con el botón derecho en la cuenta de servicio de la puerta de enlace (PBIEgwTest\GatewaySvc) y seleccione Propiedades.Right-click on the gateway service account (PBIEgwTest\GatewaySvc) and select Properties.
  3. Seleccione la ficha Delegación.Select the Delegation tab.
  4. Seleccione Confiar en este equipo para la delegación solo a los servicios especificados.Select Trust this computer for delegation to specified services only.
  5. Seleccione Usar cualquier protocolo de autenticación.Select Use any authentication protocol.
  6. En Servicios en los que esta cuenta puede presentar credenciales delegadas:, seleccione Agregar.Under the Services to which this account can present delegated credentials: select Add.
  7. En el cuadro de diálogo nuevo, seleccione Users or Computers (Usuarios o equipos).In the new dialog, select Users or Computers.
  8. Escriba la cuenta de servicio para el servicio de base de datos de SQL Server (PBIEgwTest\SQLService) y seleccione Aceptar.Enter the service account for the SQL Server Database service (PBIEgwTest\SQLService) and select OK.
  9. Seleccione el SPN que ha creado para el servidor de base de datos.Select the SPN that you created for the database server. En nuestro ejemplo, el SPN comenzará con MSSQLSvc.In our example, the SPN will begin with MSSQLSvc. Si ha agregado tanto el SPN de FQDN como el de NetBIOS, seleccione ambos.If you added both the FQDN and the NetBIOS SPN for your database service, select both. Es posible que solo vea uno.You may only see one.
  10. Seleccione Aceptar.Select OK. Ahora debería ver el SPN en la lista.You should see the SPN in the list now.
  11. Si lo desea, puede seleccionar Expandido para mostrar el SPN de FQDN y el de NetBIOS enOptionally, you can select Expanded to show both the FQDN and NetBIOS SPN in
  12. El cuadro de diálogo debe ser similar al siguiente si ha activado Expandido.The dialog will look similar to the following if you checked Expanded.

  13. Seleccione Aceptar.Select OK.

    Por último, en la máquina que ejecuta el servicio de puerta de enlace (PBIEgwTestGW en nuestro ejemplo), la cuenta de servicio de la puerta de enlace debe tener la directiva local "Suplantar a un cliente tras la autenticación".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”. Puede realizar y comprobar esto con el Editor de directivas de grupo local (gpedit).You can perform/verify this with the Local Group Policy Editor (gpedit).

  14. En el equipo de puerta de enlace, ejecute: gpedit.mscOn the gateway machine, run: gpedit.msc
  15. Vaya a Directiva de equipo Local > Configuración del equipo > Configuración de Windows > Configuración de seguridad > Directivas locales > Asignación de derechos de usuario, como se muestra en la siguiente imagen.Navigate to Local Computer Policy > Computer Configuration > Windows Settings > Security Settings > Local Policies > User Rights Assignment, as shown in the following image.

  16. En la lista de directivas en Asignación de derechos de usuario, seleccione Suplantar a un cliente tras la autenticación.From the list of policies under User Rights Assignment, select Impersonate a client after authentication.

    Haga clic con el botón derecho y abra las Propiedades de Suplantar a un cliente tras la autenticación y compruebe la lista de cuentas.Right-click and open the Properties for Impersonate a client after authentication and check the list of accounts. Debe incluir la cuenta de servicio de la puerta de enlace (PBIEgwTest\GatewaySvc).It must include the gateway service account (PBIEgwTest\GatewaySvc).

  17. En la lista de directivas en Asignación de derechos de usuario, seleccione Actuar como parte del sistema operativo (SeTcbPrivilege).From the list of policies under User Rights Assignment, select Act as part of the operating system (SeTcbPrivilege). Asegúrese también de que la cuenta de servicio de la puerta de enlace está incluida en la lista de cuentas.Ensure that the gateway service account is included in the list of accounts as well.
  18. Reinicie el proceso del servicio de la puerta de enlace de datos local.Restart the on-premises data gateway service process.

Ejecución de un informe de Power BIRunning a Power BI report

Después de completar todos los pasos de configuración que se describen anteriormente en este artículo, puede utilizar la página Administrar puerta de enlace en Power BI para configurar el origen de datos y, en Configuración avanzada, habilitar SSO y, a continuación, publicar informes y el enlace de conjuntos de datos en ese origen de datos.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.

Esta configuración funciona en la mayoría de los casos.This configuration will work in most cases. Sin embargo, con Kerberos puede haber distintas configuraciones en función de su entorno.However, with Kerberos there can be different configurations depending on your environment. Si todavía no se pudo cargar el informe, debe ponerse en contacto con el administrador de dominio para investigar en profundidad.If the report still won't load, you'll need to contact your domain administrator to investigate further.

Cambio de la puerta de enlace a una cuenta de dominioSwitching the gateway to a domain account

En este artículo ya se ha analizado el cambio de la puerta de enlace de una cuenta de servicio local para que se ejecute como una cuenta de dominio, usando la interfaz de usuario de la puerta de enlace de datos local.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. Estos son los pasos necesarios para hacerlo.Here are the steps necessary to do so.

  1. Inicie la herramienta de configuración de la puerta de enlace de datos local.Launch the on-premises data gateway configuration tool.

  2. Seleccione el botón Inicio de sesión situado en la página principal e inicie sesión con su cuenta de Power BI.Select the Sign-in button on the main page, and sign in with your Power BI account.
  3. Una vez completado el inicio de sesión, seleccione la pestaña Configuración del servicio.After sign-in is completed, select the Service Settings tab.
  4. Haga clic en Cambiar cuenta para iniciar el tutorial guiado, tal como se muestra en la ilustración siguiente.Click Change account to start the guided walk-through, as shown in the following figure.

Pasos siguientesNext steps

Para más información acerca de la puerta de enlace de datos local y DirectQuery, consulte los recursos siguientes:For more information about the on-premises data gateway and DirectQuery, check out the following resources: