Erstellen einer Microsoft Entra Anwendungsregistrierung in Azure Data Explorer

Microsoft Entra Anwendungsauthentifizierung wird für Anwendungen verwendet, z. B. für einen unbeaufsichtigten Dienst oder einen geplanten Flow, die auf Azure Data Explorer zugreifen müssen, ohne dass ein Benutzer anwesend ist. Wenn Sie eine Verbindung mit einer Azure Data Explorer-Datenbank herstellen, indem Sie eine Anwendung wie eine Web-App verwenden, sollten Sie sich mit Dienstprinzipalauthentifizierung authentifizieren. In diesem Artikel wird beschrieben, wie Sie einen Microsoft Entra-Dienstprinzipal erstellen und registrieren und ihn dann für den Zugriff auf eine Azure Data Explorer-Datenbank autorisieren.

Erstellen Microsoft Entra Anwendungsregistrierung

Microsoft Entra Anwendungsauthentifizierung erfordert das Erstellen und Registrieren einer Anwendung bei Microsoft Entra ID. Ein Dienstprinzipal wird automatisch erstellt, wenn die Anwendungsregistrierung in einem Microsoft Entra Mandanten erstellt wird.

Die App-Registrierung kann entweder im Azure-Portal oder programmgesteuert mit der Azure CLI erstellt werden. Wählen Sie die Registerkarte aus, die zu Ihrem Szenario passt.

Registrieren der App

  1. Melden Sie sich bei Azure-Portal an, und öffnen Sie das Blatt Microsoft Entra ID.

  2. Navigieren Sie zu App-Registrierungen, und wählen Sie Neue Registrierung aus.

    Screenshot: Starten einer neuen App-Registrierung

  3. Benennen Sie die Anwendung, z. B. „beispiel-app“.

  4. Wählen Sie einen unterstützten Kontotyp aus, der bestimmt, von wem die Anwendung verwendet werden kann.

  5. Wählen Sie unter Umleitungs-URI als Typ der Anwendung, die Sie erstellen möchten, Web aus. Der URI ist optional und wird in diesem Fall leer gelassen.

    Screenshot: Registrieren einer neuen App-Registrierung

  6. Wählen Sie Registrieren.

Einrichten der Authentifizierung

Für Dienstprinzipale sind zwei Arten von Authentifizierung verfügbar: kennwortbasierte Authentifizierung (Anwendungsgeheimnis) und zertifikatbasierte Authentifizierung. Im folgenden Abschnitt wird die Verwendung einer kennwortbasierten Authentifizierung für die Anmeldeinformationen der Anwendung beschrieben. Alternativ können Sie ein X509-Zertifikat verwenden, um Ihre Anwendung zu authentifizieren. Weitere Informationen finden Sie unter Konfigurieren Microsoft Entra zertifikatbasierten Authentifizierung.

Im Verlauf dieses Abschnitts kopieren Sie die folgenden Werte: Anwendungs-ID und Schlüsselwert. Fügen Sie diese Werte wie einen Text-Editor an eine beliebige Stelle ein, um sie im Schritt Konfigurieren von Clientanmeldeinformationen für die Datenbank zu verwenden.

  1. Navigieren Sie zum Blatt Übersicht .

  2. Kopieren Sie die Anwendungs-ID (Client) und die Verzeichnis-ID (Mandant).

    Hinweis

    Sie benötigen die Anwendungs-ID und die Mandanten-ID, um den Dienstprinzipal für den Zugriff auf die Datenbank zu autorisieren.

  3. Wählen Sie auf dem Blatt Zertifikate & Geheimnisse die Option Neuer geheimer Clientschlüssel aus.

    Screenshot: Starten der Erstellung eines geheimen Clientschlüssels

  4. Geben Sie eine Beschreibung und einen Ablauf ein.

  5. Wählen Sie Hinzufügen.

  6. Kopieren Sie den Schlüsselwert.

    Hinweis

    Wenn Sie diese Seite verlassen, kann auf den Schlüsselwert nicht zugegriffen werden.

Sie haben Ihre Microsoft Entra-Anwendung und den Dienstprinzipal erstellt.

Konfigurieren delegierter Berechtigungen für die Anwendung – optional

Wenn Ihre Anwendung mithilfe der Anmeldeinformationen des aufrufenden Benutzers auf Ihre Datenbank zugreifen muss, konfigurieren Sie delegierte Berechtigungen für Ihre Anwendung. Wenn Sie beispielsweise eine Web-API erstellen und sich mit den Anmeldeinformationen des Benutzers authentifizieren möchten, der Ihre API aufruft .

Wenn Sie nur Zugriff auf eine autorisierte Datenressource benötigen, können Sie diesen Abschnitt überspringen und mit Gewähren des Zugriffs auf die Datenbank für einen Dienstprinzipal fortfahren.

  1. Navigieren Sie zum Blatt "API-Berechtigungen " Ihrer App-Registrierung.

  2. Wählen Sie Berechtigung hinzufügen aus.

  3. Wählen Sie Von meiner Organisation verwendete APIs aus.

  4. Suchen Sie nach Azure Data Explorer, und wählen Sie diese Option aus.

    Screenshot: Hinzufügen einer Azure Data Explorer-API-Berechtigung

  5. Wählen Sie unter Delegierte Berechtigungen das Feld user_impersonation aus.

  6. Wählen Sie Berechtigungen hinzufügen aus.

    Screenshot: Auswählen delegierter Berechtigungen mit Benutzeridentitätswechsel

Gewähren des Zugriffs auf die Datenbank durch einen Dienstprinzipal

Nachdem Ihre Anwendungsregistrierung erstellt wurde, müssen Sie dem entsprechenden Dienstprinzipal Zugriff auf Ihre Datenbank gewähren. Im folgenden Beispiel wird Zugriff zum Anzeigen gewährt. Informationen zu anderen Rollen finden Sie unter Verwalten von Datenbankberechtigungen.

  1. Verwenden Sie die Werte der Anwendungs-ID und der Mandanten-ID, wie sie in einem vorherigen Schritt kopiert wurden.

  2. Führen Sie den folgenden Befehl in Ihrem Abfrage-Editor aus, und ersetzen Sie dabei die Platzhalterwerte ApplicationID und TenantID durch Ihre tatsächlichen Werte:

    .add database <DatabaseName> viewers ('aadapp=<ApplicationID>;<TenantID>') '<Notes>'
    

    Beispiel:

    .add database Logs viewers ('aadapp=1234abcd-e5f6-g7h8-i9j0-1234kl5678mn;9876abcd-e5f6-g7h8-i9j0-1234kl5678mn') 'App Registration'
    

    Der letzte Parameter ist eine Zeichenfolge, die als Notizen angezeigt wird, wenn Sie die einer Datenbank zugeordneten Rollen abfragen.

    Hinweis

    Nach dem Erstellen der Anwendungsregistrierung kann es zu einer verzögerung von mehreren Minuten kommen, bis darauf verwiesen werden kann. Wenn Sie eine Fehlermeldung erhalten, dass die Anwendung nicht gefunden wurde, warten Sie, und versuchen Sie es erneut.

Weitere Informationen zu Rollen finden Sie unter Rollenbasierte Zugriffssteuerung.

Verwenden von Anwendungsanmeldeinformationen für den Zugriff auf eine Datenbank

Verwenden Sie die Anmeldeinformationen der Anwendung, um programmgesteuert mithilfe der Clientbibliothek auf Ihre Datenbank zuzugreifen.

. . .
string applicationClientId = "<myClientID>";
string applicationKey = "<myApplicationKey>";
string authority = "<myApplicationTenantID>";
. . .
var kcsb = new KustoConnectionStringBuilder($"https://{clusterName}.kusto.windows.net/{databaseName}")
    .WithAadApplicationKeyAuthentication(
        applicationClientId,
        applicationKey,
        authority);
var client = KustoClientFactory.CreateCslQueryProvider(kcsb);
var queryResult = client.ExecuteQuery($"{query}");

Hinweis

Geben Sie die Anwendungs-ID und den Schlüssel der zuvor erstellten Anwendungsregistrierung (Dienstprinzipal) an.

Weitere Informationen finden Sie unter Authentifizieren mit der Microsoft Authentication Library (MSAL) in Apps und Verwenden von Azure Key Vault mit .NET Core-Web-App.

Problembehandlung

Fehler „Ungültige Ressource“

Wenn Ihre Anwendung zum Authentifizieren von Benutzern oder Anwendungen für den Zugriff verwendet wird, müssen Sie delegierte Berechtigungen für die Dienstanwendung einrichten. Deklarieren Sie, dass Ihre Anwendung Benutzer oder Anwendungen für den Zugriff authentifizieren kann. Wenn dies nicht geschieht, führt dies zu einem Fehler, der dem folgenden ähnelt, wenn ein Authentifizierungsversuch erfolgt:

AADSTS650057: Invalid resource. The client has requested access to a resource which is not listed in the requested permissions in the client's application registration...

Sie müssen die Anweisungen befolgen, um delegierte Berechtigungen für die Anwendung zu konfigurieren.

Ihr Microsoft Entra Mandantenadministrator erlässt möglicherweise eine Richtlinie, die verhindert, dass Mandantenbenutzer Ihre Zustimmung zu Anwendungen erteilen. Diese Situation führt zu einem Fehler, der dem folgenden ähnelt, wenn ein Benutzer versucht, sich bei Ihrer Anwendung anzumelden:

AADSTS65001: The user or administrator has not consented to use the application with ID '<App ID>' named 'App Name'

Sie müssen sich an Ihren Microsoft Entra Administrator wenden, um allen Benutzern im Mandanten die Zustimmung zu erteilen oder die Benutzerzustimmung für Ihre spezifische Anwendung zu aktivieren.