Usare Security Assertion Markup Language per l'accesso SSO da Power BI alle origini dati locali
Abilitando l'accesso Single Sign-On (SSO), è possibile semplificare l'aggiornamento dei dati dai report e dai dashboard di Power BI da origini locali, rispettando le autorizzazioni a livello di utente configurate in tali origini. Per abilitare la connettività SSO facile, usare Security Assertion Markup Language (SAML).
Nota
È possibile connettersi a una sola origine dati usando Single Sign-On SAML con un gateway dati locale. Per connettersi a un'origine dati aggiuntiva tramite SINGLE Sign-On SAML, è necessario usare un gateway dati locale diverso.
Origini dati supportate per SAML
Microsoft attualmente supporta SAP HANA con SAML. Per altre informazioni sull'impostazione e la configurazione di Single Sign-On per SAP HANA tramite SAML, vedere SSO SAML per la piattaforma BI per HANA.
Sono supportate ulteriori origini dati con Kerberos (incluso SAP HANA).
Per SAP HANA è consigliabile abilitare la crittografia prima di stabilire una connessione SSO SAML. Per abilitare la crittografia, configurare il server HANA in modo che accetti connessioni crittografate e quindi configurare il gateway in modo che usi la crittografia per la comunicazione con il server HANA. Poiché per impostazione predefinita il driver ODBC per HANA non crittografa le asserzioni SAML, l'asserzione SAML firmata viene inviata dal gateway al server HANA in chiaro ed è vulnerabile all'intercettazione e al riutilizzo da parte di terze parti.
Importante
Poiché SAP non supporta più OpenSSL, Microsoft ha interrotto anche il supporto. Le connessioni esistenti continuano a funzionare, ma non è più possibile creare nuove connessioni. Usare invece SAP Cryptographic Library (CommonCryptoLib) o sapcrypto.
Configurare il gateway e l'origine dati
Per usare SAML, è necessario stabilire una relazione di trust tra i server HANA per cui si vuole abilitare l'accesso SSO e il gateway. In questo scenario il gateway funge da provider di identità (IdP) SAML. È possibile stabilire questa relazione in vari modi. SAP consiglia di usare CommonCryptoLib per completare i passaggi di installazione. Per altre informazioni, vedere la documentazione ufficiale di SAP.
Creare i certificati
È possibile stabilire una relazione di trust tra un server HANA e il provider di identità del gateway usando la firma del certificato x509 del provider di identità del gateway con un'autorità di certificazione (CA) radice attendibile per il server HANA.
Per creare i certificati, eseguire le operazioni seguenti:
Nel dispositivo che esegue SAP HANA creare una cartella vuota per archiviare i certificati e quindi passare a tale cartella.
Creare i certificati radice eseguendo il comando seguente:
openssl req -new -x509 -newkey rsa:2048 -days 3650 -sha256 -keyout CA_Key.pem -out CA_Cert.pem -extensions v3_ca'''
Assicurarsi di copiare e salvare la passphrase per usare questo certificato per firmare altri certificati. Verranno visualizzati i file CA_Cert.pem e CA_Key.pem creati.
Creare i certificati IdP eseguendo il comando seguente:
openssl req -newkey rsa:2048 -days 365 -sha256 -keyout IdP_Key.pem -out IdP_Req.pem -nodes
Verranno visualizzati i file IdP_Key.pem e IdP_Req.pem creati.
Firmare i certificati IdP con i certificati radice:
openssl x509 -req -days 365 -in IdP_Req.pem -sha256 -extensions usr_cert -CA CA_Cert.pem -CAkey CA_Key.pem -CAcreateserial -out IdP_Cert.pem
Verranno visualizzati i file CA_Cert.srl e IdP_Cert.pem creati. In questo momento, si è interessati solo al file IdP_Cert.pem.
Creare il mapping per il certificato del provider di identità SAML
Per creare il mapping per il certificato del provider di identità SAML, eseguire le operazioni seguenti:
In SAP HANA Studio fare clic con il pulsante destro del mouse sul nome del server SAP HANA e quindi scegliere Sicurezza>Apri Console di sicurezza>Provider di identità SAML.
Selezionare l'opzione Libreria di crittografia SAP. Non usare l'opzione Libreria crittografica OpenSSL, deprecata da SAP.
Per importare il certificato firmato IdP_Cert.pem, selezionare il pulsante Importa blu, illustrato nella figura seguente:
Ricordarsi di assegnare un nome per il provider di identità.
Importare e creare i certificati firmati in HANA
Per importare e creare i certificati firmati in HANA, eseguire le operazioni seguenti:
In SAP HANA Studio eseguire la query seguente:
CREATE CERTIFICATE FROM '<idp_cert_pem_certificate_content>'
Ecco un esempio:
CREATE CERTIFICATE FROM '-----BEGIN CERTIFICATE----- MIIDyDCCArCgA...veryLongString...0WkC5deeawTyMje6 -----END CERTIFICATE----- '
Se non esiste un ambiente di sicurezza personale (PSE) con scopo SAML, crearne uno eseguendo la query seguente in SAP HANA Studio:
CREATE PSE SAMLCOLLECTION; set pse SAMLCOLLECTION purpose SAML;
Aggiungere il certificato firmato appena creato al PSE eseguendo il comando seguente:
alter pse SAMLCOLLECTION add CERTIFICATE <certificate_id>;
Ad esempio:
alter pse SAMLCOLLECTION add CERTIFICATE 1978320;
È possibile controllare l'elenco dei certificati creati eseguendo la query seguente:
select * from PUBLIC"."CERTIFICATES"
Il certificato è ora installato correttamente. Per confermare l'installazione, è possibile eseguire la query seguente:
select * from "PUBLIC"."PSE_CERTIFICATES"
Eseguire il mapping dell'utente
Per eseguire il mapping dell'utente, eseguire le operazioni seguenti:
In SAP HANA Studio selezionare la cartella Security (Sicurezza).
Espandere Utenti e quindi selezionare l'utente a cui si vuole eseguire il mapping dell'utente di Power BI.
Selezionare la casella di controllo SAML e quindi selezionare Configura come nella figura seguente:
Selezionare il provider di identità creato nella sezione Crea mapping per il certificato del provider di identità SAML. Come Identità esterna immettere l'UPN dell'utente di Power BI, in genere l'indirizzo di posta elettronica usato dall'utente per accedere a Power BI, e quindi selezionare Aggiungi.
Se il gateway è stato configurato per l'uso dell'opzione di configurazione ADUserNameReplacementProperty, immettere il valore che sostituirà l'UPN originale dell'utente di Power BI. Ad esempio, se si imposta ADUserNameReplacementProperty su SAMAccountName, immettere il nome SAMAccountName dell'utente.
Configurare il gateway
Dopo aver configurato il certificato e l'identità del gateway, convertire il certificato in un formato di file PFX e quindi configurare il gateway per l'uso del certificato eseguendo le operazioni seguenti:
Convertire il certificato in formato PFX eseguendo il comando seguente. Questo comando assegna al file risultante il nome samlcert.pfx e imposta root come password, come mostrato qui:
openssl pkcs12 -export -out samltest.pfx -in IdP_Cert.pem -inkey IdP_Key.pem -passin pass:root -passout pass:root
Copiare il file PFX nel computer gateway:
a. Fare doppio clic su samltest.pfx e quindi selezionare Computer locale>Avanti.
b. Immettere la password e quindi selezionare Avanti.
c. Selezionare Inserire tutti i certificati nell'archivio seguente e quindi selezionare Sfoglia>Personale>OK.
d. Selezionare Avanti e quindi Fine.
Per concedere all'account di servizio gateway l'accesso alla chiave privata del certificato, eseguire questa procedura:
a. Nel computer gateway eseguire Microsoft Management Console (MMC).
b. In MMC selezionare File>Aggiungi/Rimuovi snap-in.
c. Selezionare Certificati>Aggiungi e quindi selezionare Account computer>Avanti.
d. Selezionare Local Computer (Computer locale) >Finish (Fine) >OK.
e. Espandere Certificati>Personale>Certificati e poi cercare il certificato.
f. Fare clic con il pulsante destro del mouse sul certificato e selezionare Tutte le attività>Gestisci chiavi private.
g. Aggiungere l'account di servizio gateway all'elenco. Per impostazione predefinita, l'account è NT SERVICE\PBIEgwService. È possibile individuare l'account in cui è in esecuzione il servizio gateway eseguendo services.msc e cercando il servizio gateway dati locale.
Aggiungere infine l'identificazione personale del certificato alla configurazione del gateway:
Per visualizzare l'elenco dei certificati nel computer, eseguire il comando PowerShell seguente:
Get-ChildItem -path cert:\LocalMachine\My
Copiare l'identificazione personale per il certificato creato.
Passare alla directory del gateway, che è C:\Programmi\On-premises data gateway per impostazione predefinita.
Aprire PowerBI.DataMovement.Pipeline.GatewayCore.dll.config e cercare la sezione SapHanaSAMLCertThumbprint. Incollare l'identificazione personale copiata nel passaggio 2.
Riavviare il servizio gateway.
Eseguire un report di Power BI
Ora è possibile usare la pagina Gestisci gateway in Power BI per configurare l'origine dati SAP HANA. In Impostazioni avanzate abilitare SSO tramite SAML. Così facendo, è possibile pubblicare report e set di dati associati all'origine dati.
Nota
SSO usa l'autenticazione di Windows per assicurarsi che l'account di Windows possa accedere al computer gateway. Se non si è certi, assicurarsi di aggiungere NT-AUTHORITY\Authenticated Users (S-1-5-11) al gruppo "Utenti" del computer locale.
Risolvere i problemi relativi all'uso di SAML per l'accesso Single Sign-On a SAP HANA
Questa sezione illustra i passaggi completi per la risoluzione dei problemi relativi all'uso di SAML per l'accesso Single Sign-On a SAP HANA. L'uso di questi passaggi consente di diagnosticare automaticamente e correggere eventuali problemi che potrebbero verificarsi.
Credenziali rifiutate
Dopo aver configurato l'accesso SSO basato su SAML, è possibile che venga visualizzato l'errore seguente nel portale di Power BI: "Le credenziali specificate non possono essere usate per l'origine SapHana". Questo errore indica che le credenziali SAML sono state rifiutate da SAP HANA.
Le tracce di autenticazione sul lato server offrono informazioni dettagliate per la risoluzione dei problemi relativi alle credenziali in SAP HANA. Per configurare la traccia per il server SAP HANA, seguire questa procedura:
Nel server SAP HANA attivare la traccia di autenticazione eseguendo la query seguente:
ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') set ('trace', 'authentication') = 'debug' with reconfigure
Riprodurre il problema.
In SAP HANA Studio aprire la console di amministrazione e quindi selezionare la scheda File di diagnosi.
Aprire la traccia del server di indicizzazione più recente e quindi cercare SAMLAuthenticator.cpp.
È necessario trovare un messaggio di errore dettagliato che indica la causa principale, come mostrato nell'esempio seguente:
[3957]{-1}[-1/-1] 2018-09-11 21:40:23.815797 d Authentication SAMLAuthenticator.cpp(00091) : Element '{urn:oasis:names:tc:SAML:2.0:assertion}Assertion', attribute 'ID': '123123123123123' is not a valid value of the atomic type 'xs:ID'. [3957]{-1}[-1/-1] 2018-09-11 21:40:23.815914 i Authentication SAMLAuthenticator.cpp(00403) : No valid SAML Assertion or SAML Protocol detected
Dopo aver completato la risoluzione dei problemi, disattivare la traccia di autenticazione eseguendo la query seguente:
ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') UNSET ('trace', 'authentication');
Verificare e risolvere gli errori del gateway
Per seguire le procedure descritte in questa sezione, è necessario raccogliere i log del gateway.
Errore SSL (certificato)
Sintomi di errore
Questo problema presenta più sintomi. Quando si tenta di aggiungere una nuova origine dati, è possibile che venga visualizzato un messaggio di errore simile al seguente:
Unable to connect: We encountered an error while trying to connect to . Details: "We could not register this data source for any gateway instances within this cluster. Please find more details below about specific errors for each gateway instance."
Quando si tenta di creare o aggiornare un report, potrebbe essere visualizzato un messaggio di errore simile a quello nell'immagine seguente:
Quando si esamina mashup[date]*.log, verrà visualizzato il messaggio di errore seguente:
A connection was successfully established with the server, but then an error occurred during the login process and the certificate chain was issued by an authority that is not trusted
Risoluzione
Per risolvere questo errore SSL, passare alla connessione all'origine dati e quindi, nell'elenco a discesa Convalida certificato server selezionare No, come illustrato nell'immagine seguente:
Dopo aver selezionato questa impostazione, il messaggio di errore non verrà più visualizzato.
Errore SignXML del gateway
L'errore SignXML del gateway può essere il risultato di impostazioni di SapHanaSAMLCertThumbprint non corrette oppure può trattarsi di un problema con il server HANA. Le voci nei log del gateway consentono di identificare dove si trova il problema e come risolverlo.
Sintomi di errore
Voci di log per SignXML: Found the cert...
: se il file GatewayInfo[date].log contiene questo errore, è stato trovato il certificato SignXML e le attività di risoluzione dei problemi devono concentrarsi sui passaggi trovati nella sezione "Verificare e risolvere i problemi sul lato server HANA".
Voci di log per Couldn't find saml cert
: se il file GatewayInfo[date].log contiene questo errore, SapHanaSAMLCertThumbprint viene impostato in modo non corretto. Nella sezione di risoluzione seguente viene descritto come risolvere il problema.
Risoluzione
Per impostare correttamente SapHanaSAMLCertThumbprint, seguire le istruzioni nella sezione "Configurare il gateway". Le istruzioni iniziano con Infine, aggiungere l'identificazione personale del certificato alla configurazione del gateway.
Dopo aver modificato il file di configurazione, è necessario riavviare il servizio gateway per rendere effettiva la modifica.
Convalida
Quando SapHanaSAMLCertThumbprint è impostato correttamente, i log del gateway avranno voci che includono SignXML: Found the cert...
. A questo punto, si dovrebbe essere in grado di passare alla sezione "Verificare e risolvere i problemi sul lato server HANA".
Se il gateway non è in grado di usare il certificato per firmare l'asserzione SAML, è possibile che venga visualizzato un errore nei log simili ai seguenti:
GatewayPipelineErrorCode=DM_GWPipeline_UnknownError GatewayVersion= InnerType=CryptographicException InnerMessage=<pi>Signing key is not loaded.</pi> InnerToString=<pi>System.Security.Cryptography.CryptographicException: Signing key is not loaded.
Per risolvere questo errore, seguire le istruzioni che iniziano con il passaggio 3 nella sezione "Configurare il gateway".
Dopo aver modificato la configurazione, riavviare il servizio gateway per rendere effettiva la modifica.
Verificare e risolvere i problemi relativi al lato server HANA
Usare le soluzioni in questa sezione se il gateway può trovare il certificato e firmare l'asserzione SAML, ma si verificano ancora errori. Sarà necessario raccogliere le tracce di autenticazione HANA, come descritto in precedenza nella sezione "Credenziali rifiutate".
Provider di identità SAML
La presenza della stringa Found SAML provider
nelle tracce di autenticazione HANA indica che il provider di identità SAML è configurato correttamente. Se la stringa non è presente, la configurazione non è corretta.
Risoluzione
Prima di tutto, determinare se l'organizzazione usa OpenSSL o commoncrypto come sslcryptoprovider. Per determinare quale provider viene usato, eseguire le operazioni seguenti:
Aprire SAP HANA Studio.
Aprire la Console di amministrazione per il tenant in uso.
Selezionare la scheda Configurazione e usare sslcryptoprovider come filtro, come illustrato nell'immagine seguente:
Verificare quindi che la libreria di crittografia sia impostata correttamente eseguendo le operazioni seguenti:
Passare a Console di sicurezza in SAP HANA Studio selezionando la scheda Provider di identità SAML ed eseguire una delle operazioni seguenti:
- Se sslcryptoprovider è OpenSSL, selezionare Libreria di crittografia OpenSSL.
- Se sslcryptoprovider è commonCrypto, selezionare Libreria di crittografia SAP.
Nell'immagine seguente è selezionata la Libreria di crittografia SAP:
Distribuire le modifiche selezionando il pulsante Distribuisci in alto a destra, come illustrato nell'immagine seguente:
Convalida
Quando le tracce sono configurate correttamente, segnalano Found SAML provider
e non segnalano SAML Provider not found
. È possibile passare alla sezione successiva "Risolvere i problemi relativi alla firma dell'asserzione SAML".
Se il provider di crittografia è impostato ma SAML Provider not found
viene comunque segnalato, cercare una stringa nella traccia che inizia con il testo seguente:
Search SAML provider for certificate with subject =
In tale stringa verificare che l'oggetto e l'autorità emittente siano esattamente gli stessi visualizzati nella scheda Provider di identità SAML nella Console di sicurezza. Una differenza di un singolo carattere può causare il problema. Se si rileva una differenza, è possibile risolvere il problema nella libreria di crittografia SAP in modo che le voci corrispondano esattamente.
Se la modifica della libreria di crittografia SAP non risolve il problema, è possibile modificare manualmente i campi Rilasciato a e Rilasciato da semplicemente facendo doppio clic su di essi.
Risolvere i problemi relativi alla firma dell'asserzione SAML
È possibile trovare tracce di autenticazione HANA che contengono voci simili alle seguenti:
[48163]{-1}[-1/-1] 2020-09-11 21:15:18.896165 i Authentication SAMLAuthenticator.cpp(00398) : Unable to verify XML signature
[48163]{-1}[-1/-1] 2020-09-11 21:15:18.896168 i Authentication MethodSAML.cpp(00103) : unsuccessful login attempt with SAML ticket!
La presenza di tali voci indica che la firma non è attendibile.
Risoluzione
Se si usa OpenSSL come sslcryptoprovider, verificare se i file trust.pem e key.pem si trovano nella directory SSL. Per altre informazioni, vedere il blog SAP Protezione delle comunicazioni tra SAP HANA Studio e SAP HANA Server tramite SSL.
Se si usa commoncrypto come sslcryptoprovider, verificare se è presente una raccolta con il certificato nel tenant.
Convalida
Quando le tracce sono configurate correttamente, segnalano Found valid XML signature
.
Risolvere i problemi relativi al mapping UPN
È possibile trovare tracce HANA contenenti voci simili alle seguenti:
SAMLAuthenticator.cpp(00886) : Assertion Subject NameID: `johnny@contoso.com` SAMLAuthenticator.cpp(00398) : Database user does not exist
L'errore indica che nameId johnny@contoso.com
viene trovato nelle asserzioni SAML, ma non esiste o non è mappato correttamente nel server HANA.
Risoluzione
Passare all'utente del database HANA e, sotto la casella di controllo SAML selezionata, selezionare il collegamento Configura. Viene visualizzata la finestra seguente:
Come descritto nel messaggio di errore, HANA stava tentando di trovare johnny@contoso.com, ma l'identità esterna viene visualizzata solo come johnny. Questi due valori devono corrispondere. Per risolvere il problema, in Identità esterna modificare il valore in johnny@contoso.com. Si noti che questo valore fa distinzione tra maiuscole e minuscole.
Contenuto correlato
Per altre informazioni sul gateway dati locale e su DirectQuery, vedere le risorse seguenti:
- Informazioni sul gateway dati locale
- DirectQuery in Power BI
- Data sources supported by DirectQuery (Origini dati supportate da DirectQuery)
- DirectQuery e SAP Business Warehouse (BW)
- DirectQuery e SAP HANA