Incorporare un report in un’istanza di SQL Server Analysis Services (SSAS) locale
SI APPLICA A: L'app possiede dati di proprietà dell'utente
Questo articolo illustra come incorporare contenuto di Power BI con una connessione dinamica Analysis Services Tabular Model locale in un'applicazione dati standard di proprietà di Power BI standard. Questo articolo si applica a tutti i modelli SSAS di connessione dinamica indipendentemente dal fatto che implementino o no la sicurezza a livello di riga.
In questo scenario, il database si trova nel modello SSAS (locale) e il motore di Power BI si connette a tale database tramite un gateway. I ruoli di sicurezza e le autorizzazioni, se presenti, sono definiti nel modello SSAS e non in Power BI Desktop.
A chi si rivolge questo articolo
Questo articolo è principalmente rilevante per gli ISV che hanno già una configurazione del database locale (SSAS) (con o senza sicurezza a livello di riga) e vogliono incorporare il contenuto direttamente da questa posizione.
Configurazione ISV
La sicurezza a livello di riga locale è disponibile solo con una connessione dinamica, ma è possibile creare una connessione dinamica a qualsiasi database, indipendentemente dal fatto che implementi o no la sicurezza a livello di riga. Valuta gli ambiti seguenti:
- Database senza ruoli di sicurezza a livello di riga configurati
- Database con membri che appartengono a uno o più ruoli
- Database con ruoli di sicurezza statici o dinamici
Per incorporare un report da un modello SSAS, è necessario eseguire le azioni seguenti:
Configurare il gateway
Aggiungere una connessione all'origine dati del gateway SSAS
Immettere il nome dell'origine dati, il tipo di origine dati, il server, il database, un nome utente e una password riconosciuti da Active Directory.
Per ulteriori informazioni sulla creazione e la gestione di un gateway, vedere Aggiungere o rimuovere un'origine dati del gateway.
Concedere all'entità servizio o all'utente master le autorizzazioni per il gateway
Per l'utente che genera il token di incorporamento è necessaria anche una delle autorizzazioni seguenti:
Autorizzazioni di amministratore del gateway
Autorizzazione per rappresentare l'origine dati (ReadOverrideEffectiveIdentity)
Gli utenti con autorizzazione di rappresentazione (override) hanno un'icona a forma di chiave accanto al nome.
Seguire queste istruzioni per concedere le autorizzazioni del gateway all'utente master, all'entità servizio o al profilo dell'entità servizio.
Eseguire una di queste operazioni:
Eseguire il mapping dei nomi utente
Se i nomi utente nella directory locale e nella directory Microsoft Entra sono diversi e si desidera visualizzare i dati nel portale, è necessario creare una tabella di mapping utente che esegue il mapping di ogni utente o ruolo in Microsoft Entra ID agli utenti del database locale. Per istruzioni sul mapping dei nomi utente, andare a Nuovo mapping manuale del nome utente
Per ulteriori informazioni, vedere Eseguire il mapping dei nomi utente per le origini dati di Analysis Services.
Creare una connessione dinamica
Dopo aver configurato l'ambiente, creare una connessione dinamica tra Power BI Desktop e SQL Server e creare il report.
Avviare Power BI Desktop e selezionare Recupera dati>Database.
Dall'elenco delle origini dati selezionare Database di SQL Server Analysis Services, quindi Connetti.
Inserire i dettagli dell'istanza tabulare di Analysis Services e selezionare Connessione dinamica. Quindi, seleziona OK.
Generare un token di incorporamento
Per incorporare il report nello scenario di incorporamento per i clienti, generare un token di incorporamento che passa l'identità effettiva a Power BI. Tutte le connessioni dinamiche ai motori AS necessitano di un'identità efficace anche se non è implementata nessuna sicurezza a livello di riga.
Se non è stata configurata nessuna sicurezza a livello di riga, solo l'amministratore può accedere al database in modo da usare l'amministratore come identità effettiva.
Le informazioni necessarie per generare un token di incorporamento dipendono dal fatto che si è connessi a Power BI tramite un'entità servizio o come utente master e anche che il database dispone di sicurezza a livello di riga.
- Token di incorporamento utente master
- Token di incorporamento dell'entità servizio o del profilo dell'entità servizio
Per generare il token di incorporamento, fornire le informazioni seguenti:
- Nome utente (Facoltativo se non c’è sicurezza a livello di riga. Obbligatorio in caso di sicurezza a livello di riga) - Un nome utente valido riconosciuto da SSAS che sarà usato come identità effettiva. Se il database non usa la sicurezza a livello di riga e non viene specificato nessun nome utente, vengono usate le credenziali dell'utente master.
- Ruolo (obbligatorio in caso di sicurezza a livello di riga): il report visualizzerà solo i dati se l'identità effettiva è un membro del ruolo.
Esempio:
public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
PowerBIClient pbiClient = this.GetPowerBIClient();
// Define the user identity and roles. Use one of the following:
var rlsidentity = new EffectiveIdentity( //If no RLS
username: "Domain\\Username", // can also be username@contoso.com
datasets: new List<string>{ datasetId.ToString()}
)
var rlsidentity = new EffectiveIdentity( // If RLS
username: "username@contoso.com",
roles: new List<string>{ "MyRole" },
datasets: new List<string>{ datasetId.ToString()}
)
// Create a request for getting an embed token for the rls identity defined above
var tokenRequest = new GenerateTokenRequestV2(
reports: new List<GenerateTokenRequestV2Report>() { new GenerateTokenRequestV2Report(reportId) },
datasets: datasetIds.Select(datasetId => new GenerateTokenRequestV2Dataset(datasetId.ToString())).ToList(),
targetWorkspaces: targetWorkspaceId != Guid.Empty ? new List<GenerateTokenRequestV2TargetWorkspace>() { new GenerateTokenRequestV2TargetWorkspace(targetWorkspaceId) } : null,
identities: new List<EffectiveIdentity> { rlsIdentity }
);
// Generate an embed token
var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);
return embedToken;
}
È ora possibile incorporare il report nell'app e questo filtra i dati in base alle autorizzazioni dell'utente che accede al report.
Considerazioni e limitazioni
CustomData non è supportato.