Einführung

Abgeschlossen

Das Entwicklung einer Automatisierungslösung ist nützlich, wenn Sie Verwaltungsvorgänge reproduzieren müssen. Automatisierung führt zu einer schnelleren und genaueren Verwaltung von Lösungen.

Bei der Entwicklung von Apps, die Power BI-Inhalte einbetten, gibt es viele Gelegenheiten zur Automatisierung (einschließlich der Lebenszyklusverwaltung, des Hinzufügens neuer Mandanten (Kunden) in einer mehrinstanzenfähigen App und verschiedener IT-Vorgänge).

In diesem Fall stehen drei Automatisierungsbibliotheken zur Verfügung, die Sie verwenden können:

  • Microsoft Graph

  • Microsoft Power BI REST-API

  • Power BI Embedded Azure Resource Manager (ARM) REST-API

Microsoft Graph

Microsoft Graph bietet ein einheitliches Programmierbarkeitsmodell. Es macht REST-APIs und eine Clientbibliothek für den Zugriff auf Daten und das Ausführen von Vorgängen in verschiedenen Microsoft-Clouddiensten verfügbar. Microsoft Graph ist für die Automatisierung von Power BI-Lösungen relevant und kann Sicherheitsobjekte von Microsoft Azure Active Directory einrichten. Graph-API-Aufrufe können von Ihrer App oder von PowerShell-Skripts aufgerufen werden.

Das folgende Skript zeigt, wie Sie das Azure AD PowerShell-Modul für Graph in PowerShell installieren. Weitere Informationen finden Sie unter Installieren von Azure Active Directory PowerShell für Graph.

Install-Module -Name AzureAD

Die folgenden Codeblöcke tragen zum ersten Teil eines PowerShell-Setupskripts bei, um Sicherheitsobjekte für eine neue App einzurichten, die Power BI-Inhalte einbettet. Insbesondere die Codeblöcke zeigen die Ausführung der folgenden Aktionen (in Reihenfolge):

  1. Generieren eines Azure AD-App-Geheimnisses

  2. Erstellen einer Azure AD-App-Registrierung

  3. Erstellen des Dienstprinzipals für die Azure AD-App-Registrierung

  4. Zuweisen der aktuellen Benutzer*innen als Registrierungsbesitzer*innen der Azure AD-App

  5. Hinzufügen des Dienstprinzipals zur Sicherheitsgruppe Power BI-Apps

Der erste Codeblock initialisiert zwei Variablen. In der Variable $appDisplayName ist der Name der neuen Azure AD-App gespeichert und in der Variable $adSecurityGroupName der Name einer vorhandenen Sicherheitsgruppe. In den Power BI-Mandanteneinstellungen hat ein Power BI-Administrator diese Sicherheitsgruppe bereits zugewiesen, als die Verwendung von Dienstprinzipalen zugelassen wurde.

# The new app display name
$appDisplayName = "My app"

# The name of an existing security group
$adSecurityGroupName = "Power BI Apps"

Der nächste Codeblock stellt eine Verbindung mit einem authentifizierten Konto her, um Cmdlet-Anforderungen von Azure AD verwenden zu können. Außerdem initialisiert er Variablen mit nützlichen Fakten zum Mandanten und dem aktuellen Benutzerkonto. Diese Fakten werden von nachfolgenden Codeblöcken verwendet.

$authResult = Connect-AzureAD

$tenantId = $authResult.TenantId.ToString()
$tenantDomain = $authResult.TenantDomain

$userAccountId = $authResult.Account.Id
$user = Get-AzureADUser -ObjectId $userAccountId

Im nächsten Codeblock wird ein App-Geheimnis generiert, das als Kennwort für eine Azure AD-App-Registrierung dient. Das App-Geheimnis basiert auf einer GUID und ist ab dem aktuellen Datum ein Jahr lang gültig.

# Generate an app secret
$newGuid = New-Guid
$appSecret = ([System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(($newGuid))))+"="
$startDate = Get-Date
$passwordCredential = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordCredential
$passwordCredential.StartDate = $startDate
$passwordCredential.EndDate = $startDate.AddYears(1)
$passwordCredential.KeyId = $newGuid
$passwordCredential.Value = $appSecret

Im nächsten Codeblock wird mithilfe des App-Geheimnisses eine Azure AD-App-Registrierung erstellt.

# Create an Azure AD app
$replyUrl = "https://localhost:5001/signin-oidc"

$aadApplication = New-AzureADApplication `
    -DisplayName $appDisplayName `
    -PublicClient $false `
    -AvailableToOtherTenants $false `
    -ReplyUrls @($replyUrl) `
    -Homepage $replyUrl `
    -PasswordCredentials $passwordCredential

Der nächste Codeblock erstellt den Dienstprinzipal der App-Registrierung. Darüber hinaus wird der aktuelle Benutzer als Besitzer zugewiesen und der Dienstprinzipal zur Sicherheitsgruppe hinzugefügt.

# Create the app's service principal
$appId = $aadApplication.AppId
$appObjectId = $aadApplication.ObjectId
$serviceServicePrincipal = New-AzureADServicePrincipal -AppId $appId
$serviceServicePrincipalObjectId = $serviceServicePrincipal.ObjectId

# Assign the current user as the app owner
Add-AzureADApplicationOwner -ObjectId $aadApplication.ObjectId -RefObjectId $user.ObjectId

# Add the service principal to the security group
Add-AzureADGroupMember -ObjectId $($adSecurityGroup.ObjectId) `
    -RefObjectId $($serviceServicePrincipalObjectId)

Die folgenden Skriptvariablen enthalten nützliche Informationen für Ihre App. Ihre Werte sollten geschrieben und der Konfigurationsdatei der App hinzugefügt werden.

  • $tenantDomain: Für die Authentifizierung bei Azure AD erforderlich

  • $tenantId: Für die Authentifizierung bei Azure AD erforderlich

  • $appId: Für die Generierung eines Azure AD-Zugriffstokens erforderlich

  • $appSecret: Für die Generierung eines Azure AD-Zugriffstokens erforderlich. Jedoch sollten Geheimnisse nicht zusammen mit der App bereitgestellt werden. Stattdessen sollte der Zugriff auf sie über ein kontrolliertes Mittel erfolgen, wie Umgebungsvariablen oder Microsoft Azure Key Vault. Weitere Informationen finden Sie unter Sichere Speicherung von App-Geheimnissen bei der Entwicklung in ASP.NET Core.

Die $serviceServicePrincipalObjectId-Variable speichert einen Verweis auf den neuen Dienstprinzipal. Im nächsten Thema wird diese Variable in einer Fortsetzung des Skripts verwendet.

Power BI-REST-API

Die Power BI-REST-API stellt Dienstendpunkte für die Einbettung, die Verwaltung, Governance und für Benutzerressourcen bereit. Die Power BI REST-API kann für die Automatisierung von Power BI-Lösungen relevant sein und die folgenden Aufgaben ausführen:

  • Erstellen von Arbeitsbereichen

  • Zuweisen eines Arbeitsbereichs zu einer Kapazität

  • Einrichten des Zugriffs auf Arbeitsbereiche

  • Erstellen und Einrichten von Power BI-Inhalten

Das folgende Skript zeigt, wie das Power BI-Verwaltungsmodul in PowerShell installiert wird. Weitere Informationen finden Sie unter Microsoft Power BI-Cmdlets für Windows PowerShell und PowerShell Core.

Install-Module -Name MicrosoftPowerBIMgmt

Die folgenden Codeblöcke tragen zum zweiten Teil eines PowerShell-Setupskripts bei. Sie stellen eine Fortsetzung des im vorherigen Artikel beschriebenen Skripts dar. Die Codeblöcke bewirken die Einrichtung der Power BI-Umgebung. Insbesondere zeigen sie, wie Sie die folgenden Aufgaben ausführen:

  • Erstellen eines Arbeitsbereichs.

  • Hinzufügen eines Dienstprinzipals als Arbeitsbereichsadministrator

  • Importieren einer Power BI Desktop-Datei, um ein Dataset und einen Bericht zu erstellen

Der erste Codeblock initialisiert zwei Variablen. Die Variable $workspaceName speichert den Namen des neuen Arbeitsbereichs und die Variable $pbixFilePath speichert den Dateipfad zu einer Power BI Desktop-Datei.

# The new workspace name
$workspaceName = "Sales Reporting"

# The file path to a Power BI Desktop file (.pbix)
$pbixFilePath = "D:\Sales Analysis.pbix"

Der nächste Codeblock stellt mit einem authentifizierten Konto eine Verbindung mit dem Power BI-Dienst her. Anschließend wird versucht, einen Verweis auf den Arbeitsbereich abzurufen. Wenn ein Fehler auftritt (weil der Arbeitsbereich nicht vorhanden ist), wird der Arbeitsbereich erstellt. Schließlich speichert die Variable $workspaceId die Arbeitsbereichs-ID (als GroupID bezeichnet).

Connect-PowerBIServiceAccount

# Create the workspace (if it doesn't already exist)
$workspace = Get-PowerBIWorkspace -Name $workspaceName

if (!$workspace) {
    $workspace = New-PowerBIWorkspace -Name $workspaceName
}

$workspaceId = $workspace.Id

Im nächsten Codeblock wird der Dienstprinzipal als Arbeitsbereichsadministrator hinzugefügt.

# Add the service principal as a workspace admin
Add-PowerBIWorkspaceUser -Scope Organization `
    -Id $workspaceId `
    -AccessRight Admin `
    -Identifier $serviceServicePrincipalObjectId `
    -PrincipalType App

Der nächste Codeblock importiert eine Power BI Desktop-Datei in den neuen Arbeitsbereich.

# Import the Power BI Desktop file
$import = New-PowerBIReport -Path $pbixFilePath -Workspace $workspace -ConflictAction CreateOrOverwrite

Die Variable $workspaceId enthält nützliche Informationen für Ihre App. Sie sollten den Variablenwert schreiben und ihn der Konfigurationsdatei der App hinzufügen. Sie können die Variable verwenden, um Arbeitsbereichsartefakte aufzuzählen, um Eigenschaften abzurufen, die zu ihrer Einbindung erforderlich sind.

Power BI Embedded ARM-REST-API

Mit der Power BI Embedded-ARM-REST-API können Sie Power BI Embedded-Kapazitäten erstellen, abrufen, aktualisieren und löschen.

Hinweis

Diese API kann nicht für die Verwaltung von Power BI Premium-Kapazitäten verwendet werden. Weitere Informationen finden Sie unter Konfigurieren und Verwalten von Kapazitäten in Power BI Premium.

Sie können den Update-Vorgang verwenden, um eine Kapazitätsressource zu skalieren (beispielsweise wenn ein plötzlicher Anstieg der Nachfrage nach Computeressourcen auftritt). Andere Vorgänge halten eine Kapazität an oder setzen sie fort.

Hinweis

Informationen zum Verwalten von Kapazitätsressourcen und zur Skalierung finden Sie im Modul Auswählen eines eingebetteten Power BI-Analyseprodukts.

Weitere Informationen finden Sie in der Referenz zur Power BI Embedded Azure Resource Manager-REST-API