Automatiser Premium-arbejdsområde- og semantiske modelopgaver med tjenesteprincipaler

Tjenesteprincipaler er en Microsoft Entra ID-appregistrering, du opretter i din lejer for at udføre automatiske handlinger på ressource- og tjenesteniveau. De er en entydig type brugeridentitet med et appnavn, program-id, lejer-id og klienthemmelighed eller certifikat til en adgangskode.

Power BI Premium bruger den samme tjenesteprincipalfunktion som Power BI Embedded. Du kan få mere at vide under Integrer Power BI-indhold med tjenesteprincipaler.

I Power BI Premium kan du bruge tjenesteprincipaler med XMLA-slutpunktet (XML Analysis) til at automatisere administrationsopgaver for semantiske modeller, f.eks. klargøring af arbejdsområder, udrulning af modeller og opdatering af semantiske modeller med:

  • Powershell.
  • Azure Automation.
  • Azure Logic Apps.
  • Brugerdefinerede klientprogrammer.

Det er kun nye arbejdsområder, der understøtter XMLA-slutpunktsforbindelser ved hjælp af tjenesteprincipaler. Klassiske arbejdsområder understøttes ikke. En tjenesteprincipal har kun de tilladelser, der er nødvendige for at udføre opgaver i arbejdsområder, hvor den er tildelt. Tilladelser tildeles via adgang til arbejdsområdet på samme måde som almindelige UPN-konti (brugerens hovednavn).

Hvis du vil udføre skrivehandlinger, skal XMLA-slutpunktet være aktiveret for læse-/skrivehandlinger for kapacitetens arbejdsbelastning for semantiske modeller. Funktionen udvidet metadataformat skal være aktiveret for semantiske modeller, der er publiceret fra Power BI Desktop.

Opret en tjenesteprincipal

Tjenesteprincipaler oprettes som en appregistrering i Azure-portal eller ved hjælp af PowerShell. Når du opretter din tjenesteprincipal, skal du sørge for at kopiere og gemme appnavnet, program-id'et (klient-id'et), mappe-id'et (lejeren) og klienthemmeligheden separat. Du kan finde trin til, hvordan du opretter en tjenesteprincipal, under:

Opret en Microsoft Entra-sikkerhedsgruppe

Tjenesteprincipaler har som standard adgang til alle lejerindstillinger, de er aktiveret for. Afhængigt af administratorindstillingerne kan adgang omfatte bestemte sikkerhedsgrupper eller hele organisationen.

Hvis du vil begrænse tjenesteprincipalens adgang til bestemte lejerindstillinger, kan du give adgang til bestemte sikkerhedsgrupper. Du kan også oprette en dedikeret sikkerhedsgruppe for tjenesteprincipaler og udelade den fra de ønskede lejerindstillinger. Hvis du vil oprette en sikkerhedsgruppe og tilføje en tjenesteprincipal, skal du se Opret en grundlæggende gruppe og tilføje medlemmer ved hjælp af Microsoft Entra-id.

Aktivér tjenesteprincipaler

Før du kan begynde at bruge tjenesteprincipaler i Power BI, skal en administrator aktivere adgang for tjenesteprincipaler på Power BI Administration-portalen.

  1. Gå til Power BI Administration-portalen, og vælg derefter Lejerindstillinger.
  2. Rul til Udviklerindstillinger, og udvid derefter Tillad, at tjenesteprincipaler bruger Power BI-API s.
  3. Vælg Aktiveret.
  4. Hvis du vil anvende tilladelser på en sikkerhedsgruppe, skal du vælge Specifikke sikkerhedsgrupper (anbefales).
  5. Angiv gruppenavnet.
  6. Vælg Anvend.

Skærmbillede, der viser Administration portal med lejerindstillinger valgt. Tillad, at tjenesteprincipaler bruger Power BI-API er udvidet med aktiveret fremhævet.

Adgang til arbejdsområde

Hvis tjenesteprincipalen skal have de nødvendige tilladelser til at udføre Handlinger for Premium-arbejdsområde og semantisk model, skal du tilføje tjenesteprincipalen som medlem af arbejdsområdet eller Administration. Brug af arbejdsområdeadgang i Power BI-tjeneste er beskrevet her, men du kan også bruge REST API'en Tilføj gruppebruger.

  1. I Power BI-tjeneste for et arbejdsområde skal du vælge Mere>adgang til arbejdsområde.

    Skærmbillede, der viser en liste over arbejdsområder. Flere ikoner og adgang til arbejdsområder er fremhævet.

  2. Søg efter programnavn, og føj derefter tjenesteprincipalen som Administration eller Medlem til arbejdsområdet.

    Skærmbillede, der viser adgangsdialogboksen, der viser et tjenesteprincipalnavn. Administration er valgt.

Forbind ionstrenge for XMLA-slutpunktet

Når du har oprettet en tjenesteprincipal, skal du aktivere tjenesteprincipaler for din lejer og føje tjenesteprincipalen til adgang til arbejdsområdet og bruge den som en brugeridentitet i forbindelsesstreng med XMLA-slutpunktet. Forskellen er, at du i stedet for parametrene user id og password angiver program-id'et, lejer-id'et og programhemmeligheden.

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

PowerShell

Åbn en PowerShell-session for at køre følgende eksempelkode.

Brug af SQLServer-modul

I følgende eksempel bruges , AppIdTenantIdog AppSecret til at godkende en semantisk modelopdateringshandling:

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) og ADOMD.NET

Når du opretter forbindelse til klientprogrammer og webapps, kan du bruge AMO- og ADOMD-klientbiblioteker version 15.1.42.26 (juni 2020) og nyere installerbare pakker fra NuGet til at understøtte tjenesteprincipaler i forbindelsesstreng s ved hjælp af følgende syntaks: app:AppID og adgangskode eller cert:thumbprint.

I følgende eksempel appID bruges værdier og password til at udføre en opdateringshandling for en modeldatabase:

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();