Taken voor Premium-werkruimten en -gegevenssets automatiseren met service-principals

Service-principals zijn een Azure Active Directory-appregistratie die u in uw tenant maakt om onbeheerde bewerkingen op resource- en serviceniveau 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 service-principals als Power BI Embedded. Zie Power BI-inhoud insluiten met service-principals voor meer informatie.

In Power BI Premium kunnen service-principals ook worden gebruikt met het XMLA-eindpunt voor het automatiseren van beheertaken voor gegevenssets, zoals het inrichten van werkruimten, het implementeren van modellen en het vernieuwen van de gegevensset met:

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

Alleen nieuwe werkruimten ondersteunen XMLA-eindpuntverbindingen met service-principals. Klassieke-werkruimten worden niet ondersteund. Een service-principal heeft alleen de machtigingen die nodig zijn om taken uit te voeren voor werkruimten die er aan zijn toegewezen. Machtigingen worden toegewezen via werkruimtetoegang, net als bij gewone UPN-accounts.

Schrijfbewerkingen kunnen alleen worden uitgevoerd als voor de workload Gegevensset van de capaciteit het XMLA-eindpunt voor lezen-schrijven is ingeschakeld. Voor gegevenssets die vanuit Power BI Desktop worden gepubliceerd, moet de functie Indeling voor geavanceerde metagegevens zijn ingeschakeld.

Een service-principal maken

Service-principals worden in Azure Portal gemaakt als een app registratie of met behulp van PowerShell. Wanneer u de service-principal maakt, moet u ervoor zorgen dat u de app-naam, de toepassing-id (client), de map-id (tenant) en het clientgeheim afzonderlijk kopieert en opslaat. Voor stappen voor het maken van een service-principal, zie:

Service-principal maken - Azure Portal
Service-principal maken - PowerShell

Een Azure AD-beveiligingsgroep maken

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

Als u de toegang van de service-principal wilt beperken tot specifieke tenantinstellingen, kunt u alleen toegang geven tot specifieke beveiligingsgroepen. U kunt ook een toegewezen beveiligingsgroep voor service-principals maken en deze uitsluiten van de gewenste tenantinstellingen. Zie Een basisgroep maken en leden toevoegen met Azure Active Directory als u wilt weten welke stappen er moeten worden genomen om een beveiligingsgroep te maken en een service-principal toe te voegen.

Service-principals inschakelen

Voordat u service-principals in Power BI kunt gebruiken, moet een beheerder eerst toegang tot service-principals inschakelen in de Power BI-beheerportal.

Ga naar de Power BI-beheerportal>Tenantinstellingen en vouw daar Toestaan dat service-principals gebruikmaken van API's van Power BI uit. Klik vervolgens op Ingeschakeld. Als u machtigingen wilt toepassen op een beveiligingsgroep, moet u de groepsnaam aan specifieke beveiligingsgroepen toevoegen.

Workspace settings

Toegang tot werkruimte

Als u wilt dat uw service-principal over de benodigde machtigingen beschikt om bewerkingen op Premium-werkruimten en -gegevenssets uit te voeren, moet u de service-principal als Lid of Beheerder toevoegen. Het gebruik van werkruimtetoegang in de Power BI-service wordt hier beschreven, maar u kunt ook de REST API Groepsgebruiker toevoegen gebruiken.

  1. Selecteer in de Power BI-service voor een werkruimte Meer>Werkruimtetoegang.

    Workspace access settings

  2. Zoek op toepassingsnaam, voeg de service-principal als een Beheerder of Lid toe aan de werkruimte.

    Access dialog

Verbindingsreeksen voor het XMLA-eindpunt

Zodra u een service-principal hebt gemaakt, service-principals hebt ingeschakeld voor uw tenant en de service-principal aan werkruimtetoegang hebt toegevoegd, kunt u deze als een gebruikers-id gebruiken in verbindingsreeksen voor het XMLA-eindpunt. Het verschil is dat u voor de parameters Gebruikers-id en Wachtwoord, de toepassings-id, tenant-id en het 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

De module SQLServer gebruiken

In het volgende voorbeeld worden AppId, TenantId en AppSecret gebruikt voor het verifiëren van een bewerking voor het vernieuwen van een gegevensset:

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 en ADOMD

Wanneer u verbinding maakt met clienttoepassingen en web-apps, bieden AMO- en ADOMD-clientbibliotheken versie 15.1.42.26 (juni 2020) en hogere versies van installeerbare pakketten van NuGet, ondersteuning voor het gebruik van service-principals in verbindingsreeksen met de volgende syntaxis: app:AppID en wachtwoord of cert:thumbprint.

In het volgende voorbeeld worden appID en een password gebruikt voor het uitvoeren van een bewerking voor het vernieuwen van een 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();

Volgende stappen

Gegevenssetconnectiviteit met het XMLA-eindpunt
Azure Automation
Azure Logic Apps
Power BI REST API's