Utiliser Kerberos pour l’authentification unique (SSO) de Power BI à des sources de données localesUse Kerberos for SSO (single sign-on) from Power BI to on-premises data sources

Vous pouvez obtenir une connectivité avec authentification unique transparente, permettant la mise à jour de rapports et tableaux de bord Power BI à partir de données locales, en configurant votre passerelle de données locale avec 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 passerelle de données locale facilite l’authentification unique (SSO) à l’aide de DirectQuery qu’elle utilise pour se connecter à des sources de données locales.The on-premises data gateway facilitates single sign-on (SSO) using DirectQuery, which it uses to connect to on-premises data sources.

Les sources de données SQL Server, SAP HANA et Teradata, toutes basées sur une délégation Kerberos contrainte sont actuellement prises en charge.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

Quand un utilisateur interagit avec un rapport DirectQuery dans le service Power BI, chaque opération de filtrage croisé, de découpage, de tri et de modification de rapport peut entraîner des requêtes en direct sur la source de données locale sous-jacente.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. Lorsque l’authentification unique est configurée pour la source de données, les requêtes s’exécutent sous l’identité de l’utilisateur interagissant avec Power BI via l’interface expérience web ou des applications mobiles 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). Ainsi, chaque utilisateur voit précisément les données qu’il est autorisé à consulter dans la source de données sous-jacente. Quand l’authentification unique est configurée, il n’y a pas de mise en cache de données partagées entre les différents utilisateurs.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.

Étapes de l’exécution d’une requête avec une authentification uniqueRunning a query with SSO - steps that occur

Une requête exécutée avec une authentification unique comprend trois étapes, comme illustré dans le diagramme suivant.A query that runs with SSO consists of three steps, as shown in the following diagram.

Note

L’authentification unique (SSO) pour Oracle n’est pas encore activée, mais elle est en cours de développement et sera disponible bientôt.SSO for Oracle is not enabled yet, but is under development and coming soon.

Des détails supplémentaires concernant ces étapes figurent ci-dessous :Here are additional details about those steps:

  1. Pour chaque requête, le service Power BI inclut le nom d’utilisateur principal (UPN) lors de l’envoi d’une demande de requête à la passerelle configurée.For each query, the Power BI service includes the user principal name (UPN) when sending a query request to the configured gateway.
  2. La passerelle doit mapper l’UPN Active Directory Azure à une identité Active Directory locale.The gateway needs to map the Azure Active Directory UPN to a local Active Directory identity.

    a.a. Si AAD DirSync (également appelé AAD Connect) est configuré, le mappage fonctionne automatiquement dans la passerelle.If AAD DirSync (also known as AAD Connect) is configured, then the mapping works automatically in the gateway.

    b.b. Autrement, la passerelle peut rechercher et mapper l’UPN AD Azure à un utilisateur local en effectuant une recherche dans le domaine Active Directory local.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. Le processus du service de passerelle emprunte l’identité de l’utilisateur local mappé, ouvre la connexion à la base de données sous-jacente, et envoie la requête.The gateway service process impersonates the mapped local user, opens the connection to the underlying database and sends the query. Il n’est pas nécessaire d’installer la passerelle sur la même machine que la base de données.The gateway does not need to be installed on the same machine as the database.

    • L’emprunt d’identité de l’utilisateur et la connexion à la base de données ne réussissent que si le compte de service de passerelle est un compte de domaine (ou SID ddu service), et si une délégation Kerberos contrainte a été configurée pour la base de données afin d’accepter des tickets Kerberos en provenance du compte de service de passerelle.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.

    Note

    En ce qui concerne le SID du service, si AAD DirSync/Connect est configuré et que des comptes d’utilisateurs sont synchronisés, le service de passerelle n’a pas besoin d’effectuer de recherches Active Directory locales lors de l’exécution, et vous pouvez utiliser le SID du service local (au lieu d’exiger un compte de domaine) pour le service de passerelle.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. Les étapes de configuration de délégation Kerberos contrainte décrites dans ce documents sont les mêmes (simplement appliquées sur la base du SID du service, au lieu du compte de domaine).The Kerberos constrained delegation configuration steps outlined in this document are the same (just applied based on the service SID, instead of domain account).

Note

Pour activer l’authentification unique pour SAP HANA, vous devez vous assurer que les configurations propres à HANA suivantes sont correctes pour SAP :To enable SSO for SAP HANA, you need to ensure the following HANA-specific configurations are met for SAP:

  1. Vérifiez que le serveur SAP HANA exécute la version 2.00.022* ou supérieure/ultérieure.Ensure the SAP HANA server is running version 2.00.022* or higher / later.
  2. Sur l’ordinateur de la passerelle, installez le pilote ODBC HANA SAP le plus récent.On the gateway machine, install SAP’s latest HANA ODBC driver. La version minimale est HANA ODBC 2.00.020.00 datant d’août 2017.The minimum version is HANA ODBC version 2.00.020.00 from August 2017.

Les liens suivants vers les correctifs et les mises à niveau à partir de SAP peuvent être utiles.The following links to patches and upgrades from SAP may be useful. Notez que vous devez vous connecter aux ressources suivantes avec votre compte SAP Support, et que SAP peut-changer ou mettre à jour ces liens.Note that you must log in to the following resources using your SAP Support account, and that SAP may change or update these links.

Erreurs d’une configuration insuffisante de KerberosErrors from an insufficient Kerberos configuration

Si le serveur de base de données sous-jacent et la passerelle ne sont pas configurés correctement pour une délégation Kerberos contrainte, il se peut que vous receviez le message d’erreur suivant :If the underlying database server and gateway are not configured properly for Kerberos Constrained Delegation, you may receive the following error message:

Et les détails techniques associés au message d’erreur peuvent se présenter comme suit :And the technical details associated with the error message may look like the following:

Le résultat est qu’en raison de la configuration insuffisante de Kerberos, la passerelle n’a pas pu emprunter l’identité de l’utilisateur d’origine correctement, et que la tentative de connexion de base de données a échoué.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.

Préparation d’une délégation Kerberos contraintePreparing for Kerberos Constrained Delegation

Plusieurs éléments doivent être configurés pour qu’une délégation Kerberos contrainte fonctionne correctement, dont les noms de principal du service (SPN) et les paramètres de délégation sur les comptes de service.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.

Condition préalable 1 : installer et configurer la passerelle de données localePrerequisite 1: Install & configure the on-premises data gateway

Cette version de la passerelle de données locale prend en charge une mise à niveau sur place, ainsi qu’une prise de contrôle des paramètres de passerelles existantes.This release of the on-premises data gateway supports an in-place upgrade, as well as settings take-over of existing gateways.

Condition préalable 2 : exécuter le service Windows de passerelle en tant que compte de domainePrerequisite 2: Run the gateway Windows service as a domain account

Dans une installation standard, la passerelle s’exécute en tant que compte de service local de machine (en particulier, NT Service\PBIEgwService) comme illustré dans l’image suivante :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:

Pour activer une délégation Kerberos contrainte, la passerelle doit opérer en tant que compte de domaine, sauf si votre AAD est déjà synchronisé avec votre Active Directory local (à l’aide de 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). Pour que cette modification compte fonctionne correctement, vous avez deux options :For this account change to work correctly, you have two options:

  • Si vous avez démarré avec une version précédente de la passerelle de données locale, suivez précisément dans l’ordre les 5 étapes (y compris l’exécution de l’outil de configuration de passerelle à l’étape 3) décrites dans l’article suivant :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:

    • Remplacement du compte de service de passerelle par un utilisateur de domaineChanging the gateway service account to a domain user
    • Si vous déjà installé la préversion de la passerelle de données locale, il existe une nouvelle approche guidée par interface utilisateur pour changer de compte de service directement à partir de l’outil de configuration de la passerelle.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. Voir la section Basculement de la passerelle vers un compte de domaine vers la fin de cet article.See the Switching the gateway to a domain account section near the end of this article.

Note

Si AAD DirSync/Connect est configuré et que des comptes d’utilisateurs sont synchronisés, le service de passerelle n’a pas besoin d’effectuer de recherches Active Directory locales lors de l’exécution, et vous pouvez utiliser le SID du service local (au lieu d’exiger un compte de domaine) pour le service de passerelle.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. Les étapes de configuration de délégation Kerberos contrainte décrites dans cet article sont les mêmes que celle de cette configuration (elles sont simplement appliquées sur la base du SID de service, au lieu du compte de domaine).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).

Condition préalable 3 : obtenir des droits d’administrateur de domaine pour configurer les noms de principal du service (SetSPN) et les paramètres de délégation Kerberos contraintePrerequisite 3: Have domain admin rights to configure SPNs (SetSPN) and Kerberos Constrained Delegation settings

S’il est techniquement possible pour un administrateur de domaine ne disposant pas de droits d’administrateur de domaine d’accorder temporairement ou définitivement à quelqu’un d’autre les droits de configurer des noms de principal du service et une délégation Kerberos, cette approche n’est pas recommandée.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. La section suivante décrit en détail les étapes de configuration nécessaires pour la Condition préalable 3.In the following section, the configuration steps necessary for Pre-requisite 3 in detail.

Configuration de la délégation Kerberos contrainte pour la passerelle et la source de donnéesConfiguring Kerberos Constrained Delegation for the gateway and data source

Pour configurer correctement le système, nous devons configurer ou valider les deux éléments suivants :To properly configure the system, we need to configure or validate the following two items:

  1. Si nécessaire, configurez un nom de principal du service pour le compte de domaine du service de passerelle (si aucun nom n’a encore été créé).If needed, configure an SPN for the gateway service domain account (if none are created yet).
  2. Configurez les paramètres de délégation sur le compte de domaine du service de passerelle.Configure delegation settings on the gateway service domain account.

Notez que, pour effectuer ces deux étapes de configuration, vous devez être administrateur de domaine.Note that you must be a domain administrator to perform those two configuration steps.

Les sections suivantes décrivent ces étapes successivement.The following sections describe these steps in turn.

Configurer un nom de principal du service pour le compte de service de passerelleConfigure an SPN for the gateway service account

Tout d’abord, déterminez si un nom de principal du service a déjà été créé pour le compte de domaine utilisé en tant que compte de service de passerelle, mais en procédant comme suit :First, determine whether an SPN was already created for the domain account used as the gateway service account, but following these steps:

  1. En tant qu’administrateur de domaine, lancez Utilisateurs et ordinateurs Active Directory.As a domain administrator, launch Active Directory Users and Computers
  2. Cliquez avec le bouton droit sur le domaine, sélectionnez Trouver, puis tapez le nom du compte de service de passerelle.Right-click on the domain, select Find, and type in the account name of the gateway service account
  3. Dans la zone de recherche, cliquez avec le bouton droit sur le compte de service de passerelle, puis sélectionnez Propriétés.In the search result, right-click on the gateway service account and select Properties.

    • Si l’onglet Délégation est visible dans la boîte de dialogue Propriétés, cela signifie qu’un nom de principal du service a déjà été créé et que vous pouvez passer directement à la sous-section suivante relative à la configuration des paramètres de délégation.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 aucun onglet Délégation ne figure dans la boîte de dialogue Propriétés, vous pouvez créer manuellement un nom de principal du service sur ce compte, ce qui a pour effet d’ajouter l’onglet Délégation (il s’agit de la façon la plus simple de configurer les paramètres de délégation).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). Il est possible de créer un nom de principal du service à l’aide de l’outil setspn qui est fourni avec Windows (pour ce faire, vous avez besoin de droits d’administrateur de domaine).Creating an SPN can be done using the setspn tool that comes with Windows (you need domain admin rights to create the SPN).

Par exemple, imaginez que le compte de service de passerelle est « PBIEgwTest\GatewaySvc », et que le nom de la machine sur lequel s’exécute le service de passerelle est Machine1.For example, imagine the gateway service account is “PBIEgwTest\GatewaySvc”, and the machine name with the gateway service running is called Machine1. Dans cet exemple, pour définir le nom de principal du service pour le compte de service de passerelle pour cette machine, vous exécuteriez la commande suivante :To set the SPN for the gateway service account for that machine in this example, you would run the following command:

Cette étape étant terminée, nous pouvons passer à la configuration des paramètres de délégation.With that step completed, we can move on to configuring delegation settings.

Configurer les paramètres de délégation sur le compte de service de passerelleConfigure delegation settings on the gateway service account

La deuxième exigence de configuration a trait aux paramètres de délégation sur le compte de service de passerelle.The second configuration requirement is the delegation settings on the gateway service account. Différents outils permettent d’accomplir ces étapes.There are multiple tools you can use to perform these steps. Dans cet article, nous allons utiliser Utilisateurs et ordinateurs Active Directory, composant logiciel enfichable de Microsoft Management Console (MMC) que vous pouvez utiliser pour administrer et publier des informations dans le répertoire, disponible par défaut sur les contrôleurs de domaine.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. Vous pouvez également l’activer via une configuration de fonctionnalité Windows sur d’autres machines.You can also enable it through Windows Feature configuration on other machines.

Nous devons configurer une délégation Kerberos contrainte avec transit de protocole.We need to configure Kerberos Constrained Delegation with protocol transiting. Avec une délégation contrainte, vous devez être explicite concernant les services auxquels vous souhaitez déléguer. Par exemple, seul votre serveur SQL Server ou votre serveur SAP HANA accepte les appels de délégation du compte de service de passerelle.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.

Cette section suppose que vous avez déjà configuré des noms de principal du service pour vos sources de données sous-jacentes (par exemple, 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). Pour savoir comment configurer ces noms de principal du service de serveur de source de données, reportez-vous à la documentation technique du serveur de base de données concerné.To learn how to configure those data source server SPNs, please refer to technical documentation for the respective database server. Vous pouvez également consulter le billet de blog qui décrit le nom de principal du service dont votre application a besoin.You can also look at the blog post that describes What SPN does your app require?

Dans les étapes suivantes, nous supposons un environnement local avec deux machines : un machine passerelle et un serveur de base de données (base de données SQL Server). Et aux fins de cet exemple, nous supposons également les paramètres et noms suivants :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:

  • Nom de la machine de passerelle : PBIEgwTestGWGateway machine name: PBIEgwTestGW
  • Compte de service de passerelle : PBIEgwTest\GatewaySvc (nom d’affichage du compte : connecteur de passerelle)Gateway service account: PBIEgwTest\GatewaySvc (account display name: Gateway Connector)
  • Nom de la machine source de données SQL Server : PBIEgwTestSQLSQL Server data source machine name: PBIEgwTestSQL
  • Compte de service de source de données SQL Server : PBIEgwTest\SQLServiceSQL Server data source service account: PBIEgwTest\SQLService

Étant donné ces exemples de noms et de paramètres, les étapes de configuration sont les suivantes :Given those example names and settings, the configuration steps are the following:

  1. Avec des droits d’administrateur de domaine, lancez Utilisateurs et ordinateurs Active Directory.With domain administrator rights, launch Active Directory Users and Computers.
  2. Cliquez avec le bouton droit sur le compte de service de passerelle (PBIEgwTest\GatewaySvc), puis sélectionnez Propriétés.Right-click on the gateway service account (PBIEgwTest\GatewaySvc) and select Properties.
  3. Sélectionnez l’onglet Délégation.Select the Delegation tab.
  4. Sélectionnez N’approuver cet ordinateur que pour la délégation aux services spécifiés.Select Trust this computer for delegation to specified services only.
  5. Sélectionnez Utiliser tout protocole d’authentification.Select Use any authentication protocol.
  6. Sous Ce compte peut présenter des informations d’identification déléguées à ces services, sélectionnez Ajouter.Under the Services to which this account can present delegated credentials: select Add.
  7. Dans la boîte de dialogue Nouveau, sélectionnez Utilisateurs ou ordinateurs.In the new dialog, select Users or Computers.
  8. Entrez le compte de service pour le service de base de données SQL Server (PBIEgwTest\SQLService), puis sélectionnez OK.Enter the service account for the SQL Server Database service (PBIEgwTest\SQLService) and select OK.
  9. Sélectionnez le nom de principal du service que vous avez créé pour le serveur de base de données.Select the SPN that you created for the database server. Dans notre exemple, le nom de principal du service commence par MSSQLSvc.In our example, the SPN will begin with MSSQLSvc. Si vous avez ajouté le nom de domaine complet (FQDN) et le nom de principal du service NetBIOS pour votre service de base de données, sélectionnez les deux.If you added both the FQDN and the NetBIOS SPN for your database service, select both. Vous ne pouvez en voir qu’un.You may only see one.
  10. Sélectionnez OK.Select OK. Le nom de principal du service devrait à présent figurer dans la liste.You should see the SPN in the list now.
  11. Vous pouvez également sélectionner Développé pour afficher à la fois le nom de domaine complet (FQDN) et le nom de principal du service NetBIOS.Optionally, you can select Expanded to show both the FQDN and NetBIOS SPN in
  12. Si vous avez activé Développé, la boîte de dialogue doit ressembler à ceci.The dialog will look similar to the following if you checked Expanded.

  13. Sélectionnez OK.Select OK.

    Enfin, sur la machine exécutant le service de passerelle (PBIEgwTestGW dans notre exemple), la stratégie locale « Emprunter l’identité d’un client après l’authentification » doit être affectée au compte de service de passerelle.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”. Vous pouvez effectuer/vérifier cela dans l’Éditeur d’objets de stratégie de groupe (gpedit).You can perform/verify this with the Local Group Policy Editor (gpedit).

  14. Sur la machine de passerelle, exécutez gpedit.msc.On the gateway machine, run: gpedit.msc
  15. Accédez à Stratégie de l’ordinateur local > Configuration ordinateur > Paramètres Windows > Paramètres de sécurité > Stratégies locales > Attribution des droits utilisateur, comme illustré dans l’image suivante.Navigate to Local Computer Policy > Computer Configuration > Windows Settings > Security Settings > Local Policies > User Rights Assignment, as shown in the following image.

  16. Dans la liste des stratégies sous Attribution des droits utilisateur, sélectionnez Emprunter l’identité d’un client après l’authentification.From the list of policies under User Rights Assignment, select Impersonate a client after authentication.

    Cliquez avec le bouton droit et ouvrez Propriétés pour Emprunter l’identité d’un client après l’authentification, puis vérifiez la liste des comptes.Right-click and open the Properties for Impersonate a client after authentication and check the list of accounts. Elle doit inclure le compte de service de passerelle (PBIEgwTest\GatewaySvc).It must include the gateway service account (PBIEgwTest\GatewaySvc).

  17. Dans la liste des stratégies sous Attribution des droits utilisateur, sélectionnez Agir en tant que partie du système d’exploitation (SeTcbPrivilege).From the list of policies under User Rights Assignment, select Act as part of the operating system (SeTcbPrivilege). Assurez-vous que le compte de service de passerelle est également inclus dans la liste des comptes.Ensure that the gateway service account is included in the list of accounts as well.
  18. Redémarrez le processus de service Passerelle de données locale.Restart the on-premises data gateway service process.

Exécution d’un rapport Power BIRunning a Power BI report

Après accomplissement de toutes les étapes de configuration décrites précédemment dans cet article, vous pouvez utiliser la page Gérer la passerelle dans Power BI pour configurer la source de données, puis, sous les Paramètres avancés, activer l’authentification unique, avant de publier les rapports et jeux de données dépendant de cette source de données.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.

Cette configuration ne fonctionne pas dans la plupart des cas.This configuration will work in most cases. Toutefois, avec Kerberos, il peut y avoir différentes configurations en fonction de votre environnement.However, with Kerberos there can be different configurations depending on your environment. Si le rapport ne se charge toujours pas, vous devez contacter votre administrateur de domaine pour approfondir la question.If the report still won't load, you'll need to contact your domain administrator to investigate further.

Basculement de la passerelle vers un compte de domaineSwitching the gateway to a domain account

Plus haut dans cet article, nous avons abordé le basculement de la passerelle à partir d’un compte de service local vers une exécution en tant que compte de domaine à l’aide de l’interface utilisateur Passerelle de données locale.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. Les étapes nécessaires à cette fin sont les suivantes.Here are the steps necessary to do so.

  1. Lancez l’outil de configuration Passerelle de données locale.Launch the on-premises data gateway configuration tool.

  2. Sélectionnez le bouton Connexion sur la page principale, puis connectez-vous avec votre compte Power BI.Select the Sign-in button on the main page, and sign in with your Power BI account.
  3. Une fois la connexion établie, sélectionnez l’onglet Paramètre de service.After sign-in is completed, select the Service Settings tab.
  4. Cliquez sur Modifier le compte pour démarrer la procédure pas à pas, comme illustré dans la figure suivante.Click Change account to start the guided walk-through, as shown in the following figure.

Étapes suivantesNext steps

Pour plus d’informations sur la Passerelle de données locale et DirectQuery, consultez les ressources suivantes :For more information about the on-premises data gateway and DirectQuery, check out the following resources: