Share via


Incorporare un report in un'SSAS (SQL Server Analysis Services) 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 del modello tabulare di Analysis Services localein un'applicazione dati di proprietà di un'app Power BI standard. Questo articolo si applica a tutti i modelli SSAS di connessione dinamica indipendentemente dal fatto che implementino o meno 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.

Chi è per 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 meno 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:

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

Configurare il gateway

Aggiungere una connessione all'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 altre 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

L'utente che genera il token di incorporamento richiede anche una delle autorizzazioni seguenti:

  • Autorizzazioni di amministratore del gateway

  • Autorizzazione di rappresentazione dell'origine dati (ReadOverrideEffectiveIdentity)

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

    Screenshot of a gateway member with a key icon next to their name.

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

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, passare a Modifica manuale del mapping dei nomi utente

Per altre 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.

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

  2. Nell'elenco delle origini dati selezionare il database di SQL Server Analysis Services e selezionare Connessione.

    Connect to SQL Server Analysis Services Database.

  3. Compilare i dettagli dell'istanza tabulare di Analysis Services e selezionare Connessione live. Selezionare OK.

    Screenshot of Analysis Services details.

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 alcuna sicurezza a livello di riga.

Se non è configurata alcuna sicurezza a livello di riga, solo l'Amministrazione ha accesso al database in modo che si voglia usare il Amministrazione come identità effettiva.

Le informazioni necessarie per generare un token di incorporamento dipendono da se si è connessi a Power BI usando un'entità servizio o come utente master e anche se il database dispone di sicurezza a livello di riga.

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

  • Nome utente (facoltativo se nessuna sicurezza a livello di riga. Obbligatorio per la sicurezza a livello di riga: nome utente valido riconosciuto da SSAS che verrà usato come identità effettiva. Se il database non usa la sicurezza a livello di riga e non viene specificato alcun nome utente, vengono usate le credenziali dell'utente master.
  • Ruolo (obbligatorio per la 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 il report filtra i dati in base alle autorizzazioni dell'utente che accede al report.

Considerazioni e limitazioni

CustomData non è supportato.

Generare un token di incorporamento