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.
- Wechseln Sie zum Power BI-Verwaltungsportal, und wählen Sie dann Mandanteneinstellungen aus.
- Scrollen Sie zu Entwicklereinstellungen, und erweitern Sie dann Dienstprinzipalen die Verwendung von Power BI-APIs gestatten.
- Wählen Sie Aktiviert.
- Um Berechtigungen auf eine Sicherheitsgruppe anzuwenden, wählen Sie Bestimmte Sicherheitsgruppen (Empfohlen) aus.
- Geben Sie den Gruppennamen ein.
- Wählen Sie Übernehmen.
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.
Klicken Sie im Power BI-Dienst beim entsprechenden Arbeitsbereich auf Mehr>Arbeitsbereichszugriff.
Suchen Sie nach dem Namen der Anwendung, und fügen Sie dem Arbeitsbereich dann den Dienstprinzipal als Administrator oder Mitglied hinzu.
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();