Uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft w narzędziu sqlcmd
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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)
- sqlcmd (ODBC)
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
iAZURE_CLIENT_ID
jest niezbędne, abyDefaultAzureCredential
rozpocząć sprawdzanie konfiguracji środowiska i wyszukać jedną z następujących dodatkowych zmiennych środowiskowych w celu uwierzytelnienia:- Ustawienie zmiennej środowiskowej
AZURE_CLIENT_SECRET
konfigurujeDefaultAzureCredential
do wybraniaClientSecretCredential
. - Ustawienie zmiennej środowiskowej
AZURE_CLIENT_CERTIFICATE_PATH
konfigurujeDefaultAzureCredential
do wybieraniaClientCertificateCredential
, jeśliAZURE_CLIENT_SECRET
nie jest ustawiona.
- Ustawienie zmiennej środowiskowej
- Ustawienie zmiennej środowiskowej AZURE_USERNAME konfiguruje
DefaultAzureCredential
, aby wybraćUsernamePasswordCredential
, jeśliAZURE_CLIENT_SECRET
iAZURE_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
.