Udostępnij za pomocą


Uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft w narzędziu sqlcmd

Dotyczy do:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSystem Platform Analitycznych (PDW)Baza danych SQL w Microsoft Fabric

sqlcmd obsługuje różne modele uwierzytelniania Microsoft Entra, w zależności od zainstalowanej wersji.

Note

Chociaż Microsoft Entra ID to nowa nazwa usługi Azure Active Directory (Azure AD), aby zapobiec zakłócaniu działania istniejących środowisk, usługa Azure AD nadal pozostaje w niektórych twardo zakodowanych elementach, takich jak pola interfejsu użytkownika, dostawcy usług połączeń, kody błędów i cmdlet. W tym artykule dwie nazwy są wymienne.

Aby dowiedzieć się, który wariant i wersja narzędzia sqlcmd jest zainstalowany w systemie, zobacz Sprawdzanie zainstalowanej wersji narzędzia sqlcmd. Aby uzyskać informacje na temat pobierania narzędzia sqlcmd, zobacz Pobieranie i instalowanie narzędzia sqlcmd.

sqlcmd (Go) obsługuje więcej modeli uwierzytelniania Microsoft Entra, bazując na pakiecie azidentity. Implementacja opiera się na łączniku Microsoft Entra w sterowniku go-sqlcmd .

Argumenty wiersza polecenia

Aby użyć uwierzytelniania Microsoft Entra, możesz wykorzystać jeden z dwóch przełączników wiersza polecenia.

-G jest (głównie) zgodny z jego użyciem w sqlcmd (ODBC). Jeśli podano nazwę użytkownika i hasło, uwierzytelnia się przy użyciu uwierzytelniania za pomocą hasła firmy Microsoft Entra. Jeśli podano nazwę użytkownika, używa interakcyjnego uwierzytelniania firmy Microsoft Entra, które może wyświetlać przeglądarkę internetową. Jeśli nie podano nazwy użytkownika lub hasła, używa DefaultAzureCredential, która próbuje uwierzytelnić się za pomocą różnych mechanizmów.

--authentication-method= można użyć do określenia jednego z następujących typów uwierzytelniania.

ActiveDirectoryDefault

  • Aby zapoznać się z omówieniem typów uwierzytelniania używanych w tym trybie, zobacz Domyślne poświadczenia platformy Azure.
  • Wybierz tę metodę, jeśli skrypty automatyzacji bazy danych mają być uruchamiane zarówno w lokalnych środowiskach deweloperskich, jak i we wdrożeniu produkcyjnym na platformie Azure. W środowisku deweloperskim możesz użyć wpisu tajnego klienta lub logowania za pomocą Azure CLI. Bez zmiany skryptu ze środowiska deweloperskiego można użyć tożsamości zarządzanej lub klucza tajnego klienta we wdrożeniu produkcyjnym.
  • Ustawienie zmiennych środowiskowych AZURE_TENANT_ID i AZURE_CLIENT_ID jest niezbędne, aby DefaultAzureCredential rozpocząć sprawdzanie konfiguracji środowiska i wyszukać jedną z następujących dodatkowych zmiennych środowiskowych w celu uwierzytelnienia:
    • Ustawienie zmiennej środowiskowej AZURE_CLIENT_SECRET konfiguruje DefaultAzureCredential do wybrania ClientSecretCredential.
    • Ustawienie zmiennej środowiskowej AZURE_CLIENT_CERTIFICATE_PATH konfiguruje DefaultAzureCredential do wybierania ClientCertificateCredential, jeśli AZURE_CLIENT_SECRET nie jest ustawiona.
  • Ustawienie zmiennej środowiskowej AZURE_USERNAME konfiguruje DefaultAzureCredential, aby wybrać UsernamePasswordCredential, jeśli AZURE_CLIENT_SECRET i AZURE_CLIENT_CERTIFICATE_PATH nie są ustawione.

ActiveDirectoryIntegrated

Ta metoda nie jest obecnie zaimplementowana i wraca do ActiveDirectoryDefault.

ActiveDirectoryPassword

  • Ta metoda uwierzytelnia się przy użyciu nazwy użytkownika i hasła. Nie działa, jeśli wymagane jest uwierzytelnianie wieloskładnikowe.

  • Podaj nazwę użytkownika i hasło za pomocą zwykłych przełączników wiersza poleceń lub zmiennych środowiskowych SQLCMD.

  • Ustaw zmienną środowiskową AZURE_TENANT_ID na identyfikator tenanta serwera, jeśli nie używasz domyślnej dzierżawy przypisanej użytkownikowi.

ActiveDirectoryInteractive

Ta metoda uruchamia przeglądarkę internetową w celu uwierzytelnienia użytkownika.

ActiveDirectoryManagedIdentity

Użyj tej metody podczas uruchamiania sqlcmd (Go) na maszynie wirtualnej platformy Azure, która ma tożsamość zarządzaną przypisaną przez system lub przypisaną przez użytkownika. W przypadku korzystania z zarządzanej tożsamości przypisanej przez użytkownika, ustaw nazwę użytkownika na identyfikator klienta tej tożsamości zarządzanej. W przypadku korzystania z tożsamości przypisanej przez system pozostaw pustą nazwę użytkownika.

W tym przykładzie pokazano, jak nawiązać połączenie przy użyciu tożsamości zarządzanej przypisanej przez usługę (SAMI):

sqlcmd -S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity

W tym przykładzie pokazano, jak połączyć się z tożsamością zarządzaną przypisaną przez użytkownika, dodając identyfikator klienta tej tożsamości.

sqlcmd -S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity -U <user-assigned-managed-identity-client-id>

ActiveDirectoryServicePrincipal

Ta metoda uwierzytelnia podaną nazwę użytkownika jako identyfikator jednostki usługi i hasło jako klucz tajny klienta dla jednostki usługi. Podaj nazwę użytkownika w formularzu <application (client) ID>. Ustaw zmienną SQLCMDPASSWORD na klucz tajny klienta. Jeśli używasz certyfikatu zamiast klucza tajnego klienta, ustaw AZURE_CLIENT_CERTIFICATE_PATH zmienną środowiskową na ścieżkę pliku certyfikatu.

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

Zmienne środowiskowe do uwierzytelniania Microsoft Entra

Niektóre ustawienia uwierzytelniania Entra firmy Microsoft nie mają wejść z wiersza poleceń, a niektóre zmienne środowiskowe są bezpośrednio używane przez pakiet azidentity wykorzystywany przez sqlcmd (Go).

Te zmienne środowiskowe można ustawić tak, aby skonfigurować niektóre aspekty uwierzytelniania firmy Microsoft Entra i obejść domyślne zachowania. Oprócz wcześniej wymienionych zmiennych, poniższe dotyczą sqlcmd (Go) i mają zastosowanie w wielu metodach.

SQLCMDCLIENTID

Ustaw tę zmienną środowiskową na identyfikator aplikacji zarejestrowanej w usłudze Microsoft Entra, która jest autoryzowana do uwierzytelniania w usłudze Azure SQL Database. Dotyczy metod ActiveDirectoryInteractive i ActiveDirectoryPassword.