Erstellen einer Microsoft Entra-Anwendungsregistrierung in Azure Data Explorer
Die Microsoft Entra-Anwendungsauthentifizierung wird für Anwendungen verwendet, z. B. für einen unbeaufsichtigten Dienst oder einen geplanten Fluss, der ohne Benutzer auf Azure Data Explorer zugreifen muss. 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 erläutert, wie Sie einen Microsoft Entra-Dienstprinzipal erstellen und registrieren und ihn dann für den Zugriff auf eine Azure Data Explorer-Datenbank autorisieren.
Erstellen der Microsoft Entra-Anwendungsregistrierung
Die Microsoft Entra-Anwendungsauthentifizierung erfordert das Erstellen und Registrieren einer Anwendung mit 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 Azure CLI erstellt werden. Wählen Sie die Registerkarte aus, die Ihrem Szenario entspricht.
Registrieren der App
Melden Sie sich bei Azure-Portal an, und öffnen Sie das Blatt "Microsoft Entra ID".
Navigieren Sie zu App-Registrierungen, und wählen Sie "Neue Registrierung" aus.
Benennen Sie die Anwendung, z. B. „beispiel-app“.
Wählen Sie einen unterstützten Kontotyp aus, der bestimmt, von wem die Anwendung verwendet werden kann.
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.
Wählen Sie Registrieren aus.
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 der zertifikatbasierten Microsoft Entra-Authentifizierung.
Im Verlauf dieses Abschnitts kopieren Sie die folgenden Werte: Anwendungs-ID und Schlüsselwert. Fügen Sie diese Werte an einer beliebigen Stelle, z. B. einem Text-Editor, für die Verwendung im Schritt zum Konfigurieren von Clientanmeldeinformationen für die Datenbank ein.
Navigieren Sie zum Blatt "Übersicht" .
Kopieren Sie die Anwendungs-ID (Client-ID ) 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.
Wählen Sie im Blatt "Zertifikate und Geheime Schlüssel " die Option "Neuer geheimer Clientschlüssel" aus.
Geben Sie eine Beschreibung und einen Ablauf ein.
Wählen Sie Hinzufügen.
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 mithilfe der 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 weiterhin einen Dienstprinzipalzugriff auf die Datenbank gewähren.
Navigieren Sie zum Api-Berechtigungsblatt Ihrer App-Registrierung.
Wählen Sie Berechtigung hinzufügen aus.
Wählen Sie Von meiner Organisation verwendete APIs aus.
Suchen Sie nach Azure Data Explorer, und wählen Sie diese Option aus.
Wählen Sie in delegierten Berechtigungen das Feld user_impersonation aus.
Wählen Sie Zugriffsrechte hinzufügen.
Gewähren eines Dienstprinzipalzugriffs auf die Datenbank
Nachdem Ihre Anwendungsregistrierung erstellt wurde, müssen Sie den entsprechenden Dienstprinzipalzugriff auf Ihre Datenbank gewähren. Im folgenden Beispiel wird Zugriff zum Anzeigen gewährt. Weitere Rollen finden Sie unter Verwalten von Datenbankberechtigungen.
Verwenden Sie die Werte der Anwendungs-ID und der Mandanten-ID, wie sie in einem vorherigen Schritt kopiert wurden.
Führen Sie den folgenden Befehl im Abfrage-Editor aus, und ersetzen Sie die Platzhalterwerte ApplicationID und TenantID durch Ihre tatsächlichen Werte:
.add database <DatabaseName> viewers ('aadapp=<ApplicationID>;<TenantID>') '<Notes>'
Zum 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 eine Verzögerung von mehreren Minuten geben, bis auf sie 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 Anwendungsanmeldeinformationen, 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 How to authenticate with Microsoft Authentication Library (MSAL) in apps and use Azure Key Vault with .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 Ihre Anwendung, um Benutzer oder Anwendungen für den Zugriff zu authentifizieren. 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 den Anweisungen folgen, um delegierte Berechtigungen für die Anwendung zu konfigurieren.
Fehler „Benutzereinwilligung aktivieren“
Möglicherweise erlässt Ihr Microsoft Entra-Mandantenadministrator eine Richtlinie, die verhindert, dass Mandantenbenutzer Anwendungen zustimmen. 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 die Zustimmung für alle Benutzer im Mandanten zu erteilen oder die Benutzerzustimmung für Ihre spezifische Anwendung zu aktivieren.