Einbetten von Power BI-Inhalten mit Dienstprinzipal und Zertifikat

Mithilfe der zertifikatbasierten Authentifizierung können Sie mithilfe von Microsoft Entra ID und eines Clientzertifikats authentifiziert werden. Das Clientzertifikat kann sich auf einem Windows-, Android- oder iOS-Gerät befinden oder in Azure Key Vault aufbewahrt werden.

Die Verwendung dieser Authentifizierungsmethode ermöglicht die Verwaltung von Zertifikaten an einem zentralen Ort mithilfe der Zertifizierungsstelle (ZS) für die Rotation oder Sperrung.

Weitere Informationen zu Zertifikaten in Microsoft Entra ID finden Sie auf der GitHub-Seite Flow von Clientanmeldeinformationen.

Methode

  1. Einbetten der Inhalte mit dem Dienstprinzipal

  2. Erstellen eines Zertifikats

  3. Einrichten einer Zertifikatauthentifizierung

  4. Abrufen eines Zertifikats aus Azure Key Vault

  5. Authentifizieren mithilfe des Dienstprinzipals und eines Zertifikats

Schritt 1: Einbetten der Inhalte mit dem Dienstprinzipal

Befolgen Sie die Anweisungen unter Einbetten von Power BI-Inhalten mit Dienstprinzipal und Anwendungsgeheimnis, um Ihre Inhalte mit dem Dienstprinzipal einzubetten.

Hinweis

Wenn Sie bereits über Inhalte verfügen, die mithilfe eines Dienstprinzipals eingebettet sind, überspringen Sie diesen Schritt, und fahren Sie mit Schritt 2 fort.

Schritt 2: Erstellen eines Zertifikats

Sie können ein Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle verwenden oder selbst ein Zertifikat generieren.

In diesem Abschnitt wird beschrieben, wie Sie mithilfe von Azure Key Vault ein Zertifikat erstellen und die CER-Datei mit dem öffentlichen Schlüssel herunterladen.

  1. Melden Sie sich bei Microsoft Azure an.

  2. Suchen Sie nach Schlüsseltresore, und wählen Sie diese Option aus.

    Screenshot of the Azure portal window, which shows a link to the key vault service in the Services list.

  3. Wählen Sie den Schlüsseltresor aus, dem Sie ein Zertifikat hinzufügen möchten.

    Screenshot of the Azure portal window, which shows a list of blurred out key vaults in the Key vaults list.

  4. Wählen Sie Zertifikateaus.

    Screenshot of the Azure portal window, which shows the Key vaults page with the highlighted Certificates item.

  5. Wählen Sie die Option Generieren/Importieren aus.

    Screenshot of the Azure portal window, which shows the Certificate pane with the highlighted Generate / Import item.

  6. Konfigurieren Sie die Felder zum Erstellen eines Zertifikats wie folgt:

    • Methode der Zertifikaterstellung – Generieren

    • Zertifikatname: Geben Sie einen Namen für das Zertifikat ein.

    • Type of Certificate Authority (CA) (Art der Zertifizierungsstelle (Certificate Authority, CA)): selbstsigniertes Zertifikat

    • Subject (Antragsteller): ein Distinguished X.500-Name

    • DNS-Namen: 0 DNS-Namen

    • Gültigkeitsdauer (in Monaten): Geben Sie die Gültigkeitsdauer des Zertifikats ein.

    • Inhaltstyp: PKCS #12

    • Lebensdauer-Aktionstyp: automatische Erneuerung bei Erreichen des vorgegebenen Prozentsatzes der Lebensdauer

    • Prozentsatz der Lebensdauer: 80

    • Erweiterte Richtlinienkonfiguration: nicht konfiguriert

  7. Klicken Sie auf Erstellen. Das neu erstellte Zertifikat ist standardmäßig deaktiviert. Es kann bis zu fünf Minuten dauern, bis es aktiviert wird.

  8. Wählen Sie das Zertifikat aus, das Sie erstellt haben.

  9. Wählen Sie Im CER-Format herunterladen aus. Die heruntergeladene Datei enthält den öffentlichen Schlüssel.

    Screenshot of the Azure portal window, which shows the highlighted Download in CER Format button.

Schritt 3: Einrichten der Zertifikatauthentifizierung

  1. Wählen Sie in Ihrer Microsoft Entra-Anwendung die Registerkarte Zertifikate und Geheimnisse aus.

    Screenshot of the Azure portal window, which shows the certificates and secrets pane for an app.

  2. Wählen Sie Zertifikat hochladen aus, und laden Sie die CER-Datei hoch, die Sie in Schritt 2 dieses Tutorials erstellt und heruntergeladen haben. Die CER-Datei enthält den öffentlichen Schlüssel.

Schritt 4: Abrufen eines Zertifikats aus Azure Key Vault

Verwenden Sie die verwaltete Dienstidentität, um das Zertifikat aus Azure Key Vault abzurufen. Bei diesem Vorgang wird das PFX-Zertifikat abgerufen, das sowohl den öffentlichen als auch den privaten Schlüssel enthält.

Informationen zum Lesen des Zertifikats aus Azure Key Vault finden Sie im Codebeispiel. Wenn Sie Visual Studio verwenden möchten, erhalten Sie weitere Informationen unter Konfigurieren von Visual Studio zur Verwendung der verwalteten Dienstidentität.

private X509Certificate2 ReadCertificateFromVault(string certName)
{
    var serviceTokenProvider = new AzureServiceTokenProvider();
    var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(serviceTokenProvider.KeyVaultTokenCallback));
    CertificateBundle certificate = null;
    SecretBundle secret = null;

    certificate = keyVaultClient.GetCertificateAsync($"https://{KeyVaultName}.vault.azure.net/", certName).Result;
    secret = keyVaultClient.GetSecretAsync(certificate.SecretIdentifier.Identifier).Result;
    
    return new X509Certificate2(Convert.FromBase64String(secret.Value));
}

Schritt 5: Authentifizieren mithilfe des Dienstprinzipals und eines Zertifikats

Sie können Ihre App, die einen Dienstprinzipal und ein Zertifikat, das in Azure Key Vault gespeichert ist, verwendet, authentifizieren, indem Sie eine Verbindung mit Azure Key Vault herstellen.

Informationen zum Herstellen einer Verbindung und zum Lesen des Zertifikats aus Azure Key Vault finden Sie im folgenden Codebeispiel.

Hinweis

Wenn Sie bereits über ein Zertifikat verfügen, das von Ihrer Organisation erstellt wurde, laden Sie die PFX-Datei in Azure Key Vault hoch.

// Preparing needed variables
var Scope = "https://analysis.windows.net/powerbi/api/.default"
var ApplicationId = "{YourApplicationId}"
var tenantSpecificURL = "https://login.microsoftonline.com/{YourTenantId}/"
X509Certificate2 certificate = ReadCertificateFromVault(CertificateName);

// Authenticating with a SP and a certificate
public async Task<AuthenticationResult> DoAuthentication(){
    IConfidentialClientApplication clientApp = null;
    clientApp = ConfidentialClientApplicationBuilder.Create(ApplicationId)
                                                    .WithCertificate(certificate)
                                                    .WithAuthority(tenantSpecificURL)
                                                    .Build();
    return await clientApp.AcquireTokenForClient(Scope).ExecuteAsync();
}

Konfigurieren von Visual Studio für die Verwendung der verwalteten Dienstidentität

Beim Erstellen einer eingebetteten Lösung kann es hilfreich sein, Visual Studio für die Verwendung der verwalteten Dienstidentität zu konfigurieren. MSI ist ein Feature, mit dem Sie Ihre Microsoft Entra-Identität verwalten können. Im Anschluss an die Konfiguration wird Visual Studio für Ihre Azure Key Vault-Instanz authentifiziert.

Hinweis

Der Benutzer, der sich bei Visual Studio anmeldet, muss über Azure Key Vault-Berechtigungen verfügen, um das Zertifikat abzurufen.

  1. Öffnen Sie Ihr Projekt in Visual Studio.

  2. Wählen Sie Extras>Optionen aus.

    Screenshot of the Visual Studio window, which shows the highlighted Options button in the Tools menu.

  3. Suchen und wählen Sie Kontoauswahl aus.

    Screenshot of the Visual Studio Options window, which shows the highlighted Account Selection option in the search results.

  4. Fügen Sie das Konto hinzu, das Zugriff auf Ihre Azure Key Vault-Instanz hat.