Udostępnij za pośrednictwem


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

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database w usłudze Microsoft Fabric

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

Notatka

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 uzyskać więcej informacji na temat różnicy między wersjami sqlcmd, zobacz sqlcmd utility.

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 uwierzytelniania interakcyjnego 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.

Zintegrowany z Active Directory

Ta metoda nie jest obecnie zaimplementowana i wraca do ActiveDirectoryDefault.

Hasło do ActiveDirectory

  • 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 dzierżawy serwera, jeśli nie jest używana domyślna dzierżawa użytkownika.

ActiveDirectoryInteractive

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

Zarządzana Tożsamość Active Directory

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

-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.

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

Główny Serwis Active Directory

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 <service principal id>@<tenant 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.

Zmienne środowiskowe uwierzytelniania entra firmy Microsoft

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.