Compartir a través de


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 y AZURE_CLIENT_ID es necesaria para que DefaultAzureCredential 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 configura DefaultAzureCredential para elegir ClientSecretCredential.
    • Al establecer la variable de entorno AZURE_CLIENT_CERTIFICATE_PATH, se configura DefaultAzureCredential para elegir ClientCertificateCredential. si AZURE_CLIENT_SECRET no está establecido.
  • Al establecer la variable de entorno AZURE_USERNAME, se configura DefaultAzureCredential para elegir UsernamePasswordCredential si AZURE_CLIENT_SECRET y AZURE_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.