Usare Kerberos per l'accesso Single Sign-On (SSO) da Power BI alle origini dati localiUse Kerberos for SSO (single sign-on) from Power BI to on-premises data sources

Per usufruire di un'esperienza di connettività Single Sign-On ottimale che abilita l'aggiornamento di report e dashboard di Power BI dai dati locali, è possibile configurare il gateway dati locale 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. Il gateway dati locale semplifica l'accesso Single Sign-On grazie all'uso di DirectQuery per connettersi alle origini dati locali.The on-premises data gateway facilitates single sign-on (SSO) using DirectQuery, which it uses to connect to on-premises data sources.

Sono attualmente supportate le origini dati seguenti: SQL Server, SAP HANA e Teradata, tutte basate sulla delega vincolata 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

Quando un utente interagisce con un report DirectQuery nel servizio Power BI, ogni operazione di filtro incrociato, filtro dei dati, ordinamento e modifica del report può comportare l'esecuzione di query in tempo reale sull'origine dati locale sottostante.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. Quando per l'origine dati è configurato l'accesso Single Sign-On, le query vengono eseguite in base all'identità dell'utente che interagisce con Power BI, ovvero tramite l'esperienza Web o le app Power BI per dispositivi mobili.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). Di conseguenza, ogni utente visualizza con precisione i dati a cui è autorizzato ad accedere nell'origine dati sottostante e, grazie all'accesso Single Sign-On, si evita la memorizzazione nella cache di dati condivisi tra diversi utenti.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.

Esecuzione di una query con accesso Single Sign-On: passaggiRunning a query with SSO - steps that occur

I passaggi per l'esecuzione di una query con accesso Single Sign-On sono tre, come illustrato nel diagramma seguente.A query that runs with SSO consists of three steps, as shown in the following diagram.

Nota

SSO per Oracle non è ancora abilitato, ma è in corso di sviluppo e sarà presto disponibile.SSO for Oracle is not enabled yet, but is under development and coming soon.

Dettagli aggiuntivi per questi tre passaggi:Here are additional details about those steps:

  1. Per ogni query, il servizio Power BI include il nome dell'entità utente quando invia una richiesta di query al gateway configurato.For each query, the Power BI service includes the user principal name (UPN) when sending a query request to the configured gateway.
  2. Il gateway deve eseguire il mapping del nome dell'entità utente di Azure Active Directory a un'identità di Active Directory locale.The gateway needs to map the Azure Active Directory UPN to a local Active Directory identity.

    a.a. Se AAD DirSync (also known as AAD Connect) è configurato, il mapping funziona automaticamente nel gateway.If AAD DirSync (also known as AAD Connect) is configured, then the mapping works automatically in the gateway.

    b.b. In caso contrario, il gateway può cercare ed eseguire il mapping del nome dell'entità utente (UPN) di Azure AD a un utente locale eseguendo una ricerca nel dominio di Active Directory locale.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. Il processo del servizio gateway rappresenta l'utente locale mappato, apre la connessione con il database sottostante e invia la query.The gateway service process impersonates the mapped local user, opens the connection to the underlying database and sends the query. Il gateway non deve essere installato nello stesso computer del database.The gateway does not need to be installed on the same machine as the database.

    • La rappresentazione dell'utente e la connessione al database riescono solo se l'account del servizio gateway è un account di dominio (o SID del servizio) e se la delega vincolata di Kerberos è stata configurata in modo che il database accetti i ticket Kerberos dall'account del servizio gateway.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

    Riguardo il SID del servizio, se è configurato AAD DirSync/Connect e gli account utente sono sincronizzati, il servizio gateway non dovrà eseguire ricerche di Active Directory locale in fase di esecuzione e sarà possibile usare il SID del servizio locale, anziché un account di dominio, per il servizio gateway.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. Le procedure di configurazione della delega vincolata Kerberos descritte in questo documento sono identiche e sono semplicemente basate sul SID del servizio anziché sull'account di 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

Per abilitare l'accesso Single Sign-On per SAP HANA, verificare che le configurazioni specifiche di HANA seguenti siano implementate per SAP:To enable SSO for SAP HANA, you need to ensure the following HANA-specific configurations are met for SAP:

  1. Verificare che il server SAP HANA esegua la versione 2.00.022* o una versione superiore o successiva.Ensure the SAP HANA server is running version 2.00.022* or higher / later.
  2. Nel computer gateway installare il driver ODBC per HANA più recente di SAP.On the gateway machine, install SAP’s latest HANA ODBC driver. La versione minima è la versione ODBC per HANA 2.00.020.00 di agosto 2017.The minimum version is HANA ODBC version 2.00.020.00 from August 2017.

I seguenti collegamenti a patch e aggiornamenti di SAP possono essere utili.The following links to patches and upgrades from SAP may be useful. Si noti che è necessario accedere alle risorse seguenti con l'account di supporto SAP e che SAP potrebbe modificare o aggiornare questi collegamenti.Note that you must log in to the following resources using your SAP Support account, and that SAP may change or update these links.

Errori derivanti da una configurazione Kerberos insufficienteErrors from an insufficient Kerberos configuration

Se il gateway e il server di database sottostante non sono configurati correttamente per la delega vincolata Kerberos, potrebbe essere restituito il messaggio di errore seguente:If the underlying database server and gateway are not configured properly for Kerberos Constrained Delegation, you may receive the following error message:

E i dettagli tecnici associati al messaggio di errore potrebbero avere un aspetto simile al seguente:And the technical details associated with the error message may look like the following:

A causa della configurazione Kerberos insufficiente, il gateway non è riuscito a rappresentare correttamente l'utente di origine e il tentativo di connessione non è riuscito.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.

Preparazione della delega vincolata KerberosPreparing for Kerberos Constrained Delegation

Per il corretto funzionamento della delega vincolata Kerberos, è necessario configurare numerosi elementi, ad esempio i nomi delle entità servizio e le impostazioni di delega negli account del servizio.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.

Prerequisito 1: installare e configurare il gateway dati localePrerequisite 1: Install & configure the on-premises data gateway

Questa versione del gateway dati locale supporta un aggiornamento sul posto, nonché l'acquisizione della proprietà delle impostazioni dei gateway esistenti.This release of the on-premises data gateway supports an in-place upgrade, as well as settings take-over of existing gateways.

Prerequisito 2: eseguire il servizio di Windows gateway come account di dominioPrerequisite 2: Run the gateway Windows service as a domain account

In un'installazione standard, il gateway è in esecuzione come account del servizio locale del computer, ovvero Servizio NT\PBIEgwService, come illustrato nell'immagine seguente: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:

Per abilitare la delega vincolata Kerberos, il gateway deve essere eseguito come account di dominio, a meno che il servizio AAD non sia già sincronizzato con Active Directory locale tramite 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). Affinché la modifica dell'account funzioni correttamente, sono disponibili due opzioni:For this account change to work correctly, you have two options:

  • Se si è iniziato con una versione precedente del gateway dati locale, seguire attentamente tutti e cinque i passaggi in sequenza, inclusa l'esecuzione dello strumento di configurazione del gateway nel passaggio 3, come descritto nell'articolo seguente: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:

    • Modifica dell'account del servizio gateway in un account utente di dominioChanging the gateway service account to a domain user
    • Se è già stata installata la versione in anteprima del gateway dati locale, è disponibile un nuovo approccio guidato tramite interfaccia utente per cambiare gli account del servizio direttamente dallo strumento di configurazione del gateway.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. Vedere la sezione Modifica dell'account del servizio gateway in un account di dominio verso la fine di questo articolo.See the Switching the gateway to a domain account section near the end of this article.

Nota

Se è configurato AAD DirSync/Connect e gli account utente sono sincronizzati, il servizio gateway non dovrà eseguire ricerche di Active Directory locale in fase di esecuzione e sarà possibile usare il SID del servizio locale, anziché un account di dominio, per il servizio gateway.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. La procedura di configurazione della delega vincolata Kerberos descritta in questo articolo corrisponde a questa configurazione ed è semplicemente basata sul SID del servizio anziché sull'account di 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).

Prerequisito 3: ottenere i diritti di amministratore di dominio per configurare i nomi delle entità servizio (SetSPN) e le impostazioni di delega vincolata KerberosPrerequisite 3: Have domain admin rights to configure SPNs (SetSPN) and Kerberos Constrained Delegation settings

Anche se è tecnicamente possibile per un amministratore di dominio concedere temporaneamente o definitivamente a un altro utente i diritti per configurare i nomi delle entità servizio e la delega vincolata senza richiedere diritti di amministratore di dominio, questo non è l'approccio consigliato.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 sezione seguente descrive in modo dettagliato la procedura di configurazione necessaria per il prerequisito 3.In the following section, the configuration steps necessary for Pre-requisite 3 in detail.

Configurazione della delega vincolata Kerberos per il gateway e l'origine datiConfiguring Kerberos Constrained Delegation for the gateway and data source

Per la corretta configurazione del sistema, è necessario impostare o convalidare due elementi:To properly configure the system, we need to configure or validate the following two items:

  1. Se necessario, configurare un nome dell'entità servizio per l'account di dominio del servizio gateway, se non è già stato creato.If needed, configure an SPN for the gateway service domain account (if none are created yet).
  2. Configurare le impostazioni di delega nell'account di dominio del servizio gateway.Configure delegation settings on the gateway service domain account.

Si noti che per eseguire questi due passaggi di configurazione, è necessario essere un amministratore di dominio.Note that you must be a domain administrator to perform those two configuration steps.

Le sezioni seguenti descrivono questi due passaggi.The following sections describe these steps in turn.

Configurare un nome dell'entità servizio per l'account del servizio gatewayConfigure an SPN for the gateway service account

Determinare innanzitutto se è già stato creato un nome dell'entità servizio per l'account di dominio usato come account del servizio gateway, seguendo questa procedura:First, determine whether an SPN was already created for the domain account used as the gateway service account, but following these steps:

  1. Come amministratore di dominio, avviare Utenti e computer di Active DirectoryAs a domain administrator, launch Active Directory Users and Computers
  2. Fare clic con il pulsante destro del mouse sul dominio, scegliere Trova e digitare il nome dell'account dell'account del servizio gatewayRight-click on the domain, select Find, and type in the account name of the gateway service account
  3. Nei risultati della ricerca fare clic con il pulsante destro del mouse sull'account del servizio gateway e scegliere Proprietà.In the search result, right-click on the gateway service account and select Properties.

    • Se la scheda Delega è visualizzata nella finestra di dialogo Proprietà, significa che un nome dell'entità servizio è già stato creato ed è possibile passare alla sottosezione sulla configurazione della delega.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.

Se la scheda Delega non è visualizzata nella finestra di dialogo Proprietà, è possibile creare manualmente un nome dell'entità servizio per l'account e la scheda Delega verrà aggiunta. Questo è il modo più facile per configurare le impostazioni di delega.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). Per creare un nome dell'entità servizio è possibile usare lo strumento setspn incluso in Windows. Per creare il nome dell'entità servizio sono necessari diritti di amministratore.Creating an SPN can be done using the setspn tool that comes with Windows (you need domain admin rights to create the SPN).

Ad esempio, si supponga che l'account del servizio gateway sia "PBIEgwTest\GatewaySvc" e il nome computer in cui è in esecuzione il servizio gateway sia Computer1.For example, imagine the gateway service account is “PBIEgwTest\GatewaySvc”, and the machine name with the gateway service running is called Machine1. Per impostare il nome dell'entità servizio per l'account del servizio gateway per il computer in questo esempio, sarà necessario eseguire il comando seguente:To set the SPN for the gateway service account for that machine in this example, you would run the following command:

Dopo aver completato questo passaggio, sarà possibile procedere alla configurazione delle impostazioni di delega.With that step completed, we can move on to configuring delegation settings.

Configurare le impostazioni di delega nell'account del servizio gatewayConfigure delegation settings on the gateway service account

Il secondo requisito di configurazione riguarda le impostazioni di delega nell'account del servizio gateway.The second configuration requirement is the delegation settings on the gateway service account. Per eseguire questi passaggi sono disponibili vari strumenti.There are multiple tools you can use to perform these steps. Questo articolo mostra l'uso di Utenti e computer di Active Directory, che è uno snap-in di MMC (Microsoft Management Console) che permette di gestire e pubblicare informazioni nella directory e disponibile nei controller di dominio per impostazione predefinita.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. È anche possibile abilitarlo tramite la configurazione di Funzionalità di Windows in altri computer.You can also enable it through Windows Feature configuration on other machines.

È necessario configurare la delega vincolata Kerberos con protocollo in transito.We need to configure Kerberos Constrained Delegation with protocol transiting. Con la delega vincolata, è necessario indicare in modo esplicito i servizi da delegare, ad esempio solo il server SQL o il server SAP HANA accetteranno le chiamate di delega dall'account del servizio gateway.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.

Questa sezione presuppone che i nomi delle entità servizio per le origini dati sottostanti, ad esempio SQL Server, SAP HANA, Teradata e così via, siano già stati configurati.This section assumes you have already configured SPNs for your underlying data sources (such as SQL Server, SAP HANA, Teradata, so on). Per informazioni su come configurare tali nomi di entità servizio dei server delle origini dati, vedere la documentazione tecnica per i rispettivi server di database.To learn how to configure those data source server SPNs, please refer to technical documentation for the respective database server. È anche possibile vedere questo post di blog alla sezione What SPN does your app require?, in cui viene descritto il tipo di nome dell'entità servizio richiesto dall'app.You can also look at the blog post that describes What SPN does your app require?

I passaggi successivi si basano su un ambiente locale con due computer: un computer gateway e un server di database (database SQL Server) e ai fini di questo esempio verranno usati i nomi e le impostazioni seguenti: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:

  • Nome computer gateway: PBIEgwTestGWGateway machine name: PBIEgwTestGW
  • Account del servizio gateway: PBIEgwTest\GatewaySvc (nome visualizzato dell'account: Gateway Connector)Gateway service account: PBIEgwTest\GatewaySvc (account display name: Gateway Connector)
  • Nome computer dell'origine dati SQL Server: PBIEgwTestSQLSQL Server data source machine name: PBIEgwTestSQL
  • Account del servizio dell'origine dati SQL Server: PBIEgwTest\SQLServiceSQL Server data source service account: PBIEgwTest\SQLService

In base a questi nomi e impostazioni, la procedura di configurazione è la seguente:Given those example names and settings, the configuration steps are the following:

  1. Con diritti di amministratore di dominio, avviare Utenti e computer di Active Directory.With domain administrator rights, launch Active Directory Users and Computers.
  2. Fare clic con il pulsante destro del mouse sull'account del servizio gateway (PBIEgwTest\GatewaySvc) e scegliere Proprietà.Right-click on the gateway service account (PBIEgwTest\GatewaySvc) and select Properties.
  3. Selezionare la scheda Delega.Select the Delegation tab.
  4. Selezionare Computer attendibile per la delega solo ai servizi specificati.Select Trust this computer for delegation to specified services only.
  5. Selezionare Utilizza un qualsiasi protocollo di autenticazione.Select Use any authentication protocol.
  6. In Servizi ai quali l'account può presentare credenziali delegate: selezionare Aggiungi.Under the Services to which this account can present delegated credentials: select Add.
  7. Nella nuova finestra di dialogo selezionare Utenti o computer.In the new dialog, select Users or Computers.
  8. Immettere l'account del servizio per il servizio Database di SQL Server (PBIEgwTest\SQLService) e scegliere OK.Enter the service account for the SQL Server Database service (PBIEgwTest\SQLService) and select OK.
  9. Selezionare il nome dell'entità servizio creato per il server di database.Select the SPN that you created for the database server. In questo esempio il nome dell'entità servizio inizierà con MSSQLSvc.In our example, the SPN will begin with MSSQLSvc. Se sono stati aggiunti sia il nome di dominio completo sia il nome dell'entità servizio NetBIOS, verranno selezionati entrambi,If you added both the FQDN and the NetBIOS SPN for your database service, select both. ma ne verrà visualizzato solo uno.You may only see one.
  10. Selezionare OK.Select OK. A questo punto verrà visualizzato il nome SPN nell'elenco.You should see the SPN in the list now.
  11. Facoltativamente, è possibile selezionare Espansa per visualizzare sia il nome di dominio completo sia il nome SPN di NetBIOS nell'elenco.Optionally, you can select Expanded to show both the FQDN and NetBIOS SPN in
  12. Se la casella di controllo Espansa è selezionata, la finestra di dialogo sarà simile alla seguente.The dialog will look similar to the following if you checked Expanded.

  13. Selezionare OK.Select OK.

    Infine, nel computer in cui è in esecuzione il servizio gateway, PBIEgwTestGW in questo esempio, è necessario concedere all'account del servizio gateway i criteri locali "Rappresenta un client dopo l'autenticazione".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”. Per eseguire questa operazione o per verificare, è possibile usare Editor Criteri di gruppo locali (gpedit).You can perform/verify this with the Local Group Policy Editor (gpedit).

  14. Nel computer gateway eseguire gpedit.mscOn the gateway machine, run: gpedit.msc
  15. Passare a Criteri del computer locale > Configurazione computer > Impostazioni di Windows > Impostazioni di sicurezza > Criteri locali > Assegnazione diritti utente, come mostrato nell'immagine seguente.Navigate to Local Computer Policy > Computer Configuration > Windows Settings > Security Settings > Local Policies > User Rights Assignment, as shown in the following image.

  16. Nell'elenco di criteri in Assegnazione diritti utente selezionare Rappresenta un client dopo l'autenticazione.From the list of policies under User Rights Assignment, select Impersonate a client after authentication.

    Fare clic con il pulsante destro del mouse su Rappresenta un client dopo l'autenticazione, scegliere Proprietà e quindi controllare l'elenco degli accountRight-click and open the Properties for Impersonate a client after authentication and check the list of accounts. e accertarsi che includa l'account del servizio gateway (PBIEgwTest\GatewaySvc).It must include the gateway service account (PBIEgwTest\GatewaySvc).

  17. Nell'elenco di criteri in Diritti assegnazione utente selezionare Agire come parte del sistema operativo (SeTcbPrivilege).From the list of policies under User Rights Assignment, select Act as part of the operating system (SeTcbPrivilege). Anche in questo caso, accertarsi che l'account del servizio gateway sia incluso nell'elenco degli account.Ensure that the gateway service account is included in the list of accounts as well.
  18. Riavviare il processo del servizio Gateway dati locale.Restart the on-premises data gateway service process.

Esecuzione di un report di Power BIRunning a Power BI report

Dopo aver eseguito tutti i passaggi di configurazioni indicati in precedenza in questo articolo, è possibile usare la pagina Gestisci gateway in Power BI per configurare l'origine dati, passare alle Impostazioni avanzate per abilitare l'accesso Single Sign-On e quindi pubblicare report e set di dati associati all'origine dati specificata.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.

Questa configurazione funzionerà nella maggior parte dei casi.This configuration will work in most cases. Con Kerberos, tuttavia, potrebbero essere necessarie configurazioni diverse a seconda dell'ambiente in uso.However, with Kerberos there can be different configurations depending on your environment. Se il report non viene caricato, contattare l'amministratore di dominio per ulteriori indagini.If the report still won't load, you'll need to contact your domain administrator to investigate further.

Modifica dell'account del servizio gateway in un account di dominioSwitching the gateway to a domain account

Precedentemente in questo articolo è stata illustrata la procedura per modificare l'esecuzione del gateway dall'account del servizio locale a un account di dominio tramite l'interfaccia utente Gateway dati 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. Di seguito sono riportati in dettaglio i passaggi necessari.Here are the steps necessary to do so.

  1. Avviare lo strumento di configurazione del gateway dati locale.Launch the on-premises data gateway configuration tool.

  2. Selezionare il pulsante Accedi nella pagina principale ed eseguire l'accesso con l'account Power BI.Select the Sign-in button on the main page, and sign in with your Power BI account.
  3. Dopo aver eseguito l'accesso, selezionare la scheda Impostazioni servizio.After sign-in is completed, select the Service Settings tab.
  4. Fare clic su Cambia account per avviare la procedura guidata, come illustrato nella figura seguente.Click Change account to start the guided walk-through, as shown in the following figure.

Passaggi successiviNext steps

Per altre informazioni sul gateway dati locale e su DirectQuery, vedere le risorse seguenti:For more information about the on-premises data gateway and DirectQuery, check out the following resources: