Automatisieren Sie Aufgaben im Premium-Arbeitsbereich und im semantischen Modell mit Dienstprinzipalen

Dienstprinzipale sind eine App-Registrierung in Microsoft Entra, die Sie in Ihren Mandant*inen erstellen, um unbeaufsichtigte Vorgänge auf Ressourcen- und Dienstebene auszuführen. Es handelt sich dabei um eine besondere Art von Benutzeridentität mit einem App-Namen, einer Anwendungs-ID und einer Mandanten-ID sowie einem geheimen Clientschlüssel oder Zertifikat als Kennwort.

Power BI Premium verwendet dieselbe Dienstprinzipalfunktion wie Power BI Embedded. Weitere Informationen finden Sie unter Einbetten von Power BI-Inhalten mit Dienstprinzipal und Anwendungsgeheimnis.

In Power BI Premium können Sie Dienstprinzipale mit dem XMLA (XML Analsyis)-Endpunkt verwenden, um Verwaltungsaufgaben von semantischen Modellen wie das Bereitstellen von Arbeitsbereichen und Modellen sowie das Aktualisieren von semantischen Modellen zu automatisieren mit:

  • PowerShell:
  • durch Azure Automation
  • Azur Logic Apps:
  • Benutzerdefinierten Clientanwendungen.

Nur neue Arbeitsbereiche unterstützen XMLA-Endpunktverbindungen mithilfe von Dienstprinzipalen. Klassische Arbeitsbereiche werden nicht unterstützt. Ein Dienstprinzipal verfügt nur über die Berechtigungen, die zum Ausführen von Aufgaben für ihm zugewiesene Arbeitsbereiche erforderlich sind. Berechtigungen werden über den Arbeitsbereichszugriff zugewiesen, ähnlich wie bei regulären UPN (User Principal Name)-Konten.

Damit Schreibvorgänge ausgeführt werden können, muss bei der Kapazität der Workloads der semantischen Modelle die Lese-/Schreibberechtigung für den XMLA-Endpunkt aktiviert sein. Bei über Power BI Desktop veröffentlichten semantischen Modelle sollte das Feature Erweitertes Metadatenformat aktiviert sein.

Erstellen eines Dienstprinzipals

Dienstprinzipale werden als App-Registrierung im Azure-Portal oder über PowerShell erstellt. Stellen Sie sicher, dass Sie beim Erstellen Ihres Dienstprinzipals den App-Namen, die Anwendungs-ID (Client), die Verzeichnis-ID (Mandant) und den geheimen Clientschlüssel kopieren und separat speichern. Anleitungen zum Erstellen eines Dienstprinzipals finden Sie unter:

Erstellen einer Microsoft Entra Sicherheitsgruppe

Dienstprinzipale haben standardmäßig Zugriff auf alle Mandanteneinstellungen, für die sie aktiviert wurden. Abhängig von Ihren Administratoreinstellungen kann dies bestimmte Sicherheitsgruppen oder die gesamte Organisation umfassen.

Sie können den Dienstprinzipalzugriff auf bestimmte Mandanteneinstellungen beschränken, indem Sie den Zugriff nur für bestimmte Sicherheitsgruppen zulassen. Alternativ können Sie eine dedizierte Sicherheitsgruppe für Dienstprinzipale erstellen und sie von den gewünschten Mandanteneinstellungen ausschließen. Informationen zum Erstellen einer Sicherheitsgruppe und Hinzufügen eines Dienstprinzipals finden Sie unter Erstellen einer Basisgruppe und Hinzufügen von Mitgliedern mit Microsoft Entra ID.

Aktivieren von Dienstprinzipalen

Bevor Dienstprinzipale in Power BI verwendet werden können, muss ein Administrator den Dienstprinzipalzugriff im Power BI-Verwaltungsportal aktivieren.

  1. Wechseln Sie zum Power BI-Verwaltungsportal, und wählen Sie dann Mandanteneinstellungen aus.
  2. Scrollen Sie zu Entwicklereinstellungen, und erweitern Sie dann Dienstprinzipalen die Verwendung von Power BI-APIs gestatten.
  3. Wählen Sie Aktiviert.
  4. Um Berechtigungen auf eine Sicherheitsgruppe anzuwenden, wählen Sie Bestimmte Sicherheitsgruppen (Empfohlen) aus.
  5. Geben Sie den Gruppennamen ein.
  6. Wählen Sie Übernehmen.

Screenshot des Verwaltungsportals mit ausgewählten Mandanteneinstellungen. Dienstprinzipale für die Verwendung von Power BI-APIs zulassen, wird mit aktivierter Option erweitert.

Arbeitsbereichszugriff

Damit Ihr Dienstprinzipal über die erforderlichen Berechtigungen zum Ausführen von Arbeitsbereichs- und Vorgängen der semantischen Modelle in Power BI Premium verfügt, müssen Sie den Dienstprinzipal als Arbeitsbereichsmitglied oder -administrator hinzufügen. Im Folgenden wird beschrieben, wie dies über den Arbeitsbereichszugriff im Power BI-Dienst funktioniert. Sie können aber auch die REST-API für das Hinzufügen von Benutzern zu Gruppen dafür verwenden.

  1. Klicken Sie im Power BI-Dienst beim entsprechenden Arbeitsbereich auf Mehr>Arbeitsbereichszugriff.

    Screenshot der Liste der Arbeitsbereiche. Das Symbol „Mehr“ und „Arbeitsbereichszugriff“ sind hervorgehoben.

  2. Suchen Sie nach dem Namen der Anwendung, und fügen Sie dem Arbeitsbereich dann den Dienstprinzipal als Administrator oder Mitglied hinzu.

    Screenshot des Zugriffsdialogfelds mit einem Dienstprinzipalnamen. „Admin“ ist ausgewählt.

Verbindungszeichenfolgen für den XMLA-Endpunkt

Nachdem Sie einen Dienstprinzipal erstellt, Dienstprinzipale für Ihren Mandanten aktiviert und den Dienstprinzipal unter „Arbeitsbereichszugriff“ hinzugefügt haben, verwenden Sie ihn in Verbindungszeichenfolgen für den XMLA-Endpunkt als Benutzeridentität. Der Unterschied besteht darin, dass Sie statt der Parameter user id und password die Anwendungs-ID, die Mandanten-ID und den geheimen Anwendungsschlüssel angeben.

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

PowerShell

Öffnen Sie eine PowerShell-Sitzung, um den folgenden Beispielcode auszuführen.

Verwenden des SqlServer-Moduls

Im folgenden Beispiel wird mit AppId, TenantId und AppSecret ein Aktualisierungsvorgang für ein semantisches Modell authentifiziert:

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

Beim Herstellen einer Verbindung mit Clientanwendungen und Web-Apps können Sie die Installationspakete von NuGet für die Clientbibliotheken AMO und ADOMD ab Version 15.1.42.26 (Juni 2020) verwenden, um Dienstprinzipale in Verbindungszeichenfolgen mit der folgenden Syntax zu unterstützen: app:AppID und Kennwort oder cert:thumbprint.

Im folgenden Beispiel werden die Werte appID und ein password verwendet, um einen Aktualisierungsvorgang für eine Modelldatenbank auszuführen:

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