Autenticación con Microsoft Entra ID en sqlcmd
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Base de datos SQL de Microsoft Fabric
sqlcmd admite una variedad de modelos de autenticación de Microsoft Entra, en función de la versión que haya instalado.
Nota:
Aunque Microsoft Entra ID es el nuevo nombre de Azure Active Directory (Azure AD), para evitar interrumpir los entornos existentes, Azure AD sigue estando en algunos elementos codificados de forma rígida como campos de interfaz de usuario, proveedores de conexiones, códigos de error y cmdlets. En este artículo, los dos nombres son intercambiables.
Para obtener más información sobre la diferencia entre las versiones de sqlcmd , vea utilidad sqlcmd.
sqlcmd (Go) admite más modelos de autenticación de Microsoft Entra, en función del paquete azidentity. La implementación se basa en un conector de Microsoft Entra del controlador go-sqlcmd.
Argumentos de línea de comandos
Para usar la autenticación con Microsoft Entra, puede usar uno de los dos modificadores de línea de comandos.
-G
es (principalmente) compatible con su uso en sqlcmd (ODBC). Si se proporciona un nombre de usuario y una contraseña, se autenticará mediante la autenticación de contraseña de Microsoft Entra. Si se proporciona un nombre de usuario, usa la autenticación interactiva de Microsoft Entra, que puede mostrar un navegador web. Si no se proporciona ningún nombre de usuario o contraseña, usa un valor DefaultAzureCredential
, que intenta autenticarse a través de varios mecanismos.
--authentication-method=
se puede usar para especificar uno de los siguientes tipos de autenticación.
ActiveDirectoryDefault
- Para obtener información general sobre los tipos de autenticación que usará este modo, consulte Credencial de Azure predeterminada.
- Elija este método si los scripts de automatización de bases de datos están diseñados para ejecutarse en entornos de desarrollo locales y en una implementación de producción en Azure. En el entorno de desarrollo, puede usar un secreto de cliente o un inicio de sesión de la CLI de Azure. Sin cambiar el script del entorno de desarrollo, podrá usar una identidad administrada o un secreto de cliente en la implementación de producción.
- La configuración de las variables de entorno
AZURE_TENANT_ID
yAZURE_CLIENT_ID
es necesaria para queDefaultAzureCredential
empiece a comprobar la configuración del entorno y busque una de las siguientes variables de entorno adicionales para autenticarse:- Al establecer la variable de entorno
AZURE_CLIENT_SECRET
, se configuraDefaultAzureCredential
para elegirClientSecretCredential
. - Al establecer la variable de entorno
AZURE_CLIENT_CERTIFICATE_PATH
, se configuraDefaultAzureCredential
para elegirClientCertificateCredential
. siAZURE_CLIENT_SECRET
no está establecido.
- Al establecer la variable de entorno
- Al establecer la variable de entorno AZURE_USERNAME, se configura
DefaultAzureCredential
para elegirUsernamePasswordCredential
siAZURE_CLIENT_SECRET
yAZURE_CLIENT_CERTIFICATE_PATH
no están establecidos.
ActiveDirectoryIntegrated
Este método no está implementado actualmente y volverá a ActiveDirectoryDefault
.
ActiveDirectoryPassword
Este método se autenticará mediante un nombre de usuario y una contraseña. No funciona si se requiere MFA.
Debe proporcionar el nombre de usuario y la contraseña mediante los modificadores de línea de comandos habituales o las variables de entorno
SQLCMD
.Establezca la variable de entorno
AZURE_TENANT_ID
en el identificador de inquilino del servidor si no usa el inquilino predeterminado del usuario.
ActiveDirectoryInteractive
Este método inicia un explorador web para autenticar al usuario.
ActiveDirectoryManagedIdentity
Use este método al ejecutar sqlcmd (Go) en una máquina virtual de Azure que tenga una identidad administrada asignada por el sistema o por el usuario. Si usa una identidad administrada asignada por el usuario, establezca el nombre de usuario en el Id. de cliente de la identidad administrada. Si usa una identidad asignada por el sistema, deje el nombre de usuario vacío.
En este ejemplo se muestra cómo conectarse mediante una identidad administrada asignada por el servicio (SAMI):
-S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity
En este ejemplo se muestra cómo conectarse con una identidad administrada asignada por el usuario (UAMI) agregando el identificador de cliente de la identidad administrada asignada por el usuario:
-S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity -U <user-assigned-managed-identity-client-id>
ActiveDirectoryServicePrincipal
Este método autentica el nombre de usuario proporcionado como identificador de entidad de servicio y la contraseña como secreto de cliente para la entidad de servicio. Proporcione un nombre de usuario con el formato <service principal id>@<tenant id>
. Establezca la variable SQLCMDPASSWORD
en el secreto de cliente. Si usa un certificado en lugar de un secreto de cliente, establezca la variable de entorno AZURE_CLIENT_CERTIFICATE_PATH
en la ruta de acceso del archivo de certificado.
Variables de entorno para la autenticación de Microsoft Entra.
Algunas opciones de la autenticación de Microsoft Entra no tienen entradas de línea de comandos, y algunas variables de entorno se consumen directamente por el paquete azidentity
usado por sqlcmd (Go).
Estas variables de entorno se pueden establecer para configurar algunos aspectos de la autenticación con Microsoft Entra y omitir los comportamientos predeterminados. Además de las variables mencionadas, las siguientes son específicas de sqlcmd (Go) y se aplican a varios métodos.
SQLCMDCLIENTID
Establezca esta variable de entorno en el identificador de una aplicación registrada en Microsoft Entra, que está autorizada para autenticarse en Azure SQL Database. Se aplica a los métodos ActiveDirectoryInteractive
y ActiveDirectoryPassword
.