Anleitung zur Einrichtung der Power BI REST API mit Zugriff über ein Dienstprinzipal und DAX-Abfragen auf einem semantischen Modell

Ein Schritt-für-Schritt-Leitfaden

Einführung

Die Power BI REST API bietet eine Vielzahl von Funktionen zur Verwaltung und Automatisierung von Power BI-Inhalten. Für Unternehmen, die eine höhere Sicherheit und automatisierten Zugriff benötigen, ist die Nutzung eines Dienstprinzipale eine geeignete Methode. Diese Anleitung erläutert die Schritte zur Einrichtung der Power BI REST API mit Zugriff über ein Dienstprinzipal.

Dienstprinzipale sind Sicherheitsobjekte innerhalb einer Microsoft Entra-Anwendung, die definieren, was eine Anwendung in einem bestimmten Tenant tun kann. Sie werden im Azure-Portal während der Anwendungsregistrierung eingerichtet und für den Zugriff auf Azure-Ressourcen, wie Azure DevOps, konfiguriert. Durch das Hinzufügen von Dienstprinzipalen in Ihre Organisation und das Einrichten von Berechtigungen auf ihnen können wir bestimmen, ob ein Dienstprinzipal berechtigt ist, auf Ihre Organisationsressourcen zuzugreifen, und welche das sind.

Über diesen Zugriff wird am Ende der Anleitung eine DAX-Abfrage an ein Semantikmodell (Dataset) gesendet.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:

  • Ein Microsoft Entra Konto mit Administratorrechten
  • Zugriff auf das Azure Portal
  • Ein Power BI Pro oder Premium Lizenz
  • Ein Arbeitsbereich mit mindestens einem Semantikmodell.

Schritt 1: Erstellen eines Dienstprinzipals im Azure Portal

  • Melden Sie sich im Azure Portal unter https://portal.azure.com/ an.
  • Wählen Sie im Navigationsbereich „Microsoft Entra ID“ aus.
  • Klicken Sie auf „App-Registrierungen“ und dann auf „Neue Registrierung“.
Erstellen eines Dienstprinzipals im Azure Portal
  • Geben Sie einen Namen für die App an, z.B. „Power BI Service Principal“.
  • Wählen Sie unter „Unterstützte Kontotypen“ die Option „Nur Konten in diesem Organisationsverzeichnis“ aus.
  • Der Bereich „Umleitungs-URI“ wird nicht benötigt und kann übersprungen werden.
  • Klicken Sie auf „Registrieren“.

Schritt 2: Konfigurieren der API-Berechtigungen

  • Öffnen Sie die neu erstellte App-Registrierung.
  • Klicken Sie auf „API-Berechtigungen“ und dann auf „Berechtigung hinzufügen“.
  • Wählen Sie „Microsoft APIs“ und dann „Power BI Service“.
  • Wählen Sie „Welche Art von Berechtigungen sind für Ihre Anwendung erforderlich?“ die Option „Anwendungsberechtigung“ aus.
  • Wählen Sie die erforderliche Berechtigung „Tenant.Read.All“ für das Lesen von Datasets.
  • Klicken Sie auf „Berechtigung hinzufügen“.
  • Vergessen Sie nicht, auf „Administratorzustimmung für Ihre Organisation erteilen“ zu klicken, um die Berechtigungen zu bestätigen.

Schritt 3: Generieren eines Client-Geheimnisses

  • Gehen Sie zur App-Registrierung und klicken Sie auf „Zertifikate & Geheimnisse“.
  • Klicken Sie auf „Neuer geheimer Schlüssel“ und geben Sie eine Beschreibung sowie die Gültigkeitsdauer an.
  • Klicken Sie auf „Hinzufügen“. Notieren Sie sich den Wert des Geheimnisses, da dieser nur einmal angezeigt wird.

Schritt 4: Erstellen einer Sicherheitsgruppe

Im nächsten Schritt erstellen wir eine Sicherheitsgruppe. Dieser Sicherheitsgruppe weisen wir das Dienstprinzipal der erstellten App-Registrierung als Mitglied zu.

Dieser Sicherheitsgruppe erteilen wir in den folgenden Schritten die Berechtigung, um auf Power BI Ressourcen über die API zuzugreifen.

Schritt 5: Konfigurieren der Power BI Admin-Einstellungen für API-Zugriffe

  • Melden Sie sich im Power BI Admin-Portal unter https://app.powerbi.com/admin-portal/tenantSettings?experience=power-bi an.
  • Klicken Sie auf „Mandanten-Einstellungen“.
  • Scrollen Sie zu „Dienstprinzipale“ und aktivieren Sie die Option „Dienstprinzipale verwenden, um auf Power BI API zuzugreifen“.
  • Den Zugriff schränken wir auf die in Schritt 4 erstellte Sicherheitsgruppe ein.
  • Klicken Sie auf „Übernehmen“.

Schritt 6: Konfigurieren der Power BI Admin-Einstellungen für DAX-Abfragen

  • Melden Sie sich im Power BI Admin-Portal unter https://app.powerbi.com/admin-portal/tenantSettings?experience=power-bi an.
  • Klicken Sie auf „Mandanten-Einstellungen“.
  • Scrollen Sie zu „Integrationseinstellungen“ und aktivieren Sie die Option „REST-API des semantischen Modells zur Ausführung von Abfragen“.
  • Den Zugriff schränken wir auf die in Schritt 4 erstellte Sicherheitsgruppe ein.
  • Klicken Sie auf „Übernehmen“.

Schritt 7: Verwenden des Dienstprinzipale zur Authentifizierung

Mit den folgenden Informationen können Sie nun die Power BI REST API verwenden:

  • Client-ID (Anwendungs-ID der App-Registrierung)
  • Client-Geheimnis
  • Tenant-ID (Verzeichnis-ID)

Sie können diese Informationen in Ihre Anwendungen oder Skripte einfügen, um API-Aufrufe wie folgt zu authentifizieren:

Beispiel für die Authentifizierung

POST URL: https://login.microsoftonline.com/{Ihre-Tenant-ID}/oauth2/v2.0/token

Als Antwort erhalten Sie ein „access_token“. Diesen Token verwenden wir für alle weiteren Anfragen.

Schritt 8: DAX-Abfrage an semantisches Modell senden

Folgende Informationen werden benötigt:

  • Access Token
  • Dataset-ID: Die Dataset ID kopieren Sie z.B. aus der URL im Browser, nachdem Sie ein Sematikmodell geöffnet haben.
    https://app.powerbi.com/groups/…./datasets/dfdfdfdfdf3daf-3317-4536-9ec3-dfdfd2dfdfb66dbfffdbe/details
    In diesem Beispiel ist „dfdfdfdfdf3daf-3317-4536-9ec3-dfdfd2dfdfb66dbfffdbe“ die benötigte ID

Beispiel für die Abfrage

POST URL: https://api.powerbi.com/v1.0/myorg/datasets/{Dataset-ID}/executeQueries

Die Anmeldung erfolgt mit dem in Schritt 6 erzeugten Access-Token über eine entsprechende „Bearer Token Authorization“.

Beispiel Postman:

Im „Body“ der Abfrage senden wir die eigentliche DAX-Abfrage:

Beispiel Postman:

Fazit

Durch die Einrichtung eines Dienstprinzipals und die Konfiguration von API-Berechtigungen können Sie die Power BI REST API sicher und effizient nutzen. Diese Methode bietet eine robuste und skalierbare Lösung für den automatisierten Zugriff auf Power BI-Daten und -Dienste.

Schlagwörter: Service Principal, App-Registrierung, Hintergrunddienst, REST Service, Power BI API