Konfigurieren und Verwalten der Azure Active Directory-Authentifizierung mit Azure SQL

Gilt für: Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics

In diesem Artikel wird gezeigt, wie Sie eine Azure Active Directory-Instanz (Azure AD) erstellen und mit Daten auffüllen sowie Azure AD anschließend mit Azure SQL-Datenbank, Azure SQL Managed Instance und Azure Synapse Analytics verwenden. Eine Übersicht finden Sie im Artikel zur Azure Active Directory-Authentifizierung.

Azure AD-Authentifizierungsmethoden

Azure AD-Authentifizierung unterstützt die folgenden Authentifizierungsmethoden:

  • Reine Azure AD-Cloudidentitäten
  • Azure AD-Hybrididentitäten, die Folgendes unterstützen:
    • Cloudauthentifizierung mit zwei Optionen gekoppelt mit nahtlosem SSO (einmaliges Anmelden)
      • Azure AD-Kennworthashauthentifizierung
      • Azure AD-Passthrough-Authentifizierung
    • Verbundauthentifizierung

Ausführliche Informationen zu den Azure AD-Authentifizierungsmethoden und zur Auswahl der geeigneten Methode finden Sie unter Wählen der richtigen Authentifizierungsmethode für Ihre Azure Active Directory-Hybrididentitätslösung.

Weitere Informationen zu Azure AD-Hybrididentitäten, zur Einrichtung und Synchronisierung finden Sie hier:

Erstellen und Auffüllen einer Azure AD-Instanz

Erstellen Sie eine Azure AD-Instanz, und füllen Sie sie mit Benutzern und Gruppen. Azure AD kann die verwaltete Azure AD-Anfangsdomäne sein. Azure AD kann auch ein lokaler Active Directory Domain Services im Verbund mit Azure AD sein.

Weitere Informationen finden Sie unter

Zuweisen oder Hinzufügen eines Azure-Abonnements zu Azure Active Directory

  1. Ordnen Sie Ihr Azure-Abonnement Azure Active Directory zu, indem Sie das Verzeichnis für das Azure-Abonnement, das die Datenbank hostet, als vertrauenswürdiges Verzeichnis kennzeichnen. Ausführliche Informationen finden Sie unter Zuordnen oder Hinzufügen eines Azure-Abonnements zu Ihrem Azure Active Directory-Mandanten.

  2. Verwenden Sie den Verzeichnisumschalter im Azure-Portal, um zu dem der Domäne zugeordneten Abonnement zu wechseln.

    Wichtig

    Jedes Azure-Abonnement weist eine Vertrauensstellung mit einer Azure AD-Instanz auf. Dies bedeutet, dass es diesem Verzeichnis bei der Authentifizierung von Benutzern, Diensten und Geräten vertraut. Mehrere Abonnements können dem gleichen Verzeichnis vertrauen, ein Abonnement vertraut jedoch nur einem Verzeichnis. Diese Vertrauensstellung, die ein Abonnement mit einem Verzeichnis aufweist, unterscheidet sich von der Beziehung, die ein Abonnement mit allen anderen Ressourcen in Azure (Websites, Datenbanken usw.) hat. Diese ähneln eher den untergeordneten Ressourcen eines Abonnements. Wenn ein Abonnement abläuft, wird der Zugriff auf die anderen Ressourcen, die dem Abonnement zugeordnet sind, ebenfalls beendet. Das Verzeichnis verbleibt jedoch in Azure, und Sie können ihm ein anderes Abonnement zuordnen und weiterhin die Benutzer des Verzeichnisses verwalten. Weitere Informationen zu Ressourcen finden Sie unter Grundlegendes zur Zugriffssteuerung in Azure sowie zur Integration in Azure Active Directory. Weitere Informationen zu dieser Vertrauensstellung finden Sie unter Zuweisen oder Hinzufügen eines Azure-Abonnements zu Azure Active Directory.

Azure AD-Administrator mit einem Server in SQL-Datenbank

Jeder Server in Azure (der SQL-Datenbank oder Azure Synapse hostet) wird zunächst mit einem einzelnen Serveradministratorkonto konfiguriert, das als Administrator für den gesamten Server fungiert. Erstellen Sie ein zweites Administratorkonto als Azure AD-Konto. Dieser Prinzipal wird als eigenständiger Datenbankbenutzer in der Masterdatenbank des Servers erstellt. Administratorkonten sind Mitglieder der Rolle db_owner in jeder Benutzerdatenbank, und der Zugriff auf alle Benutzerdatenbanken erfolgt als Benutzer dbo. Weitere Informationen zu Administratorkonten finden Sie unter Verwalten von Datenbanken und Anmeldungen.

Bei Verwendung von Azure Active Directory mit Georeplikation muss der Azure Active Directory-Administrator sowohl für den primären als auch für die sekundären Server konfiguriert werden. Wenn ein Server über keinen Azure Active Directory-Administrator verfügt, erhalten Benutzer bei der Azure Active Directory-Anmeldung die Fehlermeldung Cannot connect.

Hinweis

Benutzer, die nicht auf einem Azure AD-Konto basieren (hierzu gehört auch das Serveradministratorkonto) können keine Azure AD-basierten Benutzer erstellen, da sie keine Berechtigung zum Überprüfen der vorgeschlagenen Datenbankbenutzer mit Azure AD besitzen.

Bereitstellen eines Azure AD-Administrators (SQL Managed Instance)

Wichtig

Führen Sie diese Schritte nur aus, wenn Sie SQL Managed Instance bereitstellen. Dieser Vorgang kann nur von einem globalen Administrator oder einem Administrator für privilegierte Rollen in Azure AD ausgeführt werden.

Sie können die Rolle Verzeichnisleseberechtigte einer Gruppe in Azure AD zuweisen. Die Gruppenbesitzer können dann die Identität der verwalteten Instanz als Mitglied dieser Gruppe hinzufügen. Dadurch können Sie einen Azure AD-Administrator für die verwaltete SQL-Instanz bereitstellen. Weitere Informationen zu diesem Feature finden Sie unter Rolle „Verzeichnisleseberechtigte“ in Azure Active Directory für Azure SQL.

Für SQL Managed Instance werden Leseberechtigungen für Azure AD benötigt, damit Aufgaben wie die Authentifizierung von Benutzern über die Mitgliedschaft in Sicherheitsgruppen oder die Erstellung neuer Benutzer erfolgreich durchgeführt werden können. Damit dies funktioniert, müssen Sie SQL Managed Instance Leseberechtigungen für Azure AD gewähren. Dies ist mithilfe des Azure-Portals oder mit PowerShell möglich.

Azure-Portal

Wenn Sie Ihrer Instanz von SQL Managed Instance über das Azure-Portal Leseberechtigungen für Azure AD erteilen möchten, melden Sie sich in Azure AD als globaler Administrator an, und führen Sie die folgenden Schritte aus:

  1. Wählen Sie im Azure-Portal in der oberen rechten Ecke Ihr Konto und dann Verzeichnisse wechseln aus, um zu bestätigen, welche Active Directory-Instanz derzeit Ihr aktives Verzeichnis ist. Wechseln Sie die Verzeichnisse, falls erforderlich.

    Screenshot des Azure-Portals, auf dem dargestellt ist, wo Sie Ihr Verzeichnis wechseln können

  2. Wählen Sie das richtige Active Directory-Verzeichnis als Standardeinstellung für Azure AD aus.

    In diesem Schritt wird das Active Directory zugeordnete Abonnement mit SQL Managed Instance verknüpft. So wird sichergestellt, dass für die Azure AD-Instanz und SQL Managed Instance dasselbe Abonnement verwendet wird.

  3. Navigieren Sie zu der Instanz von SQL Managed Instance, die Sie für die Azure AD-Integration verwenden möchten.

    Screenshot: Azure-Portal mit der geöffneten Active Directory-Administratorseite für die ausgewählte verwaltete SQL-Instanz

  4. Wählen Sie oben auf der Seite „Active Directory-Administrator“ das Banner aus, und erteilen Sie dem aktuellen Benutzer die Berechtigung.

    Screenshot des Dialogfelds zum Erteilen von Berechtigungen für eine verwaltete SQL-Instanz zum Zugreifen auf Active Directory. Die Schaltfläche „Berechtigungen erteilen“ ist ausgewählt.

  5. Nachdem der Vorgang erfolgreich abgeschlossen wurde, wird in der oberen rechten Ecke die folgende Benachrichtigung angezeigt:

    Screenshot: Benachrichtigung, die bestätigt, dass Active Directory-Leseberechtigungen für die verwaltete Instanz erfolgreich aktualisiert wurden

  6. Nun können Sie Ihren Azure AD-Administrator für Ihre Instanz von SQL Managed Instance auswählen. Wählen Sie hierzu auf der Seite „Active Directory-Administrator“ Administrator festlegen aus.

    Screenshot: Hervorgehobene Option „Administrator festlegen“ auf der Active Directory-Administratorseite für die ausgewählte verwaltete SQL-Instanz

  7. Suchen Sie auf der Azure AD-Administratorseite nach einem Benutzer, wählen Sie den Benutzer oder die Gruppe aus, den bzw. die Sie als Administrator festlegen möchten, und klicken Sie dann auf Auswählen.

    Auf der Seite „Active Directory-Administrator“ werden alle Mitglieder und Gruppen in Ihrem Active Directory-Verzeichnis angezeigt. Abgeblendete Benutzer oder Gruppen können nicht ausgewählt werden, da sie nicht als Azure AD-Administratoren unterstützt werden. Eine Liste mit den unterstützten Administratoren finden Sie unter Features und Einschränkungen von Azure AD. Die rollenbasierte Zugriffssteuerung in Azure (Azure Role-Based Access Control, Azure RBAC) gilt nur für das Azure-Portal und wird nicht an SQL-Datenbank, SQL Managed Instance oder Azure Synapse weitergegeben.

    Hinzufügen eines Azure Active Directory-Administrators

  8. Wählen Sie oben auf der Seite „Active Directory-Administrator“ Speichern aus.

    Screenshot: Active Directory-Administratorseite mit der Schaltfläche „Speichern“ in der oberen Zeile neben den Schaltflächen „Administrator festlegen“ und „Administrator entfernen“

    Der Vorgang zum Ändern des Administrators kann einige Minuten in Anspruch nehmen. Anschließend wird der neue Administrator im Feld „Active Directory-Administrator“ angezeigt.

    Für Azure AD-Benutzer und -Gruppen wird die Objekt-ID neben dem Administratornamen angezeigt. Für Anwendungen (Dienstprinzipale) wird die Anwendungs-ID angezeigt.

Nachdem Sie einen Azure AD-Administrator für Ihre Instanz von SQL Managed Instance bereitgestellt haben, können Sie unter Verwendung der Syntax CREATE LOGIN mit der Erstellung von Azure AD-Serverprinzipalen (Anmeldungen) beginnen. Weitere Informationen finden Sie in der Übersicht über SQL Managed Instance.

Tipp

Wenn Sie später einen Administrator entfernen möchten, wählen Sie oben auf der Seite „Active Directory-Administrator“ Administrator entfernen und anschließend Speichern aus.

PowerShell

Um Ihrer Instanz von SQL Managed Instance über PowerShell Azure AD-Leseberechtigungen zu gewähren, führen Sie dieses Skript aus:

# Gives Azure Active Directory read permission to a Service Principal representing the SQL Managed Instance.
# Can be executed only by a "Global Administrator" or "Privileged Role Administrator" type of user.

$aadTenant = "<YourTenantId>" # Enter your tenant ID
$managedInstanceName = "MyManagedInstance"

# Get Azure AD role "Directory Users" and create if it doesn't exist
$roleName = "Directory Readers"
$role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -eq $roleName}
if ($role -eq $null) {
    # Instantiate an instance of the role template
    $roleTemplate = Get-AzureADDirectoryRoleTemplate | Where-Object {$_.displayName -eq $roleName}
    Enable-AzureADDirectoryRole -RoleTemplateId $roleTemplate.ObjectId
    $role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -eq $roleName}
}

# Get service principal for your SQL Managed Instance
$roleMember = Get-AzureADServicePrincipal -SearchString $managedInstanceName
$roleMember.Count
if ($roleMember -eq $null) {
    Write-Output "Error: No Service Principals with name '$    ($managedInstanceName)', make sure that managedInstanceName parameter was     entered correctly."
    exit
}
if (-not ($roleMember.Count -eq 1)) {
    Write-Output "Error: More than one service principal with name pattern '$    ($managedInstanceName)'"
    Write-Output "Dumping selected service principals...."
    $roleMember
    exit
}

# Check if service principal is already member of readers role
$allDirReaders = Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId
$selDirReader = $allDirReaders | where{$_.ObjectId -match     $roleMember.ObjectId}

if ($selDirReader -eq $null) {
    # Add principal to readers role
    Write-Output "Adding service principal '$($managedInstanceName)' to     'Directory Readers' role'..."
    Add-AzureADDirectoryRoleMember -ObjectId $role.ObjectId -RefObjectId     $roleMember.ObjectId
    Write-Output "'$($managedInstanceName)' service principal added to     'Directory Readers' role'..."

    #Write-Output "Dumping service principal '$($managedInstanceName)':"
    #$allDirReaders = Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId
    #$allDirReaders | where{$_.ObjectId -match $roleMember.ObjectId}
}
else {
    Write-Output "Service principal '$($managedInstanceName)' is already     member of 'Directory Readers' role'."
}

PowerShell für SQL Managed Instance

Zum Ausführen von PowerShell-Cmdlets muss Azure PowerShell installiert sein und ausgeführt werden. Weitere Informationen finden Sie unter Installieren und Konfigurieren von Azure PowerShell.

Wichtig

Das Azure Resource Manager-Modul von PowerShell wird von Azure SQL Managed Instance weiterhin unterstützt, aber alle zukünftigen Entwicklungen erfolgen für das Az.Sql-Modul. Das AzureRM-Modul erhält mindestens bis Dezember 2020 weiterhin Fehlerbehebungen. Die Argumente für die Befehle im Az-Modul und den AzureRm-Modulen sind im Wesentlichen identisch. Weitere Informationen zur Kompatibilität finden Sie in der Einführung in das neue Azure PowerShell Az-Modul.

Um einen Azure AD-Administrator bereitzustellen, führen Sie die folgenden Azure PowerShell-Befehle aus:

  • Connect-AzAccount
  • Select-AzSubscription

Zum Bereitstellen und Verwalten des Azure AD-Administrators für Ihre Instanz von SQL Managed Instance stehen folgende Cmdlets zur Verfügung:

Cmdlet-Name Beschreibung
Set-AzSqlInstanceActiveDirectoryAdministrator Stellt einen Azure AD-Administrator für SQL Managed Instance im aktuellen Abonnement bereit. (Muss aus dem aktuellen Abonnement stammen.)
Remove-AzSqlInstanceActiveDirectoryAdministrator Entfernt einen Azure AD-Administrator für SQL Managed Instance aus dem aktuellen Abonnement.
Get-AzSqlInstanceActiveDirectoryAdministrator Gibt Informationen zu einem Azure AD-Administrator für SQL Managed Instance im aktuellen Abonnement zurück.

Mit dem folgenden Befehl werden Informationen zu einem Azure AD-Administrator für eine SQL Managed Instance-Instanz namens „ManagedInstance01“ abgerufen, die einer Ressourcengruppe mit dem Namen „ResourceGroup01“ zugeordnet ist.

Get-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstance01"

Über den folgenden Befehl wird eine Azure AD-Administratorgruppe mit dem Namen „DBAs“ für die SQL Managed Instance-Instanz „ManagedInstance01“ bereitgestellt. Dieser Server ist der Ressourcengruppe „ResourceGroup01“ zugeordnet:

Set-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstance01" -DisplayName "DBAs" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353b"

Mit dem folgenden Befehl wird der Azure AD-Administrator für die SQL Managed Instance-Instanz „ManagedInstanceName01“ entfernt, die der Ressourcengruppe „ResourceGroup01“ zugeordnet ist.

Remove-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstanceName01" -Confirm -PassThru

Bereitstellen eines Azure AD-Administrators (SQL-Datenbank)

Wichtig

Führen Sie die folgenden Schritte nur aus, wenn Sie einen Server für Azure SQL-Datenbank oder Azure Synapse Analytics bereitstellen.

Die beiden folgenden Verfahren zeigen, wie Sie einen Azure Active Directory-Administrator für Ihren Server im Azure-Portal und mithilfe von PowerShell bereitstellen.

Azure-Portal

  1. Wählen Sie im Azure-Portal in der oberen rechten Ecke Ihre Verbindung aus, um eine Dropdownliste mit möglichen Active Directory-Verzeichnissen zu öffnen. Wählen Sie das richtige Active Directory-Verzeichnis als Standardeinstellung für Azure AD aus. Durch diesen Schritt wird die mit dem Abonnement verbundene Active Directory-Instanz mit dem Server verknüpft. So wird sichergestellt, dass für Azure AD und den Server dasselbe Abonnement verwendet wird.

  2. Suchen Sie nach SQL Server, und wählen Sie diese Option aus.

    Suchen nach und Auswählen von „SQL Server“

    Hinweis

    Auf dieser Seite können Sie vor der Auswahl von SQL Server den Stern neben dem Namen auswählen, um die Kategorie den Favoriten hinzuzufügen, und SQL Server der linken Navigationsleiste hinzufügen.

  3. Wählen Sie auf der Seite SQL Server die Option Active Directory-Administrator aus.

  4. Wählen Sie auf der Seite Active Directory-Administrator die Option Administrator festlegen aus.

    SQL Server: Festlegen des Active Directory-Administrators

  5. Suchen Sie auf der Seite Administrator hinzufügen nach einem Benutzer, wählen Sie den Benutzer oder die Gruppe aus, den bzw. die Sie als Administrator festlegen möchten, und wählen Sie dann Auswählen aus. Auf der Seite „Active Directory-Administrator“ werden alle Mitglieder und Gruppen in Ihrem Active Directory-Verzeichnis angezeigt. (Auf dem Blatt „Active Directory-Administrator“ werden alle Mitglieder und Gruppen in Ihrem Active Directory-Verzeichnis angezeigt. (Siehe die Liste von unterstützten Administratoren im Abschnitt Funktionen und Einschränkungen von Azure AD von Verwenden der Azure Active Directory-Authentifizierung für die Authentifizierung mit SQL-Datenbank oder Azure Synapse.) Die rollenbasierte Zugriffssteuerung in Azure (Role-based Access Control, RBAC) gilt nur für das Portal und wird nicht an SQL Server weitergegeben.

    Auswählen des Azure Active Directory-Administrators

  6. Wählen Sie oben auf der Seite Active Directory-Administrator die Option Speichern aus.

    Administrator speichern

    Für Azure AD-Benutzer und -Gruppen wird die Objekt-ID neben dem Administratornamen angezeigt. Für Anwendungen (Dienstprinzipale) wird die Anwendungs-ID angezeigt.

Der Vorgang zum Ändern des Administrators kann einige Minuten in Anspruch nehmen. Anschließend wird der neue Administrator im Feld Active Directory-Administrator angezeigt.

Hinweis

Beim Einrichten des Azure AD-Administrators darf der Name des neuen Administrators (Benutzer oder Gruppe) in der virtuellen Masterdatenbank noch nicht als Benutzer für die Serverauthentifizierung vorhanden sein. Wenn er vorhanden ist, schlägt die Einrichtung des Azure AD-Administrators fehl, wobei die Erstellung rückgängig gemacht und angegeben wird, dass ein solcher Administrator (Name) bereits vorhanden ist. Da dieser Benutzer für die Serverauthentifizierung nicht in Azure AD enthalten ist, kann über die Azure AD-Authentifizierung keine Verbindung mit dem Server hergestellt werden.

Wenn Sie später einen Administrator entfernen möchten, wählen Sie oben auf der Seite Active Directory-AdministratorAdministrator entfernen und anschließend Speichern aus.

PowerShell für SQL-Datenbank und Azure Synapse

Zum Ausführen von PowerShell-Cmdlets muss Azure PowerShell installiert sein und ausgeführt werden. Weitere Informationen finden Sie unter Installieren und Konfigurieren von Azure PowerShell. Um einen Azure AD-Administrator bereitzustellen, führen Sie die folgenden Azure PowerShell-Befehle aus:

  • Connect-AzAccount
  • Select-AzSubscription

Zum Bereitstellen und Verwalten des Azure AD-Administrators für Azure SQL-Datenbank und Azure Synapse stehen folgende Cmdlets zur Verfügung:

Cmdlet-Name Beschreibung
Set-AzSqlServerActiveDirectoryAdministrator Stellt einen Azure Active Directory-Administrator für den Server bereit, der SQL-Datenbank oder Azure Synapse hostet. (Muss aus dem aktuellen Abonnement stammen.)
Remove-AzSqlServerActiveDirectoryAdministrator Entfernt einen Azure Active Directory-Administrator für den Server, der SQL-Datenbank oder Azure Synapse hostet.
Get-AzSqlServerActiveDirectoryAdministrator Gibt Informationen zu dem Azure Active Directory-Administrator zurück, der aktuell für den Server zum Hosten von SQL-Datenbank oder Azure Synapse konfiguriert ist.

Verwenden Sie den PowerShell-Befehl „get-help“, um weitere Informationen zu diesen Befehlen zu erhalten. Beispiel: get-help Set-AzSqlServerActiveDirectoryAdministrator.

Das folgende Skript stellt eine Azure AD-Administratorengruppe namens DBA_Group (Objekt-ID 40b79501-b343-44ed-9ce7-da4c8cc7353f) für den Server demo_server in einer Ressourcengruppe mit dem Namen Group-23 bereit:

Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" -DisplayName "DBA_Group"

Der Eingabeparameter DisplayName akzeptiert entweder den Azure AD-Anzeigenamen oder den Benutzerprinzipalnamen (UPN). Beispiel: DisplayName="John Smith" und DisplayName="johns@contoso.com". Für Azure AD-Gruppen wird nur der Azure AD-Anzeigename unterstützt.

Hinweis

Der Azure PowerShell-Befehl Set-AzSqlServerActiveDirectoryAdministrator hindert Sie nicht daran, nicht unterstützte Benutzer als Azure AD-Administratoren bereitzustellen. Ein nicht unterstützter Benutzer kann bereitgestellt werden, jedoch keine Verbindung mit einer Datenbank herstellen.

Im folgenden Beispiel wird der optionale Wert für ObjectIDverwendet:

Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" `
    -DisplayName "DBA_Group" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353f"

Hinweis

Ein Wert für ObjectID ist in Azure AD erforderlich, wenn DisplayNamenicht eindeutig ist. Verwenden Sie den Active Directory-Abschnitt im klassischen Azure-Portal, um die Werte für ObjectID und DisplayName abzurufen um die Eigenschaften für einen Benutzer oder eine Gruppe anzuzeigen.

Das folgende Beispiel gibt Informationen zum aktuellen Azure AD-Administrator für den Server zurück:

Get-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" | Format-List

Im folgenden Beispiel wird ein Azure AD-Administrator entfernt:

Remove-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server"

Hinweis

Sie können auch einen Azure Active Directory-Administrator mithilfe der REST-APIs bereitstellen. Weitere Informationen finden Sie unter Referenz zur REST-API der Dienstverwaltung und Vorgänge für Azure SQL-Datenbank.

Konfigurieren der Clientcomputer

Hinweis

System.Data.SqlClient verwendet die Azure Active Directory-Authentifizierungsbibliothek (ADAL), die veraltet ist. Wenn Sie den System.Data.SqlClient-Namespace für Azure Active Directory-Authentifizierung verwenden, migrieren Sie Anwendungen zu Microsoft.Data.SqlClient und zur Microsoft-Authentifizierungsbibliothek (MSAL). Weitere Informationen zur Verwendung von Azure AD-Authentifizierung mit SqlClient finden Sie unter Verwenden von Azure Active Directory-Authentifizierung mit SqlClient.

SSMS und SSDT verwenden noch die Azure Active Directory-Authentifizierungsbibliothek (ADAL). Wenn Sie weiterhin ADAL.DLL in Ihren Anwendungen verwenden möchten, können Sie die Links in diesem Abschnitt verwenden, um den neuesten SSMS-, ODBC- und OLE DB-Treiber zu installieren, der die neueste ADAL.DLL-Bibliothek enthält.

Auf allen Clientcomputern, über die Ihre Anwendungen oder Benutzer unter Verwendung von Azure AD-Identitäten eine Verbindung mit SQL-Datenbank oder Azure Synapse herstellen, muss die folgende Software installiert werden:

Sie können diese Anforderungen folgendermaßen erfüllen:

  • Durch das Installieren der aktuellen Version von SQL Server Management Studio oder SQL Server Data Tools wird die Anforderung erfüllt, dass .NET Framework 4.6 vorhanden sein muss.
    • SSMS installiert die x86-Version von ADAL.DLL.
    • SSDT installiert die amd64-Version von ADAL.DLL.
    • Die neueste Visual Studio-Version unter Visual Studio-Downloads erfüllt die .NET Framework 4.6-Anforderung, die erforderliche amd64-Version von ADAL.DLL wird jedoch nicht installiert.

Erstellen eigenständiger Benutzer mit Zuordnung zu Azure AD-Identitäten

SQL Managed Instance unterstützt Azure AD-Serverprinzipale (Anmeldungen), deshalb ist die Verwendung eigenständiger Datenbankbenutzer nicht erforderlich. Azure AD-Serverprinzipale (Anmeldungen) ermöglichen es Ihnen, Anmeldungen für Azure AD-Benutzer, -Gruppen oder -Anwendungen zu erstellen. Dies bedeutet, dass Sie sich über die Azure AD-Serveranmeldung bei Ihrer Instanz von SQL Managed Instance authentifizieren können, statt sich über einen eigenständigen Datenbankbenutzer zu authentifizieren. Weitere Informationen finden Sie in der Übersicht über SQL Managed Instance. Die Syntax zum Erstellen von Azure AD-Serverprinzipalen (Anmeldungen) finden Sie unter CREATE LOGIN.

Die Verwendung der Azure Active Directory-Authentifizierung bei SQL-Datenbank und Azure Synapse erfordert jedoch die Verwendung von eigenständigen Datenbankbenutzern auf der Grundlage einer Azure AD-Identität. Ein eigenständiger Datenbankbenutzer umfasst keine Anmeldung in der Masterdatenbank und ist einer Identität in Azure AD zugeordnet, die mit der Datenbank verknüpft ist. Bei der Azure AD-Identität kann es sich entweder um ein einzelnes Benutzerkonto oder um eine Gruppe handeln. Weitere Informationen zu eigenständigen Datenbankbenutzern finden Sie unter Eigenständige Datenbankbenutzer – machen Sie Ihre Datenbank portabel.

Hinweis

Datenbankbenutzer (mit Ausnahme von Administratoren) können nicht im Azure-Portal erstellt werden. Azure-Rollen werden nicht an die Datenbank in SQL-Datenbank, SQL Managed Instance oder Azure Synapse weitergegeben. Azure-Rollen dienen zum Verwalten von Azure-Ressourcen und gelten nicht für Datenbankberechtigungen. Beispielsweise gewährt die Rolle SQL Server-Mitwirkender keinen Zugriff zur Verbindungsherstellung mit der Datenbank in SQL-Datenbank, SQL Managed Instance oder Azure Synapse. Die Zugriffsberechtigung muss direkt in der Datenbank mithilfe von Transact-SQL-Anweisungen erteilt werden.

Warnung

In den T-SQL-Anweisungen CREATE LOGIN und CREATE USER werden Sonderzeichen wie Doppelpunkt (:) oder kaufmännisches Und-Zeichen (&) in Benutzernamen nicht unterstützt.

Wichtig

Azure AD-Benutzern und -Dienstprinzipalen (Azure AD-Anwendungen), die Mitglieder von mehr als 2.048 Azure AD-Sicherheitsgruppen sind, ist die Anmeldung bei der Datenbank in SQL-Datenbank, Managed Instance oder Azure Synapse nicht möglich.

Um einen Azure AD-basierten eigenständigen Datenbankbenutzer zu erstellen (bei dem es sich nicht um den Serveradministrator handelt, der Besitzer der Datenbank ist), stellen Sie mit einer Azure AD-Identität, die mindestens über die Berechtigung BELIEBIGEN BENUTZER ÄNDERN verfügt, eine Verbindung mit der Datenbank her. Verwenden Sie anschließend die folgende Transact-SQL-Syntax:

CREATE USER [<Azure_AD_principal_name>] FROM EXTERNAL PROVIDER;

Azure_AD_principal_name kann der Benutzerprinzipalname (UPN) eines Azure AD-Benutzers oder der Anzeigename einer Azure AD-Gruppe sein.

Beispiele: So erstellen Sie einen eigenständigen Datenbankbenutzer, der einen Benutzer der Azure AD-Verbunddomäne oder einen Benutzer der verwalteten Azure AD-Domäne repräsentiert:

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;

Um einen eigenständigen Datenbankbenutzer zu erstellen, der eine Azure AD-Gruppe oder eine Gruppe der Verbunddomäne repräsentiert, geben Sie den Anzeigenamen einer Sicherheitsgruppe an:

CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;

So erstellen Sie einen eigenständigen Datenbankbenutzer, der eine Anwendung darstellt, die eine Verbindung mit einem Azure AD-Token herstellt:

CREATE USER [appName] FROM EXTERNAL PROVIDER;

Hinweis

Dieser Befehl erfordert, dass SQL auf Azure AD (den „externen Anbieter“) im Namen des angemeldeten Benutzers zugreift. Manchmal treten Umstände auf, die bewirken, dass Azure AD eine Ausnahme an SQL zurückgibt. In diesen Fällen wird dem Benutzer der SQL-Fehler 33134 angezeigt, der die Azure AD-spezifische Fehlermeldung enthalten sollte. In den meisten Fällen besagt der Fehler, dass der Zugriff verweigert wird oder dass der Benutzer sich für MFA registrieren muss, um auf die Ressource zuzugreifen, oder dass der Zugriff zwischen Erstanbieteranwendungen über Vorautorisierung verarbeitet werden muss. In den ersten beiden Fällen wird das Problem normalerweise durch Richtlinien für bedingten Zugriff verursacht, die im Azure AD-Mandanten des Benutzers festgelegt werden. Diese verhindern, dass der Benutzer auf den externen Anbieter zugreifen kann. Aktualisieren Sie die Richtlinien für bedingten Zugriff, um den Zugriff auf die Anwendung „00000003-0000-0000-c000-000000000000“ zu ermöglichen (die Anwendungs-ID der Microsoft Graph-API). Dadurch sollte das Problem behoben werden. Wenn der Fehler besagt, dass der Zugriff zwischen Erstanbieteranwendungen über Vorautorisierung verarbeitet werden muss, liegt das Problem daran, dass der Benutzer als Dienstprinzipal angemeldet ist. Der Befehl sollte erfolgreich sein, wenn er stattdessen von einem Benutzer ausgeführt wird.

Tipp

Sie können einen Benutzer nur direkt aus der Azure Active Directory-Instanz erstellen, die Ihrem Azure-Abonnement zugeordnet ist. Mitglieder anderer Active Directory-Instanzen, die importierte Benutzer der zugeordneten Active Directory-Instanz sind (bekannt als externe Benutzer) können jedoch einer Active Directory-Gruppe des Active Directory-Mandanten hinzugefügt werden. Indem Sie einen eigenständigen Datenbankbenutzer für diese AD-Gruppe erstellen, können die Benutzer aus der externen Active Directory-Instanz auf die SQL-Datenbank zugreifen.

Weitere Informationen zum Erstellen eigenständiger Datenbankbenutzer basierend auf Azure Active Directory-Identitäten finden Sie unter CREATE USER (Transact-SQL).

Hinweis

Wenn der Azure Active Directory-Administrator für den Server entfernt wird, können Azure AD-Authentifizierungsbenutzer nicht länger eine Verbindung mit dem Server herstellen. Nicht mehr verwendbare Azure AD-Benutzer können bei Bedarf manuell von einem SQL-Datenbankadministrator gelöscht werden.

Hinweis

Wenn Sie die Benachrichtigung Das Verbindungstimeout ist abgelaufen. erhalten, müssen Sie möglicherweise den Parameter TransparentNetworkIPResolution der Verbindungszeichenfolge auf FALSE festlegen. Weitere Informationen finden Sie unter Connection timeout issue with .NET Framework 4.6.1 – TransparentNetworkIPResolution (Verbindungstimeout-Problem mit .NET Framework 4.6.1 – TransparentNetworkIPResolution).

Wenn Sie einen Datenbankbenutzer erstellen, erhält dieser Benutzer die Berechtigung VERBINDEN und kann sich als Mitglied der Rolle ÖFFENTLICH mit dieser Datenbank verbinden. Anfänglich stehen dem Benutzer nur die Berechtigungen zur Verfügung, die der Rolle ÖFFENTLICH gewährt wurden, sowie sämtliche Berechtigungen, die Azure AD-Gruppen erteilt wurden, denen der Benutzer angehört. Nachdem Sie einen Azure AD-basierten eigenständigen Datenbankbenutzer bereitgestellt haben, können Sie dem Benutzer zusätzliche Berechtigungen gewähren. Die Vorgehensweise ist hierbei mit der Berechtigungszuweisung für alle weiteren Benutzertypen identisch. Typischerweise gewähren Sie Datenbankrollen die gewünschten Berechtigungen, und weisen diesen Rollen anschließend Benutzer zu. Weitere Informationen finden Sie unter Erste Schritte mit Berechtigungen für die Datenbank-Engine. Weitere Informationen zu besonderen SQL-Datenbankrollen finden Sie unter Verwalten von Datenbanken und Anmeldungen in Azure SQL-Datenbank. Ein Verbunddomänen-Benutzerkonto, das als externer Benutzer in eine verwaltete Domäne importiert wird, muss die Identität der verwalteten Domäne verwenden.

Hinweis

Azure AD-Benutzer werden in den Datenbankmetadaten mit dem Typ E (EXTERNAL_USER) gekennzeichnet, Gruppen mit dem Typ X (EXTERNAL_GROUPS). Weitere Informationen finden Sie unter sys.database_principals.

Herstellen einer Datenbankverbindung SSMS oder SSDT

Um zu bestätigen, dass der Azure AD-Administrator ordnungsgemäß eingerichtet ist, stellen Sie mit dem Azure AD-Administratorkonto eine Verbindung mit der Datenbank master her. Um einen Azure AD-basierten eigenständigen Datenbankbenutzer bereitzustellen (bei dem es sich nicht um den Serveradministrator handelt, der Besitzer der Datenbank ist), stellen Sie mithilfe einer Azure AD-Identität, die Zugriff auf die Datenbank hat, eine Verbindung mit der Datenbank her.

Wichtig

Unterstützung für die Azure Active Directory-Authentifizierung ist ab Version 2016 über SQL Server Management Studio (SSMS) und ab Version 2015 über SQL Server Data Tools verfügbar. Die SSMS-Version von August 2016 bietet auch Unterstützung für die universelle Active Directory-Authentifizierung, die es Administratoren ermöglicht, die Multi-Factor Authentication per Telefonanruf, SMS, Smartcards mit PIN oder Benachrichtigung in einer mobilen App anzufordern.

Verwenden einer Azure AD-Identität zum Herstellen einer Verbindung mithilfe von SSMS oder SSDT

Das nachstehende Verfahren zeigt, wie Sie mithilfe einer Azure AD-Identität und unter Verwendung von SQL Server Management Studio oder SQL Server Data Tools eine Verbindung mit SQL-­Datenbank herstellen.

Integrierte Active Directory-Authentifizierung

Verwenden Sie diese Methode, wenn Sie bei Windows angemeldet sind. Verwenden Sie dazu Ihre Azure Active Directory-Anmeldeinformationen aus einer Verbunddomäne oder einer verwalteten Domäne, die für nahtloses einmaliges Anmelden für eine Passthrough- und Kennworthashauthentifizierung konfiguriert ist. Weitere Informationen finden Sie unter Nahtlose einmalige Anmeldung mit Azure Active Directory.

  1. Starten Sie Management Studio oder Data Tools, und wählen Sie im Dialogfeld Verbindung mit dem Server herstellen (oder Verbindung mit Datenbank-Engine herstellen) im Feld Authentifizierung die Einstellung Azure Active Directory: integriert aus. Es ist kein Kennwort erforderlich bzw. es kann kein Kennwort eingegeben werden, weil Ihre vorhandenen Anmeldeinformationen zur Verbindungsherstellung verwendet werden.

    Integrierte AD-Authentifizierung auswählen

  2. Wählen Sie die Schaltfläche Optionen aus, und geben Sie auf der Seite Verbindungseigenschaften im Feld Mit Datenbank verbinden den Namen der Benutzerdatenbank ein, mit der die Verbindung hergestellt werden soll. Weitere Informationen finden Sie im Artikel Mehrstufige AAD-Authentifizierung, in dem die Unterschiede zwischen den Verbindungseigenschaften für SSMS 17.x und 18.x behandelt werden.

    Datenbanknamen auswählen

Active Directory-Kennwortauthentifizierung

Verwenden Sie diese Methode, wenn Sie unter Verwendung der verwalteten Azure AD-Domäne und mit einem Azure AD-Prinzipalnamen eine Verbindung herstellen. Sie können diese Authentifizierungsmethode auch für ein Verbundkonto ohne Zugriff auf die Domäne verwenden, beispielsweise wenn Sie an einem Remotestandort arbeiten.

Verwenden Sie diese Methode, um sich in SQL-Datenbank oder SQL Managed Instance mit reinen Azure AD-Cloudidentitätsbenutzern oder Benutzern bei der Datenbank zu authentifizieren, die Azure AD-Hybrididentitäten verwenden. Diese Methode unterstützt Benutzer, die ihre Windows-Anmeldeinformationen verwenden möchten, deren lokaler Computer aber nicht mit der Domäne verbunden ist (z. B. über Remotezugriff). In diesem Fall kann ein Windows-Benutzer sein Domänenkonto mit dem zugehörigen Kennwort verwenden, um sich in SQL-Datenbank, SQL Managed Instance oder Azure Synapse bei der Datenbank zu authentifizieren.

  1. Starten Sie Management Studio oder Data Tools, und wählen Sie im Dialogfeld Verbindung mit dem Server herstellen (oder Verbindung mit Datenbank-Engine herstellen) im Feld Authentifizierung die Einstellung Azure Active Directory: Kennwort aus.

  2. Geben Sie im Feld Benutzername Ihren Azure Active Directory-Benutzernamen im Format username@domain.com ein. Bei Benutzernamen muss es sich um ein Konto aus Azure Active Directory oder um ein Konto aus einer verwalteten Domäne oder einer Domäne handeln, die im Verbund mit Azure Active Directory konfiguriert ist.

  3. Geben Sie im Feld Kennwort Ihr Benutzerkennwort für das Azure Active Directory-Konto oder das Konto der verwalteten Domäne oder Verbunddomäne ein.

    AD-Kennwortauthentifizierung auswählen

  4. Wählen Sie die Schaltfläche Optionen aus, und geben Sie auf der Seite Verbindungseigenschaften im Feld Mit Datenbank verbinden den Namen der Benutzerdatenbank ein, mit der die Verbindung hergestellt werden soll. (Siehe Grafik in der vorherigen Option.)

Interaktive Active Directory-Authentifizierung

Verwenden Sie diese Methode für die interaktive Authentifizierung mit oder ohne mehrstufige Authentifizierung (Multi-Factor Authentication, MFA), bei der das Kennwort interaktiv angefordert wird. Diese Methode kann verwendet werden, um sich in SQL-Datenbank oder SQL Managed Instance mit reinen Azure AD-Cloudidentitätsbenutzern oder Benutzern bei der Datenbank zu authentifizieren, die Azure AD-Hybrididentitäten verwenden.

Weitere Informationen finden Sie unter Verwenden der mehrstufiger Azure AD-Authentifizierung mit SQL-Datenbank und Azure Synapse Analytics (SSMS-Unterstützung für MFA).

Verwenden einer Azure AD-Identität, um von einer Clientanwendung aus eine Verbindung herzustellen

Die folgenden Verfahren zeigen, wie Sie mit einer Azure AD-Identität von einer Clientanwendung aus eine Verbindung mit SQL-Datenbank herstellen.

Integrierte Active Directory-Authentifizierung

Um integrierte Windows-Authentifizierung verwenden zu können, muss das Active Directory der Domäne einen Verbund mit Azure Active Directory bilden oder sollte eine verwaltete Domäne sein, die für nahtloses einmaliges Anmelden (SSO) für Passthrough- oder Kennworthashauthentifizierung konfiguriert ist. Weitere Informationen finden Sie unter Nahtlose einmalige Anmeldung mit Azure Active Directory.

Ihre Client-Anwendung (oder ein Dienst), die eine Verbindung mit der Datenbank herstellt, muss unter den Domänenanmeldeinformationen eines Benutzers auf einem Computer ausgeführt werden, der der Domäne beigetreten ist.

Um mithilfe der integrierten Authentifizierung und einer Azure AD-Identität eine Verbindung mit einer Datenbank herzustellen, muss das Authentifizierungsschlüsselwort in der Verbindungszeichenfolge für die Datenbank auf Active Directory Integrated festgelegt sein. Im folgenden C#-Codebeispiel wird ADO .NET verwendet.

string ConnectionString = @"Data Source=n9lxnyuzhv.database.windows.net; Authentication=Active Directory Integrated; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

Das Schlüsselwort Integrated Security=True in der Verbindungszeichenfolge wird nicht für die Verbindungsherstellung mit Azure SQL-Datenbank unterstützt. Beim Herstellen einer ODBC-Verbindung müssen Sie Leerzeichen entfernen und Authentifizierung auf ActiveDirectoryIntegrated festlegen.

Active Directory-Kennwortauthentifizierung

Zum Herstellen einer Verbindung mit einer Datenbank mithilfe reiner Azure AD-Cloudidentitäts-Benutzerkonten oder Konten, die Azure AD-Hybrididentitäten verwenden, muss das Authentifizierungsschlüsselwort auf Active Directory Passwordfestgelegt werden. Die Verbindungszeichenfolge muss Benutzer-ID/UID und Kennwort/PWD-Schlüsselwörter enthalten. Im folgenden C#-Codebeispiel wird ADO .NET verwendet.

string ConnectionString =
@"Data Source=n9lxnyuzhv.database.windows.net; Authentication=Active Directory Password; Initial Catalog=testdb;  UID=bob@contoso.onmicrosoft.com; PWD=MyPassWord!";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

Informieren Sie sich über Azure AD-Authentifizierungsmethoden, indem Sie die Demo-Codebeispiele unter Azure AD Authentication GitHub Demo(GitHub-Demo zur Azure AD-Authentifizierung) verwenden.

Azure AD-Token

Dank dieser Authentifizierungsmethode können Dienste der mittleren Ebene JSON Webtoken (JWT) abrufen, um in SQL-Datenbank, SQL Managed Instance oder Azure Synapse eine Verbindung mit der Datenbank herzustellen, indem sie ein Token aus Azure AD abrufen. Diese Methode ermöglicht verschiedene Anwendungsszenarien einschließlich Dienstidentitäten, Dienstprinzipalen und Anwendungen, die zertifikatbasierte Authentifizierung verwenden. Sie müssen vier grundlegende Schritte zum Verwenden der Azure AD-Token-Authentifizierung ausführen:

  1. Registrieren Sie Ihre Anwendung in Azure Active Directory, und rufen Sie die Client-ID für Ihren Code ab.
  2. Erstellen Sie einen Datenbankbenutzer, der die Anwendung darstellt. (Bereits in Schritt 6 abgeschlossen.)
  3. Erstellen Sie ein Zertifikat auf dem Clientcomputer, auf dem die Anwendung ausgeführt wird.
  4. Fügen Sie das Zertifikat als Schlüssel für die Anwendung hinzu.

Beispiel-Verbindungszeichenfolge:

string ConnectionString = @"Data Source=n9lxnyuzhv.database.windows.net; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.AccessToken = "Your JWT token";
conn.Open();

Weitere Informationen finden Sie im SQL Server Security Blog(Blog zur Sicherheit von SQL Server). Informationen zum Hinzufügen eines Zertifikats finden Sie unter Erste Schritte mit zertifikatbasierter Authentifizierung in Azure Active Directory.

sqlcmd

Die folgenden Anweisungen stellen eine Verbindung mithilfe von Version 13.1 von SQLCMD her, die im Download Centerverfügbar ist.

Hinweis

sqlcmd mit dem -G-Befehl funktioniert nicht mit Systemidentitäten und erfordert eine Benutzerprinzipalanmeldung.

sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G  
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -U bob@contoso.com -P MyAADPassword -G -l 30

Behandeln von Problemen mit der Azure AD-Authentifizierung

Eine Anleitung zur Behandlung von Problemen bei der Azure AD-Authentifizierung finden Sie im folgenden Blog: https://techcommunity.microsoft.com/t5/azure-sql-database/troubleshooting-problems-related-to-azure-ad-authentication-with/ba-p/1062991

Nächste Schritte