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
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.
Melden Sie sich bei Microsoft Azure an.
Suchen Sie nach Schlüsseltresore, und wählen Sie diese Option aus.
Wählen Sie den Schlüsseltresor aus, dem Sie ein Zertifikat hinzufügen möchten.
Wählen Sie Zertifikateaus.
Wählen Sie die Option Generieren/Importieren aus.
Konfigurieren Sie die Felder zum Erstellen eines Zertifikats wie folgt:
Methode der Zertifikaterstellung: allgemein
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
Klicken Sie auf Erstellen. Das neu erstellte Zertifikat ist standardmäßig deaktiviert. Es kann bis zu fünf Minuten dauern, bis es aktiviert wird.
Wählen Sie das Zertifikat aus, das Sie erstellt haben.
Wählen Sie Im CER-Format herunterladen aus. Die heruntergeladene Datei enthält den öffentlichen Schlüssel.
Schritt 3: Einrichten der Zertifikatauthentifizierung
Wählen Sie in Ihrer Microsoft Entra-Anwendung die Registerkarte Zertifikate und Geheimnisse aus.
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.
Öffnen Sie Ihr Projekt in Visual Studio.
Wählen Sie Extras>Optionen aus.
Suchen und wählen Sie Kontoauswahl aus.
Fügen Sie das Konto hinzu, das Zugriff auf Ihre Azure Key Vault-Instanz hat.