Incorporare un report in un’istanza di SQL Server Analysis Services (SSAS) locale

Si applica a:✅ Analisi incorporata di Power BI per i tuoi clienti (App-owns-data)

Questo articolo illustra come incorporare contenuto di Power BI con una connessione attiva a un localemodello tabulare di Analysis Services in un'applicazione Power BI App Owns Data standard. Questo articolo si applica a tutti i modelli SSAS con connessione live, indipendentemente dal fatto che implementino o meno RLS.

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 è particolarmente rilevante per gli ISV che dispongono già di un database on-premises (SSAS), con o senza sicurezza a livello di riga (RLS), e vogliono incorporare contenuti direttamente da tale database.

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. Questo include:

  • Database senza ruoli RLS impostati
  • 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:

  1. Configurare il gateway
  2. Creare una connessione dinamica
  3. Generare un token di incorporamento

Configurare il gateway

Aggiungi una connessione dell'origine dati al 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.

Concedi all'entità servizio o all'utente master le autorizzazioni sul gateway

Per l'utente che genera il token di incorporamento è necessaria anche una delle autorizzazioni seguenti:

  • Autorizzazioni di amministratore del gateway

  • Autorizzazione di impersonificazione dell'origine dati (ReadOverrideEffectiveIdentity)

    Gli utenti con autorizzazione di impersonificazione (override) hanno un'icona a forma di chiave accanto al nome.

    Screenshot di un membro del gateway con un'icona a forma di chiave accanto al nome.

Segui queste istruzioni per concedere le autorizzazioni del gateway al tuo utente master, all'entità servizio o al profilo dell'entità servizio.

Mappare i 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 sulla mappatura dei nomi utente, vai a Rimappatura manuale dei nomi utente

Per ulteriori informazioni, vedere Associare i nomi utente alle 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.

  1. Avviare Power BI Desktop e selezionare Recupera dati>Database.

  2. Dall'elenco delle origini dati selezionare Database di SQL Server Analysis Services, quindi Connetti.

    Connettersi al database di SQL Server Analysis Services

  3. Inserire i dettagli dell'istanza tabulare di Analysis Services e selezionare Connessione dinamica. Quindi, seleziona OK.

    Schermata dei dettagli di Analysis Services.

Generare un token di incorporazione

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 live ai motori AS necessitano di un'identità effettiva anche se non è configurato alcun RLS.

Se non è configurato alcun criterio RLS (sicurezza a livello di riga), solo l'Admin ha accesso al database, quindi dovrai usare l'Admin come identità effettiva.

Le informazioni necessarie per generare un token di incorporamento dipendono dal fatto che la connessione a Power BI avvenga tramite un'entità servizio o come utente master, e anche dal fatto che il database abbia la sicurezza a livello di riga (RLS).

Per generare il token di incorporamento, fornire le informazioni seguenti:

  • Nome utente (Facoltativo se non è presente RLS. Obbligatorio per RLS) - Nome utente valido riconosciuto da SSAS che verrà usato come identità effettiva. Se il database non usa RLS e non viene specificato alcun nome utente, vengono utilizzate le credenziali dell'utente master.
  • Ruolo (obbligatorio per RLS) - Il report visualizzerà i dati solo se l'identità effettiva appartiene al 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.

Generare un token di incorporamento