Azure SQL-Authentifizierung mit AD

Marcin Miazga
Marcin Miazga
May 8, 2025
15 min read
Loading the Elevenlabs Text to Speech AudioNative Player...

Azure SQL-Authentifizierung mit AD

Sie entscheiden sich dafür, einfach einen Datenbankbenutzer zu erstellen und eine einfache SQL-Authentifizierung zu verwenden — aber das ist nicht immer möglich, insbesondere wenn es sich um stark eingeschränkte Daten handelt.

 

In solchen Fällen sind wir gezwungen, die AD-Authentifizierung zu verwenden, und um die Dinge noch unfreundlicher zu machen, müssen wir oft einen technischen Benutzer für die geplante Verarbeitung und dergleichen hinzuziehen.

 

Es ist nicht übermäßig kompliziert, aber der Prozess ist möglicherweise nicht sehr einfach. Besuchen Sie unsere Beratung im Bereich Datentechnik um Lösungen zu finden, die für Ihr Unternehmen geeignet sind

 

Lösung

Um die Azure SQL-Authentifizierung mit Azure Active Directory (AD) einzurichten, müssen Sie zunächst eine erstellen App-Registrierung im Azure Active Directory. Diese App-Registrierung dient als Ersatz für einen „technischen Benutzer“ und ermöglicht uns eine sichere Authentifizierung. Im Folgenden finden Sie eine detaillierte Anleitung, die Sie Schritt für Schritt durch den Vorgang führt:

Schritt 1: Navigieren Sie zu Azure Active Directory

  1. Loggen Sie sich in Ihr ein Azure-Portal.
  2. Suchen Sie im Menü auf der linken Seite und klicken Sie auf Azure Active Directory unter Azure-Dienste. Hier verwalten Sie alle Aspekte Ihres Verzeichnisses, einschließlich der App-Registrierungen.

Schritt 2: Greifen Sie auf App-Registrierungen zu

  1. Sobald Sie sich in Azure Active Directory befinden, suchen Sie nach dem App-Registrierungen Option im Menü auf der linken Seite.
  2. Klicken Sie auf App-Registrierungen um die Liste der vorhandenen App-Registrierungen anzuzeigen oder eine neue zu erstellen.

Schritt 3: Neue App-Registrierung erstellen

  1. In der App-Registrierungen Abschnitt, klicken Sie auf Neue Registrierung Schaltfläche am oberen Bildschirmrand.
  2. Füllen Sie die erforderlichen Angaben aus:
    • Name: Geben Sie einen aussagekräftigen Namen für Ihre App ein (z. B. „SQLauthApp“).
    • Unterstützte Kontotypen: Wählen Einzelner Mieter wenn die App nur innerhalb Ihrer Organisation verwendet wird.
    • URI umleiten: Dies ist vorerst optional und kann leer gelassen werden, es sei denn, Sie haben eine bestimmte URI im Sinn.
  3. Sobald alle Details ausgefüllt sind, klicken Sie auf Registriere dich Schaltfläche, um die App-Registrierung zu erstellen.

Schritt 4: App-Eigenschaften abrufen

Nachdem die App-Registrierung erstellt wurde, müssen Sie einige wichtige Eigenschaften für die weitere Einrichtung sammeln:

  • Anwendungs-ID (Kunde): Dies ist die eindeutige Kennung für Ihre App.
  • Verzeichnis-ID (Mandant): Dies ist die Kennung für Ihren Azure AD-Mandanten.
  • Geheimer Kunde: Sie werden dies im nächsten Schritt erstellen.

Schritt 5: Erstellen Sie ein Client-Geheimnis

  1. Navigiere zum Zertifikate und Geheimnisse Abschnitt in Ihrer App-Registrierung.
  2. Klicken Sie auf Neues Client-Geheimnis um einen geheimen Schlüssel für Ihre App zu generieren.
  3. Geben Sie eine Beschreibung für das Geheimnis ein (z. B. „SqlAuthSecret“) und legen Sie einen Ablaufzeitraum fest (z. B. 6 Monate, 1 Jahr oder benutzerdefiniert).
  4. Klicken Sie Hinzufügen um das Geheimnis zu generieren.
  5. Kopieren Sie den generierten Geheimwert und speichern Sie ihn an einem sicheren Ort wie Azure Key Vault, da er nicht erneut angezeigt wird.

Schritt 6: Berechtigungen zuweisen

  1. Gehe zum API-Berechtigungen Abschnitt Ihrer App-Registrierung.
  2. Klicken Sie auf Eine Erlaubnis hinzufügen und wähle Azure SQL-Datenbank aus der Liste der APIs.
  3. Wählen Sie die entsprechenden Berechtigungen (z. B. Benutzer_Identitätswechsel) und erteilen Sie bei Bedarf die Zustimmung des Administrators.

Schritt 7: Azure SQL konfigurieren

  1. Navigieren Sie im Azure-Portal zu Ihrer Azure SQL-Instanz.
  2. Fügen Sie die App-Registrierung als externen Benutzer in Ihrem SQL-Server hinzu.
  3. Weisen Sie der App die erforderlichen Rollen und Berechtigungen zu, z. B. db_datareader oder db_datawriter, abhängig von Ihren Anforderungen.

Wenn Sie diese Schritte abgeschlossen haben, haben Sie erfolgreich eine App-Registrierung in Azure Active Directory erstellt, die nun als technischer Benutzer für die sichere Authentifizierung mit Azure SQL verwendet werden kann. Dieses Setup stellt sicher, dass Ihre Datenbank geschützt ist und ermöglicht gleichzeitig eine nahtlose Integration in Ihre Anwendungen.

 

Azure services interface showing options to create a resource and access Azure Active Directory for managing app registrations and authentication.

 

Dann wähle App Registrations im Menü auf der linken Seite:

 

Azure Active Directory left-hand menu showing options like Users, Groups, Roles, and App Registrations for managing access and configurations.

 

Klicken Sie im oberen Teil des Bildschirms auf Neue Registrierung:

 

Button labeled 'New registration' in the Azure Active Directory interface for creating a new app registration.

 

Geben Sie den Namen der App ein, aktivieren Sie Single Tenant und klicken Sie abschließend auf die Schaltfläche „Registrieren“.

 

Wenn die App erstellt ist, benötigen wir einige ihrer Eigenschaften für die weitere Einrichtung:

 

Azure app registration properties showing fields for Display Name, Application (client) ID, Directory (tenant) ID, and Object ID needed for setup.

 

Wir benötigen außerdem ein Geheimnis, das zur Authentifizierung unserer App verwendet wird. Um ein neues Geheimnis zu erstellen, gehen wir in unsere App und wählen „Zertifikate und Geheimnisse“:

 

Certificates & Secrets

 

Klicken Sie anschließend auf „Neues Client-Geheimnis“ und speichern Sie es nach der Erstellung an einem sicheren Ort, möglicherweise im Schlüsseltresor.

 

Client secrets

 

Sobald wir die oben genannten Informationen erhalten haben, können wir mit der Einrichtung einer Verbindung zu unserer Azure SQL-Instanz beginnen.

 

An dieser Stelle haben wir mehrere Möglichkeiten, dies zu tun. Wir könnten versuchen, unsere App zu verwenden, ihr Berechtigungen für Azure SQL-Instanzen zu erteilen, externe Benutzer auf dem SQL-Server zu erstellen, aber das ist aufgrund administrativer Einschränkungen in der Azure-Umgebung oft unmöglich.

 

Versuchen wir es mit einer universelleren Methode, die fast so einfach ist wie letztere — generieren Sie ein Zugriffstoken und verwenden Sie es für die Anmeldung.

 

Um das Token zu generieren, verwenden wir die MSAL-Bibliothek für Python (ADAL wird bald weggelassen).

 

Wir müssen die Instanz des ConfidentialClientApplication-Objekts aus der MSAL-Bibliothek aufrufen.

 

Der Klassenkonstruktor benötigt einige Parameter:

 

client_id — das ist unsere Service Principal ID (Anwendungs-ID)

Dieser Block enthält unerwarteten oder ungültigen Inhalt.resolveConvert to HtmlAuthority — das ist eine URI, die aus einem API-Link besteht: https://login.microsoftonline.com/ und Tenant Id (Verzeichnis-ID unserer App)

 

client_credential — zuvor erstelltes App-Client-Geheimnis

 

Nachdem wir alle Informationen gesammelt haben, instanziieren wir die App:

 

app = msal.confidentialClientApplication (client_id=ServicePrincipalID, authority=authority, client_credentials = ServicePrincipalPwd,)

 

Und benutze die Methode acquire_token_silent:

 

Ergebnis = app.acquire_token_silent (Geltungsbereich = [Geltungsbereich], Konto=Keine)

Dieser Block enthält unerwarteten oder ungültigen Inhalt.resolveConvert to HtmlWhere scope ist: https://database.windows.net//.default (mit doppeltem „//“ — kein Fehler)

 

Die stille Methode funktioniert möglicherweise nicht. Wählen Sie in diesem Fall eine andere aus:

 

wenn nicht Ergebnis: result = app.acquire_token_for_client (scope)

 

Dann überprüfe, ob wir als Antwort ein Token erhalten haben, und speichere es:

 

wenn „access_token“ im Ergebnis ist: SQLAzureAccessToken = result ["access_token"]

 

Wir sind fast bereit, uns mit JDBC zu verbinden. Erstelle einfach eine URI:

 

jdbcURL = „jdbc:sqlserver: //ourserver.database.windows.net:1433; Datenbank=unsere Datenbank; encrypt=true; TrustServerCertificate=False; HostnameinCertificate=*.database.windows.net; LoginTimeout=30; Authentication=ActiveDirectoryPassword“

 

und Verbindungseigenschaften:

 

ConnectionProperties = {„accessToken“: SQLAzureAccessToken, „driver“: „com.microsoft.sqlserver.jdbc.sqlserverDriver“, „hostNameInCertificate“: „*.database.windows.net“, „encrypt“: „true“, „serverCertificate“: „false“, „driver“: „com.microsoft.sqlserver.jdbc.SqlServerDriver"}

 

Und wir können loslegen:

 

jdbc_db = spark.read .format („com.microsoft.sqlserver.jdbc.spark“)\ .option („url“, „jdbc:sqlserver: //ourserver.database.windows.net“)\ .option („Datenbankname“, „Unsere Datenbank“)\ .option („accessToken“, SQLAzureAccessToken)\ .option („verschlüsseln“, „true“)\ .option („HostNameInCertificate“, „*.database.windows.net“)\ .load ()

Besuchen Sie unseren Blog für ausführlichere Data Engineering-Artikel:

 

Share this post
Cloud Computing
Marcin Miazga
MORE POSTS BY THIS AUTHOR
Marcin Miazga

Curious how we can support your business?

TALK TO US