Premium-werkruimte en semantische modeltaken automatiseren met service-principals

Service-principals zijn een Microsoft Entra ID-app-registratie die u in uw tenant maakt om bewerkingen op resource- en serviceniveau zonder toezicht uit te voeren. Ze zijn een uniek type gebruikersidentiteit met een app-naam, toepassings-id, tenant-id en clientgeheim of -certificaat voor een wachtwoord.

Power BI Premium maakt gebruik van dezelfde functionaliteit van de service-principal als Power BI Embedded. Zie Power BI-inhoud insluiten met service-principals voor meer informatie.

In Power BI Premium kunt u service-principals gebruiken met het XMLA-eindpunt (XMLA) om semantische modelbeheertaken te automatiseren, zoals het inrichten van werkruimten, het implementeren van modellen en het vernieuwen van semantische modellen met:

  • PowerShell.
  • Azure Automation.
  • Azure Logic Apps.
  • Aangepaste clienttoepassingen.

Alleen nieuwe werkruimten ondersteunen XMLA-eindpuntverbindingen met behulp van service-principals. Klassieke werkruimten worden niet ondersteund. Een service-principal heeft alleen de machtigingen die nodig zijn om taken uit te voeren op werkruimten waaraan deze is toegewezen. Machtigingen worden toegewezen via werkruimtetoegang, net als gewone UPN-accounts (user principal name).

Als u schrijfbewerkingen wilt uitvoeren, moet voor de workload Semantische modellen van de capaciteit het XMLA-eindpunt zijn ingeschakeld voor lees-/schrijfbewerkingen. Voor Semantische modellen die zijn gepubliceerd vanuit Power BI Desktop moet de verbeterde functie voor metagegevensindeling zijn ingeschakeld.

Een service-principal maken

Service-principals worden gemaakt als app-registratie in Azure Portal of met behulp van PowerShell. Wanneer u uw service-principal maakt, moet u de app-naam, toepassings-id (client),map-id (tenant) en clientgeheim afzonderlijk kopiëren en opslaan. Zie de volgende stappen voor het maken van een service-principal:

Een Microsoft Entra-beveiligingsgroep maken

Service-principals hebben standaard toegang tot alle tenantinstellingen waarvoor ze zijn ingeschakeld. Afhankelijk van uw beheerdersinstellingen kan toegang specifieke beveiligingsgroepen of de hele organisatie bevatten.

Als u de toegang van de service-principal tot specifieke tenantinstellingen wilt beperken, kunt u toegang tot specifieke beveiligingsgroepen toestaan. U kunt ook een toegewezen beveiligingsgroep maken voor service-principals en deze uitsluiten van de gewenste tenantinstellingen. Zie Een basisgroep maken en leden toevoegen met behulp van Microsoft Entra-id om een beveiligingsgroep te maken en een service-principal toe te voegen.

Service-principals inschakelen

Voordat u service-principals in Power BI kunt gaan gebruiken, moet een beheerder toegang tot de service-principal inschakelen in de Power BI-Beheer-portal.

  1. Ga naar de Power BI-Beheer-portal en selecteer vervolgens Tenantinstellingen.
  2. Schuif naar instellingen voor ontwikkelaars en vouw vervolgens Service-principals toestaan om API van Power BI s te gebruiken.
  3. Selecteer Ingeschakeld.
  4. Als u machtigingen wilt toepassen op een beveiligingsgroep, selecteert u Specifieke beveiligingsgroepen (aanbevolen).
  5. Voer de groepsnaam in.
  6. Selecteer Toepassen.

Schermopname van de Beheer-portal met tenantinstellingen geselecteerd. Toestaan dat service-principals gebruikmaken van API van Power BI s is uitgevouwen met ingeschakeld.

Toegang tot werkruimte

Als u wilt dat uw service-principal over de benodigde machtigingen beschikt om Premium-werkruimte- en semantische modelbewerkingen uit te voeren, moet u de service-principal toevoegen als werkruimtelid of Beheer. Het gebruik van werkruimtetoegang in de Power BI-service wordt hier beschreven, maar u kunt ook de REST API Voor groepgebruikers toevoegen gebruiken.

  1. Selecteer meer>werkruimtetoegang in de Power BI-service voor een werkruimte.

    Schermopname van een lijst met werkruimten. De meer pictogram- en werkruimtetoegang zijn gemarkeerd.

  2. Zoek op toepassingsnaam en voeg vervolgens de service-principal toe als een Beheer of Lid aan de werkruimte.

    Schermopname van het toegangsvenster met de naam van een service-principal. Beheer is geselecteerd.

Verbinding maken iontekenreeksen voor het XMLA-eindpunt

Nadat u een service-principal hebt gemaakt, schakelt u service-principals voor uw tenant in en voegt u de service-principal toe aan toegang tot werkruimten, gebruikt u deze als een gebruikersidentiteit in verbindingsreeks s met het XMLA-eindpunt. Het verschil is dat u in plaats van de user id parameters password de toepassings-id, tenant-id en toepassingsgeheim opgeeft.

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

Powershell

Open een PowerShell-sessie om de volgende voorbeeldcode uit te voeren.

SQLServer-module gebruiken

In het volgende voorbeeld AppIdworden , TenantIden AppSecret gebruikt voor het verifiëren van een semantische modelvernieuwingsbewerking:

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

Analysebeheerobjecten (AMO) en ADOMD.NET

Wanneer u verbinding maakt met clienttoepassingen en web-apps, kunt u AMO- en ADOMD-clientbibliotheken versie 15.1.42.26 (juni 2020) en latere installeerbare pakketten van NuGet gebruiken om service-principals in verbindingsreeks s te ondersteunen met behulp van de volgende syntaxis: app:AppID en wachtwoord of cert:thumbprint.

In het volgende voorbeeld appID worden waarden password gebruikt om een modeldatabasevernieuwingsbewerking uit te voeren:

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