Authentifizierung mit Microsoft Entra ID in sqlcmd
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
sqlcmd unterstützt eine Vielzahl von Azure Active Directory (Azure AD)-Authentifizierungsmodellen, je nachdem, welche Version Sie installiert haben.
Hinweis
Während Microsoft Entra-ID der neue Name für Azure Active Directory (Azure AD) ist, bleibt Azure AD in einigen fest kodierten Elementen wie Benutzeroberfläche-Feldern, Verbindungsanbietern, Fehlercodes und Cmdlets erhalten, um Störungen in bestehenden Umgebungen zu vermeiden. In diesem Artikel sind die beiden Namen austauschbar.
Weitere Informationen zum Unterschied zwischen sqlcmd-Versionen finden Sie im Sqlcmd-Hilfsprogramm.
sqlcmd (Go) unterstützt mehr Azure AD-Authentifizierungsmodelle basierend auf dem Azidentity-Paket. Die Implementierung basiert auf einem Azure AD-Connector im go-sqlcmd-Treiber.
Befehlszeilenargumente
Wenn Sie die Azure AD-Authentifizierung verwenden möchten, können Sie eine von zwei Befehlszeilenoptionen verwenden.
-G
ist (hauptsächlich) mit der Verwendung in sqlcmd (ODBC) kompatibel. Wenn ein Benutzername und ein Kennwort angegeben werden, erfolgt die Authentifizierung über die Azure AD-Kennwortauthentifizierung. Wird ein Benutzername angegeben, wird die interaktive Azure AD-Authentifizierung verwendet, wobei möglicherweise ein Webbrowser angezeigt wird. Wird kein Benutzername und kein Kennwort angegeben, wird die Authentifizierung mithilfe verschiedener Mechanismen über die Azure-Standardanmeldeinformation (DefaultAzureCredential
) versucht.
Mit --authentication-method=
kann einer der folgenden Authentifizierungstypen angegeben werden.
ActiveDirectoryDefault
- Eine Übersicht über die Authentifizierungstypen, die dieser Modus verwendet, finden Sie unter Azure-Standardanmeldeinformationen.
- Wählen Sie diese Methode aus, wenn Ihre Datenbankautomatisierungsskripts sowohl in lokalen Entwicklungsumgebungen als auch in einer Produktionsbereitstellung in Azure ausgeführt werden sollen. In Ihrer Entwicklungsumgebung können Sie einen geheimen Clientschlüssel oder eine Azure CLI-Anmeldung verwenden. Ohne das Skript der Entwicklungsumgebung zu ändern, können Sie eine verwaltete Identität oder einen geheimen Clientschlüssel für die Produktionsbereitstellung verwenden.
- Sie müssen die Umgebungsvariablen
AZURE_TENANT_ID
undAZURE_CLIENT_ID
festlegen, damitDefaultAzureCredential
mit der Überprüfung der Umgebungskonfiguration beginnt und nach einer der folgenden zusätzlichen Umgebungsvariablen für die Authentifizierung sucht:- Wenn Sie die Umgebungsvariable
AZURE_CLIENT_SECRET
festlegen, wirdDefaultAzureCredential
so konfiguriert, dassClientSecretCredential
ausgewählt wird. - Wenn Sie die Umgebungsvariable
AZURE_CLIENT_CERTIFICATE_PATH
festlegen, wirdDefaultAzureCredential
so konfiguriert, dassClientCertificateCredential
ausgewählt wird, wennAZURE_CLIENT_SECRET
nicht festgelegt ist.
- Wenn Sie die Umgebungsvariable
- Wenn Sie die Umgebungsvariable „AZURE_USERNAME“ festlegen, wird
DefaultAzureCredential
so konfiguriert, dassUsernamePasswordCredential
ausgewählt wird, wennAZURE_CLIENT_SECRET
undAZURE_CLIENT_CERTIFICATE_PATH
nicht festgelegt sind.
ActiveDirectoryIntegrated
Diese Methode ist derzeit nicht implementiert, sodass ActiveDirectoryDefault
verwendet wird.
ActiveDirectoryPassword
Bei dieser Methode erfolgt die Authentifizierung mit einem Benutzernamen und einem Kennwort. Die Methode funktioniert nicht, wenn die Multi-Faktor-Authentifizierung erforderlich ist.
Sie geben den Benutzernamen und das Kennwort mit den üblichen Befehlszeilenoptionen oder
SQLCMD
-Umgebungsvariablen an.Legen Sie die Umgebungsvariable
AZURE_TENANT_ID
auf die Mandanten-ID des Servers fest, wenn nicht der Standardmandant des Benutzers verwendet wird.
ActiveDirectoryInteractive
Bei dieser Methode wird Webbrowser zur Authentifizierung der Benutzer*innen gestartet.
ActiveDirectoryManagedIdentity
Verwenden Sie diese Methode, wenn Sie sqlcmd (Go) auf einer Azure-VM ausführen, die entweder über eine systemseitig oder benutzerseitig zugewiesene verwaltete Identität verfügt. Legen Sie den Benutzernamen bei Verwendung einer benutzerseitig zugewiesenen verwalteten Identität auf die Client-ID der verwalteten Identität fest. Lassen Sie den Benutzernamen bei Verwendung einer systemseitig zugewiesenen verwalteten Identität leer.
In diesem Beispiel wird gezeigt, wie Sie eine Verbindung über eine serviceseitig zugewiesene verwaltete Identität (Service Assigned Managed Identity, SAMI) herstellen:
-S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity
In diesem Beispiel wird gezeigt, wie Sie eine Verbindung über eine benutzerseitig zugewiesene verwaltete Identität (User Assigned Managed Identity, UAMI) herstellen, indem Sie die Client-ID der benutzerseitig zugewiesenen verwalteten Identität hinzufügen:
-S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity -U <user-assigned-managed-identity-client-id>
ActiveDirectoryServicePrincipal
Bei dieser Methode erfolgt die Authentifizierung mit dem angegebenen Benutzernamen als Dienstprinzipal-ID und dem Kennwort als geheimer Clientschlüssel für den Dienstprinzipal. Geben Sie einen Benutzernamen in der Form <service principal id>@<tenant id>
an. Legen Sie die SQLCMDPASSWORD
-Variable auf den geheimen Clientschlüssel fest. Legen Sie die AZURE_CLIENT_CERTIFICATE_PATH
-Umgebungsvariable auf den Pfad der Zertifikatdatei fest, wenn Sie ein Zertifikat anstelle eines geheimen Clientschlüssels verwenden.
Umgebungsvariablen werden nicht für die Authentifizierung verwendet
Einige Einstellungen der Azure AD-Authentifizierung umfassen keine Befehlszeileneingaben, und einige Umgebungsvariablen werden direkt von dem von sqlcmd verwendeten azidentity
-Paket genutzt.
Diese Umgebungsvariablen können festgelegt werden, um einige Aspekte der Azure AD-Authentifizierung zu konfigurieren und Standardverhalten zu umgehen. Zusätzlich zu den zuvor aufgeführten Variablen sind die folgenden Variablen sqlcmd-spezifisch und gelten für mehrere Methoden.
SQLCMDCLIENTID
Legen Sie diese Umgebungsvariable auf den Bezeichner einer Anwendung fest, die in Azure AD registriert und für die Authentifizierung bei Azure SQL-Datenbank autorisiert ist. Gilt für ActiveDirectoryInteractive
- und ActiveDirectoryPassword
-Methoden.