Freigeben über


Authentifizierung mit Microsoft Entra ID in sqlcmd

Gilt für:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Datenbank in Microsoft Fabric

sqlcmd unterstützt eine Vielzahl von Azure Active Directory (Azure AD)-Authentifizierungsmodellen, je nachdem, welche Version Sie installiert haben.

Note

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.

Informationen dazu, welche Variante und Version von sqlcmd auf Ihrem System installiert ist, finden Sie unter Überprüfen der installierten Version des sqlcmd-Hilfsprogramms. Informationen zum Abrufen von sqlcmd finden Sie unter Herunterladen und Installieren des sqlcmd-Hilfsprogramms.

sqlcmd (Go) unterstützt mehr Azure AD-Authentifizierungsmodelle basierend auf dem Azidentity-Paket. Die Implementierung basiert auf einem Microsoft Entra-Connector im go-sqlcmd-Treiber.

Befehlszeilenargumente

Wenn Sie die Microsoft Entra-Authentifizierung verwenden möchten, können Sie eine von zwei Befehlszeileoptionen 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 Microsoft Entra-Kennwortauthentifizierung. Wenn ein Benutzername angegeben wird, verwendet er die interaktive Microsoft Entra-Authentifizierung, die einen Webbrowser anzeigen kann. Wenn kein Benutzername oder Passwort angegeben wird, wird eine DefaultAzureCredential verwendet, die versucht, sich durch verschiedene Mechanismen zu authentifizieren.

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 ein Client-Geheimnis in Ihrer 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 MFA 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 systemzugewiesenen 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:

sqlcmd -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:

sqlcmd -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 <application (client) 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.

sqlcmd -S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryServicePrincipal -U <Application (client) ID> -P <client secret>

Umgebungsvariablen für die Authentifizierung mit Microsoft Entra

Einige Einstellungen der Microsoft Entra-Authentifizierung haben keine Befehlszeileneingaben, und einige Umgebungsvariablen werden direkt von dem Paket genutzt, das von azidentity (Go) verwendet wird.

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 Microsoft Entra registriert und berechtigt ist, sich bei der Azure SQL-Datenbank zu authentifizieren. Gilt für ActiveDirectoryInteractive- und ActiveDirectoryPassword-Methoden.