Eseguire l'autenticazione con Microsoft Entra ID
Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)
sqlcmd supporta un'ampia gamma di modelli di autenticazione di Microsoft Entra, a seconda della versione installata.
Nota
Anche se Microsoft Entra ID è il nuovo nome per Azure Active Directory (Azure AD), per evitare l'interruzione degli ambienti esistenti, la denominazione Azure AD è tuttora mantenuta in alcuni elementi hardcoded, ad esempio campi dell'interfaccia utente, provider di connessioni, codici errore e cmdlet. All’interno di questo articolo i due nomi vengono utilizzati in modo intercambiabile.
Per altre informazioni sulla differenza tra le versioni di sqlcmd, vedere Utilità sqlcmd.
sqlcmd (Go) supporta più modelli di autenticazione di Microsoft Entra, basati sul pacchetto azidentity. L'implementazione si basa su un connettore Microsoft Entra nel driver go-sqlcmd.
Command line arguments
Per usare l'autenticazione di Microsoft Entra, è possibile usare una delle due opzioni della riga di comando.
-G
è (per lo più) compatibile con il relativo utilizzo in sqlcmd (ODBC). Se vengono forniti un nome utente e una password, l'autenticazione verrà eseguita tramite l'autenticazione con password di Microsoft Entra. Se viene fornito un nome utente, verrà usata l'autenticazione interattiva di Microsoft Entra, che può visualizzare un Web browser. Se non viene fornito alcun nome utente né alcuna password, viene usato un valore DefaultAzureCredential
, che tenta di eseguire l'autenticazione tramite vari meccanismi.
--authentication-method=
consente di specificare uno dei tipi di autenticazione seguenti.
ActiveDirectoryDefault
- Per una panoramica dei tipi di autenticazione in uso, vedere Credenziali predefinite di Azure.
- Scegliere questo metodo se gli script di automazione del database sono destinati a essere eseguiti in ambienti di sviluppo locali e in una distribuzione di produzione in Azure. Nell'ambiente di sviluppo sarà possibile usare un segreto client o un account di accesso dell'interfaccia della riga di comando di Azure. Senza modificare lo script dall'ambiente di sviluppo, sarà possibile usare un'identità gestita o un segreto client nella distribuzione di produzione.
- L'impostazione delle variabili di ambiente
AZURE_TENANT_ID
eAZURE_CLIENT_ID
è necessaria perDefaultAzureCredential
per iniziare a controllare la configurazione dell'ambiente e cercare una delle variabili di ambiente aggiuntive seguenti per l'autenticazione:- L'impostazione della variabile di ambiente
AZURE_CLIENT_SECRET
configura perDefaultAzureCredential
scegliereClientSecretCredential
. - L'impostazione della variabile di ambiente
AZURE_CLIENT_CERTIFICATE_PATH
configura perDefaultAzureCredential
scegliereClientCertificateCredential
seAZURE_CLIENT_SECRET
non è impostato.
- L'impostazione della variabile di ambiente
- L'impostazione della variabile di ambiente
DefaultAzureCredential
configura per scegliereUsernamePasswordCredential
seAZURE_CLIENT_SECRET
eAZURE_CLIENT_CERTIFICATE_PATH
non sono impostati.
ActiveDirectoryIntegrated
Questo metodo non è attualmente implementato ed esegue il fallback a ActiveDirectoryDefault
.
ActiveDirectoryPassword
Questo metodo di autenticazione usa nome utente e password. Il metodo non funziona se è necessaria l'autenticazione a più fattori.
Specificare il nome utente e la password tramite le normali opzioni della riga di comando o le variabili di ambiente
SQLCMD
.Impostare la variabile di ambiente
AZURE_TENANT_ID
sull'ID tenant del server se non si usa il tenant predefinito dell'utente.
ActiveDirectoryInteractive
Questo metodo avvia un Web browser per autenticare l'utente.
ActiveDirectoryManagedIdentity
Usare questo metodo quando si esegue sqlcmd (Go) in una macchina virtuale di Azure con un'identità gestita assegnata dall'utente o dal sistema. Se si usa un'identità gestita assegnata dall'utente, impostare il nome utente sull'ID client dell'identità gestita. Se si usa un'identità assegnata dal sistema, lasciare vuoto il nome utente.
Questo esempio illustra come connettersi usando un'identità gestita assegnata dal servizio (SAMI):
-S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity
Questo esempio illustra come connettersi con un'identità gestita assegnata dall'utente (UAMI) aggiungendo l'ID client dell'identità:
-S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity -U <user-assigned-managed-identity-client-id>
ActiveDirectoryServicePrincipal
Questo metodo autentica il nome utente specificato come ID dell'entità servizio e la password come segreto client per l'entità servizio. Specificare un nome utente nel formato <service principal id>@<tenant id>
. Impostare la variabile SQLCMDPASSWORD
sul segreto client. Se si usa un certificato anziché un segreto client, impostare la variabile di ambiente AZURE_CLIENT_CERTIFICATE_PATH
sul percorso del file di certificato.
Le variabili di ambiente non vengono usate per l'autenticazione Microsoft Entra.
Alcune impostazioni per l'autenticazione di Microsoft Entra non dispongono di input della riga di comando e alcune variabili di ambiente vengono usate direttamente dal pacchetto azidentity
usato da sqlcmd (Go).
Tali variabili di ambiente possono essere impostate per configurare alcuni aspetti dell'autenticazione di Microsoft Entra e per ignorare i comportamenti predefiniti. Oltre alle variabili elencate in precedenza, le seguenti sono specifiche di sqlcmd (Go) e si applicano a più metodi.
SQLCMDCLIENTID
Impostare questa variabile di ambiente sull'identificatore di un'applicazione registrata in Microsoft Entra autorizzata a eseguire l'autenticazione nel database SQL di Azure. Si applica ai metodi ActiveDirectoryInteractive
e ActiveDirectoryPassword
.