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

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

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

In Power BI Premium è possibile usare le entità servizio con l'endpoint XMLA (XML Analysis) per automatizzare le attività di gestione semantica dei modelli, ad esempio le aree di lavoro di provisioning, 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 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 in cui è assegnata. Le autorizzazioni vengono assegnate tramite l'accesso all'area di lavoro, analogamente agli account UPN (nome entità utente) normali.

Per eseguire operazioni di scrittura, il carico di lavoro Dei modelli semantici della capacità deve avere l'endpoint XMLA abilitato per le operazioni di lettura/scrittura. I modelli semantici pubblicati da Power BI Desktop devono avere la funzionalità del formato dei metadati avanzato abilitata.

Creare un'entità servizio

Le entità servizio vengono create come registrazione dell'app nella 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 della directory (tenant) e il segreto client. Per informazioni su come creare un'entità servizio, vedere:

Creare un gruppo di sicurezza Microsoft Entra

Per impostazione predefinita, le entità servizio hanno accesso a tutte le impostazioni del tenant per cui sono abilitate. A seconda delle impostazioni di amministratore, l'accesso può includere gruppi di sicurezza specifici o l'intera organizzazione.

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

Abilitazione delle entità servizio

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

  1. Passare al portale di Power BI Amministrazione e quindi selezionare Impostazioni tenant.
  2. Scorrere fino a Impostazioni sviluppatore e quindi espandere Consenti alle entità servizio di usare API 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.

Screenshot che mostra il portale di Amministrazione con le impostazioni del tenant selezionate. Consentire alle entità servizio di usare API Power BI viene espanso con l'opzione abilitata evidenziata.

Accesso all'area di lavoro

Affinché l'entità servizio disponga delle autorizzazioni necessarie per eseguire operazioni di area di lavoro Premium e modello semantico, è necessario aggiungere l'entità servizio come membro dell'area di lavoro o Amministrazione. L'uso dell'accesso all'area di lavoro nella servizio Power BI è descritto qui, ma è anche possibile usare l'API REST Aggiungi utente gruppo.

  1. Nella 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 e l'accesso all'area di lavoro sono evidenziati.

  2. Cercare in base al nome dell'applicazione e quindi aggiungere l'entità servizio come Amministrazione o Membro all'area di lavoro.

    Screenshot che mostra la finestra di dialogo di accesso che mostra il nome di un'entità servizio. Amministrazione selezionato.

stringhe di Connessione ion per l'endpoint XMLA

Dopo aver creato un'entità servizio, abilitare le entità servizio per il tenant e aggiungere l'entità servizio all'accesso all'area di lavoro, usarla come identità utente in stringa di connessione con l'endpoint XMLA. La differenza è che, anziché i user id parametri 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, TenantIde 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

Analysis Management Objects (AMO) e ADOMD.NET

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

Nell'esempio appID seguente vengono usati valori 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();