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 e AZURE_CLIENT_ID è necessaria per DefaultAzureCredential 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 per DefaultAzureCredential scegliere ClientSecretCredential.
    • L'impostazione della variabile di ambiente AZURE_CLIENT_CERTIFICATE_PATH configura per DefaultAzureCredential scegliere ClientCertificateCredential se AZURE_CLIENT_SECRET non è impostato.
  • L'impostazione della variabile di ambiente DefaultAzureCredential configura per scegliere UsernamePasswordCredential se AZURE_CLIENT_SECRET e AZURE_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.