Automatisera Premium-arbetsytor och semantiska modelluppgifter med tjänstens huvudnamn

Tjänstens huvudnamn är en Microsoft Entra ID-appregistrering som du skapar i din klientorganisation för att utföra obevakade åtgärder på resurs- och tjänstnivå. De är en unik typ av användaridentitet med ett appnamn, program-ID, klient-ID och klienthemlighet eller certifikat för ett lösenord.

Power BI Premium använder samma funktioner för tjänstens huvudnamn som Power BI Embedded. Mer information finns i Bädda in Power BI-innehåll med tjänstens huvudnamn.

I Power BI Premium kan du använda tjänstens huvudnamn med XMLA-slutpunkten (XML-analys) för att automatisera semantiska modellhanteringsuppgifter som att etablera arbetsytor, distribuera modeller och semantisk modelluppdatering med:

  • PowerShell.
  • Azure Automation.
  • Azure Logic Apps.
  • Anpassade klientprogram.

Endast nya arbetsytor stöder XMLA-slutpunktsanslutningar med hjälp av tjänstens huvudnamn. Klassiska arbetsytor stöds inte. Tjänstens huvudnamn har bara de behörigheter som krävs för att utföra uppgifter på arbetsytor där det har tilldelats. Behörigheter tilldelas via åtkomst till arbetsytan, ungefär som vanliga UPN-konton (användarens huvudnamn).

För att kunna utföra skrivåtgärder måste kapacitetens arbetsbelastning för semantiska modeller ha XMLA-slutpunkten aktiverad för läs- och skrivåtgärder. Semantiska modeller som publiceras från Power BI Desktop bör ha funktionen för förbättrat metadataformat aktiverat.

Skapa ett huvudnamn för tjänsten

Tjänstens huvudnamn skapas som en appregistrering i Azure-portalen eller med hjälp av PowerShell. När du skapar tjänstens huvudnamn måste du kopiera och spara appnamnet, program-ID:t (klient)-ID:t, katalog-ID:t (klientorganisationen) och klienthemligheten separat. Anvisningar om hur du skapar ett huvudnamn för tjänsten finns i:

Skapa en Microsoft Entra-säkerhetsgrupp

Som standard har tjänstens huvudnamn åtkomst till alla klientinställningar som de är aktiverade för. Beroende på administratörsinställningarna kan åtkomsten innehålla specifika säkerhetsgrupper eller hela organisationen.

Om du vill begränsa tjänstens huvudnamnsåtkomst till specifika klientinställningar kan du tillåta åtkomst till specifika säkerhetsgrupper. Du kan också skapa en dedikerad säkerhetsgrupp för tjänstens huvudnamn och exkludera den från önskade klientinställningar. Information om hur du skapar en säkerhetsgrupp och lägger till ett huvudnamn för tjänsten finns i Skapa en grundläggande grupp och lägga till medlemmar med hjälp av Microsoft Entra-ID.

Aktivera tjänstens huvudnamn

Innan du kan börja använda tjänstens huvudnamn i Power BI måste en administratör aktivera åtkomst till tjänstens huvudnamn i Power BI-administratörsportalen.

  1. Gå till Power BI-administratörsportalen och välj sedan Klientinställningar.
  2. Bläddra till Inställningar för utvecklare och expandera sedan Tillåt att tjänstens huvudnamn använder Power BI-API.
  3. Välj Aktiverad.
  4. Om du vill använda behörigheter för en säkerhetsgrupp väljer du Specifika säkerhetsgrupper (rekommenderas).
  5. Ange gruppnamnet.
  6. Välj Använd.

Skärmbild som visar administratörsportalen med klientinställningar valda. Tillåt att tjänstens huvudnamn använder Power BI-API expanderas med aktiverat markerat.

Arbetsyteåtkomst

För att tjänstens huvudnamn ska ha de behörigheter som krävs för att utföra Premium-arbetsytor och semantiska modellåtgärder måste du lägga till tjänstens huvudnamn som medlem eller administratör för arbetsytan. Här beskrivs hur du använder arbetsyteåtkomst i Power BI-tjänst, men du kan också använda REST-API:et Lägg till gruppanvändare.

  1. I Power BI-tjänst för en arbetsyta väljer du Mer>åtkomst till arbetsyta.

    Skärmbild som visar en lista över arbetsytor. Mer ikon och arbetsyteåtkomst är markerade.

  2. Sök efter programnamn och lägg sedan till tjänstens huvudnamn som administratör eller medlem på arbetsytan.

    Skärmbild som visar åtkomstdialogrutan som visar ett namn på tjänstens huvudnamn. Administratör har valts.

Anslut ionssträngar för XMLA-slutpunkten

När du har skapat ett huvudnamn för tjänsten aktiverar du tjänstens huvudnamn för din klientorganisation och lägger till tjänstens huvudnamn i arbetsytans åtkomst, använder det som en användaridentitet i anslutningssträng med XMLA-slutpunkten. Skillnaden är att i stället för parametrarna user id och password anger du program-ID, klient-ID och programhemlighet.

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

PowerShell

Öppna en PowerShell-session för att köra följande exempelkod.

Använda SQLServer-modulen

I följande exempel AppIdanvänds , TenantIdoch AppSecret för att autentisera en uppdateringsåtgärd för semantisk modell:

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

När du ansluter med klientprogram och webbappar kan du använda AMO- och ADOMD-klientbibliotek version 15.1.42.26 (juni 2020) och senare installationsbara paket från NuGet för att stödja tjänstens huvudnamn i anslutningssträng med hjälp av följande syntax: app:AppID och lösenord eller cert:thumbprint.

I följande exempel appIDpassword används värden för att utföra en uppdateringsåtgärd för modelldatabasen:

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