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-beheerportal.
- Ga naar de Power BI-beheerportal en selecteer vervolgens Tenantinstellingen.
- Schuif naar instellingen voor ontwikkelaars en vouw vervolgens Service-principals toestaan om API van Power BI s te gebruiken.
- Selecteer Ingeschakeld.
- Als u machtigingen wilt toepassen op een beveiligingsgroep, selecteert u Specifieke beveiligingsgroepen (aanbevolen).
- Voer de groepsnaam in.
- Selecteer Toepassen.
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 lid van de werkruimte of beheerder. Als u werkruimtetoegang in de Power BI-service gebruikt, wordt hier beschreven, maar u kunt ook de REST API Voor groepgebruikers toevoegen gebruiken.
Selecteer meer>werkruimtetoegang in de Power BI-service voor een werkruimte.
Zoek op toepassingsnaam en voeg vervolgens de service-principal toe als beheerder of lid aan de werkruimte.
Verbindingsreeksen 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 AppId
worden , TenantId
en 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();