Condividi tramite


Automatizzare le attività dell'area di lavoro Premium e del modello semantico con entità servizio

Le entità servizio sono una registrazioni dell'app Microsoft Entra ID create all'interno del tenant per eseguire operazioni a livello di servizio e di risorsa senza intervento dell'utente. Si tratta di un tipo univoco di identità utente con nome app, ID applicazione, ID tenant e segreto client o certificato per una password.

Power BI Premium usa la stessa funzionalità per le entità servizio di Power BI Embedded. Per altre informazioni, vedere Incorporamento di contenuto di Power BI con entità servizio.

In Power BI Premium è possibile usare entità servizio con l'endpoint XMLA (XML for Analysis) per automatizzare le attività di gestione del modello semantico, ad esempio il provisioning delle aree di lavoro, la distribuzione di modelli e l'aggiornamento del modello semantico con:

  • PowerShell.
  • Automazione di Azure.
  • App per la logica di Azure.
  • Applicazioni client personalizzate.

Solo le nuove aree di lavoro supportano le connessioni agli endpoint XMLA tramite entità servizio. Le aree di lavoro classiche non sono supportate. Un'entità servizio ha solo le autorizzazioni necessarie per eseguire attività nelle aree di lavoro a cui viene assegnata. Le autorizzazioni vengono assegnate tramite l'accesso all'area di lavoro, in modo analogo a quanto avviene con i normali account UPN (nome dell'entità utente).

Per eseguire operazioni di scrittura, il carico di lavoro Modelli semantici della capacità deve avere l'endpoint XMLA abilitato per le operazioni di lettura/scrittura. Per i modelli semantici pubblicati da Power BI Desktop è necessario che sia abilitata la funzionalità per il formato ottimizzato dei metadati.

Creare un'entità servizio

Le entità servizio vengono create come registrazione di app nel portale di Azure o tramite PowerShell. Quando si crea l'entità servizio, assicurarsi di copiare e salvare separatamente il nome dell'app, l'ID applicazione (client), l'ID directory (tenant) e il segreto client. Per informazioni sulla procedura per creare un'entità servizio, vedere:

Creare un gruppo di sicurezza Microsoft Entra

Per impostazione predefinita, le entità servizio possono accedere a tutte le impostazioni del tenant per cui sono abilitate. In base alle impostazioni di amministrazione, l'accesso può includere gruppi di sicurezza specifici o l'intera organizzazione.

Per limitare l'accesso dell'entità servizio a impostazioni specifiche del tenant, è possibile consentire l'accesso solo a gruppi di sicurezza specifici. In alternativa, è possibile creare un gruppo di sicurezza dedicato per le entità servizio ed escluderlo dalle impostazioni specifiche del tenant. Per creare un gruppo di sicurezza e aggiungere un'entità servizio, vedere Creare un gruppo di base e aggiungere membri con Microsoft Entra ID.

Abilitazione delle entità servizio

Prima di poter iniziare a usare le entità servizio in Power BI, un amministratore deve abilitare l'accesso all'entità servizio nel portale di amministrazione di Power BI.

  1. Passare al portale di amministrazione di Power BI, quindi selezionare Impostazioni del tenant.
  2. Scorrere fino a Impostazioni sviluppatore e quindi espandere Consenti alle entità servizio di usare le API di Power BI.
  3. Selezionare Enabled.
  4. Per applicare le autorizzazioni a un gruppo di sicurezza, selezionare Gruppi di sicurezza specifici (scelta consigliata).
  5. Immettere il nome del gruppo.
  6. Selezionare Applica.

Accesso all'area di lavoro

Affinché l'entità servizio disponga delle autorizzazioni necessarie per eseguire le operazioni Premium su aree di lavoro e modello semantico, è necessario aggiungere l'entità servizio come membro o amministratore dell'area di lavoro. L'uso dell'accesso all'area di lavoro nel servizio Power BI è descritto qui, ma è anche possibile usare l'API REST Add Group User (Aggiungi utente gruppo).

  1. Nel servizio Power BI, per un'area di lavoro selezionare Altro>Accesso all'area di lavoro.

    Screenshot che mostra un elenco di aree di lavoro. L'icona Altro e l'accesso all'area di lavoro sono evidenziati.

  2. Eseguire una ricerca in base al nome dell'applicazione, quindi aggiungere l'entità servizio come amministratore o membro all'area di lavoro.

Stringhe di connessione per l'endpoint XMLA

Dopo aver creato un'entità servizio, abilitato le entità servizio per il tenant e aggiunto l'entità servizio all'accesso all'area di lavoro, usarla come identità utente nelle stringhe di connessione con l'endpoint XMLA. La differenza è, anziché i parametri user id e password, si specificano l'ID applicazione, l'ID tenant e il segreto dell'applicazione.

Data Source=powerbi://api.powerbi.com/v1.0/myorg/<workspace name>; Initial Catalog=<dataset name>;User ID=app:<appId>@<tenantId>;Password=<app_secret>;

PowerShell

Aprire una sessione di PowerShell per eseguire il codice di esempio seguente.

Uso del modulo SQLServer

Nell'esempio seguente, AppId, TenantId e AppSecret vengono usati per autenticare un'operazione di aggiornamento del modello semantico:

Param (
        [Parameter(Mandatory=$true)] [String] $AppId,
        [Parameter(Mandatory=$true)] [String] $TenantId,
        [Parameter(Mandatory=$true)] [String] $AppSecret
       )
$PWord = ConvertTo-SecureString -String $AppSecret -AsPlainText -Force

$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $AppId, $PWord

Invoke-ProcessTable -Server "powerbi://api.powerbi.com/v1.0/myorg/myworkspace" -TableName "mytable" -DatabaseName "mydataset" -RefreshType "Full" -ServicePrincipal -ApplicationId $AppId -TenantId $TenantId -Credential $Credential

AMO (Analysis Management Objects) e ADOMD.NET

Quando ci si connette ad applicazioni client e app Web, è possibile usare i pacchetti installabili delle librerie client AMO e ADOMD versione 15.1.42.26 (giugno 2020) e successive di NuGet per supportare le entità servizio nelle stringhe di connessione con la sintassi seguente: app:AppID e password o cert:thumbprint.

Nell'esempio seguente vengono usati i valori appID e password per eseguire un'operazione di aggiornamento del database modello:

string appId = "xxx";
string authKey = "yyy";
string connString = $"Provider=MSOLAP;Data source=powerbi://api.powerbi.com/v1.0/<tenant>/<workspacename>;Initial catalog=<datasetname>;User ID=app:{appId};Password={authKey};";
Server server = new Server();
server.Connect(connString);
Database db = server.Databases.FindByName("adventureworks");
Table tbl = db.Model.Tables.Find("DimDate");
tbl.RequestRefresh(RefreshType.Full);
db.Model.SaveChanges();