Freigeben über


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 und AZURE_CLIENT_ID festlegen, damit DefaultAzureCredential 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, wird DefaultAzureCredential so konfiguriert, dass ClientSecretCredential ausgewählt wird.
    • Wenn Sie die Umgebungsvariable AZURE_CLIENT_CERTIFICATE_PATH festlegen, wird DefaultAzureCredential so konfiguriert, dass ClientCertificateCredential ausgewählt wird, wenn AZURE_CLIENT_SECRET nicht festgelegt ist.
  • Wenn Sie die Umgebungsvariable „AZURE_USERNAME“ festlegen, wird DefaultAzureCredential so konfiguriert, dass UsernamePasswordCredential ausgewählt wird, wenn AZURE_CLIENT_SECRET und AZURE_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.