S'authentifier avec votre compte Microsoft Entra ID dans sqlcmd

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

sqlcmd prend en charge différents modèles d'authentification Microsoft Entra, en fonction de la version installée.

Remarque

Bien que Microsoft Entra ID soit le nouveau nom d’Azure Active Directory (Azure AD) pour empêcher l’interruption des environnements existants, Azure AD reste toujours dans certains éléments codés en dur, tels que les champs d’interface utilisateur, les fournisseurs de connexions, les codes d’erreur et cmdlets. Dans cet article, les deux noms sont interchangeables.

Pour plus d'informations sur la différence entre les versions sqlcmd, consultez l'utilitaire sqlcmd.

sqlcmd (Go) prend en charge davantage de modèles d'authentification Microsoft Entra, en fonction du package azidentity. L'implémentation s'appuie sur le connecteur Microsoft Entra dans le gestionnaire go-sqlcmd.

Arguments de ligne de commande

Pour utiliser l'authentification Microsoft Entra, vous pouvez utiliser l'un des deux commutateurs de ligne de commande.

-G est (principalement) compatible avec son utilisation dans sqlcmd (ODBC). Si un nom d'utilisateur et un mot de passe sont fournis, il s'authentifie à l'aide de l'authentification par mot de passe Microsoft Entra. Si un nom d’utilisateur est fourni, il utilise l’authentification interactive Microsoft Entra qui peut afficher un navigateur Web. Si aucun nom d'utilisateur ni mot de passe n'est fourni, il utilise un DefaultAzureCredential qui tente de l'authentification par le biais de différents mécanismes.

--authentication-method= peut être utilisé pour spécifier l'un des types d'authentification suivants.

ActiveDirectoryDefault

  • Pour obtenir une vue d'ensemble des types d'authentification que ce mode utilise, consultez Informations d'identification Azure par défaut.
  • Choisissez cette méthode si vos scripts d'automatisation de bases de données sont destinés à s'exécuter dans des environnements de développement locaux et dans un déploiement de production dans Azure. Dans votre environnement de développement, vous pouvez utiliser un secret client ou une connexion Azure CLI. Sans modifier le script de l'environnement de développement, vous pourrez utiliser une identité managée ou une clé secrète client sur votre déploiement de production.
  • Le paramétrage des variables d'environnement AZURE_TENANT_ID et AZURE_CLIENT_ID est nécessaire pour que DefaultAzureCredential commence à vérifier la configuration de l'environnement et recherche l'une des variables d'environnement supplémentaires suivantes pour s'authentifier :
    • Le paramétrage de la variable d'environnement AZURE_CLIENT_SECRET configure le DefaultAzureCredential pour choisir ClientSecretCredential.
    • La définition de la variable d'environnement AZURE_CLIENT_CERTIFICATE_PATH configure DefaultAzureCredential pour choisir ClientCertificateCredential si AZURE_CLIENT_SECRET n'est pas défini.
  • La définition de la variable d'environnement AZURE_USERNAME configure DefaultAzureCredential pour choisir UsernamePasswordCredential si AZURE_CLIENT_SECRET et AZURE_CLIENT_CERTIFICATE_PATH ne sont pas définis.

ActiveDirectoryIntegrated

Cette méthode n'est actuellement pas implémentée et revient à ActiveDirectoryDefault.

ActiveDirectoryPassword

  • Cette méthode procède à l'authentification avec un nom d'utilisateur et un mot de passe. Elle ne fonctionne pas si l'authentification multifacteur est exigée.

  • Vous fournissez le nom d'utilisateur et le mot de passe à l'aide des commutateurs de ligne de commande habituels ou des variables d'environnement SQLCMD.

  • Définissez la variable d'environnement AZURE_TENANT_ID sur l'ID d'abonné du serveur s'il n'utilise pas l'abonné par défaut de l'utilisateur.

ActiveDirectoryInteractive

Cette méthode lance un navigateur web pour authentifier l'utilisateur.

ActiveDirectoryManagedIdentity

Utilisez cette méthode lors de l'exécution de sqlcmd (Go) sur une machine virtuelle Azure qui a une identité managée affectée par le système ou affectée par l'utilisateur. Si vous utilisez une identité managée affectée par l'utilisateur, définissez le nom d'utilisateur sur l'ID client de l'identité managée. Si vous utilisez une identité affectée par le système, laissez le nom d'utilisateur vide.

Cet exemple montre comment se connecter à l’aide d’une identité managée affectée par le service (SAMI) :

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

Cet exemple montre comment se connecter à une identité managée affectée par l’utilisateur (UAMI) en ajoutant l’ID client de l’identité managée affectée par l’utilisateur :

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

ActiveDirectoryServicePrincipal

Cette méthode authentifie le nom d'utilisateur fourni en tant qu'ID de principal de service et le mot de passe comme clé secrète client pour le principal de service. Indiquez un nom d'utilisateur dans le formulaire <service principal id>@<tenant id>. Définissez la variable SQLCMDPASSWORD sur la clé secrète client. Si vous utilisez un certificat au lieu d'une clé secrète client, définissez la variable d'environnement AZURE_CLIENT_CERTIFICATE_PATH sur le chemin du fichier de certificat.

Variables d'environnement pour l'authentification Microsoft Entra

Certains paramètres d'authentification Microsoft Entra n'ont pas d'entrées de ligne de commande et certaines variables d'environnement sont consommées directement par le package azidentity utilisé par sqlcmd (Go).

Ces variables d'environnement peuvent être définies pour configurer certains aspects de l'authentification Microsoft Entra et contourner les comportements par défaut. Outre les variables répertoriées ci-dessus, les éléments suivants sont spécifiques à sqlcmd (Go) et s'appliquent à plusieurs méthodes.

SQLCMDCLIENTID

Définissez cette variable d'environnement sur l'identificateur d'une application inscrite dans Microsoft Entra avec l'autorisation de s'authentifier auprès de la base de données Azure SQL. S'applique aux méthodes ActiveDirectoryInteractive et ActiveDirectoryPassword.