Configurar y administrar la autenticación de Microsoft Entra con Azure SQL

Se aplica a:Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

En este artículo se muestra cómo crear y rellenar un inquilino de Microsoft Entra y usar Microsoft Entra ID (anteriormente Azure Active Directory) con Azure SQL Database, Azure SQL Managed Instance y Azure Synapse Analytics. Para obtener información general, consulte autenticación de Microsoft Entra.

Nota:

Microsoft Entra ID era conocido anteriormente como Azure Active Directory (Azure AD).

Microsoft Entra métodos de autenticación

Microsoft Entra ID admite los siguientes métodos de autenticación:

  • Identidades solo en la nube de Microsoft Entra
  • Identidades híbridas de Microsoft Entra que admiten:
    • Autenticación en la nube con dos opciones asociadas al inicio de sesión único de conexión directa
      • Autenticación de hash de contraseñas de Microsoft Entra
      • Autenticación de paso a través de Microsoft Entra
    • Autenticación federada

Para obtener más información sobre los métodos de autenticación de Microsoft Entra y cuál debes elegir, consulta Seleccionar el método de autenticación adecuado para la solución de identidad híbrida de Microsoft Entra.

Para obtener más información sobre las identidades híbridas de Microsoft Entra, la configuración y la sincronización, consulte:

Creación y rellenado de un inquilino de Microsoft Entra

Cree un inquilino de Microsoft Entra y rellénelo con usuarios y grupos. Los inquilinos de Microsoft Entra se pueden administrar completamente en Azure o usarse para la federación de una instancia de Active Directory Domain Services local.

Para más información, vea:

Asociación o adición de una suscripción de Azure al Microsoft Entra ID

  1. Asocie la suscripción de Azure a Microsoft Entra ID mediante la creación del directorio como un directorio de confianza para la suscripción de Azure que hospeda la base de datos. Para obtener más información, consulte Asociación o adición de una suscripción de Azure al inquilino de Microsoft Entra.

  2. Usa el modificador del directorio en Azure Portal para cambiar a la suscripción asociada con el dominio.

    Importante

    Cada suscripción de Azure tiene una relación de confianza con una instancia de Microsoft Entra. Esto significa que confía en ese directorio para autenticar usuarios, servicios y dispositivos. Varias suscripciones pueden confiar en el mismo directorio, pero una suscripción confía solo en un único directorio. Esta relación de confianza que tiene una suscripción con un directorio es diferente de la que tiene una suscripción con todos los demás recursos de Azure (sitios web, bases de datos etc.), que son más parecidos a los recursos secundarios de una suscripción. Si una suscripción expira, el acceso a esos otros recursos asociados a la suscripción también se detiene. Sin embargo, el directorio permanece en Azure y puedes asociar otra suscripción a ese directorio y continuar con la administración de los usuarios del directorio. Para más información sobre recursos, consulte Descripción de acceso a los recursos de Azure. Para más información sobre esta relación de confianza, consulta Asociación o adición de una suscripción de Azure a Microsoft Entra ID.

Administrador de Microsoft Entra con un servidor en SQL Database

Cada servidor servidor lógico de Azure (que hospeda SQL Database o Azure Synapse) se inicia con una cuenta de administrador del servidor única, que es el administrador de todo el servidor. Cree una segunda cuenta de administrador como una cuenta de Microsoft Entra. Esta entidad de seguridad se crea como un usuario de base de datos independiente en la base de datos master del servidor. Las cuentas de administrador son miembros del rol db_owner en todas las bases de datos de usuarios y acceden a cada base de datos de usuario con el usuario dbo. Para obtener más información sobre las cuentas de administrador, consulte cómo administrar bases de datos e inicios de sesión.

El administrador de Microsoft Entra debe configurarse para los servidores primarios y secundarios al usar Microsoft Entra ID con replicación geográfica. Si un servidor no tiene un administrador de Microsoft Entra, los inicios de sesión de Microsoft Entra y los usuarios reciben un error de servidor Cannot connect.

Nota:

Los usuarios que no se basan en una cuenta de Microsoft Entra (incluida la cuenta de administrador del servidor) no pueden crear usuarios basados en Microsoft Entra porque no tienen permiso para validar a los usuarios de base de datos propuestos con Microsoft Entra ID.

Aprovisionamiento del administrador de Microsoft Entra (SQL Managed Instance)

Importante

Siga estos pasos únicamente si va a aprovisionar una Instancia administrada de Azure SQL. Esta operación solo la puede ejecutar el administrador global o un administrador de roles con privilegios en Microsoft Entra ID.

Puede asignar el rol Lectores de directorio a un grupo en Microsoft Entra ID. Luego, los propietarios de grupos pueden agregar la identidad de instancia administrada como miembro de este grupo, lo que le permitirá aprovisionar un administrador de Microsoft Entra en SQL Managed Instance. Para más información sobre esta característica, consulte Rol Lectores de directorio en Microsoft Entra de Azure SQL.

SQL Managed Instance necesita permiso para leer en Microsoft Entra ID a fin de realizar tareas como la autenticación de usuarios mediante la pertenencia a grupos de seguridad o la creación de nuevos usuarios. Para que esto funcione, debes conceder permiso a SQL Managed Instance para leer en Microsoft Entra ID. Para ello, puede usar Azure Portal o PowerShell.

Azure portal

Para conceder a SQL Managed Instance permisos de lectura de Microsoft Entra ID mediante Azure Portal, inicie sesión como administrador global y siga estos pasos:

  1. En Azure Portal, en la esquina superior derecha, seleccione su cuenta y, después, elija Cambiar directorios para confirmar qué directorio es actualmente su directorio actual. Cambie de directorio si fuera necesario.

    Screenshot of the Azure portal showing where to switch your directory.

  2. Elija el directorio correcto de Microsoft Entra como directorio actual.

    En este paso se vincula la suscripción asociada con Microsoft Entra ID a SQL Managed Instance, lo que garantiza que el inquilino de Microsoft Entra y SQL Managed Instance usen la misma suscripción.

  3. Ahora puedes elegir el administrador de Microsoft Entra para su instancia de SQL Managed Instance. Para ello, vaya al recurso de instancia administrada en Azure Portal y seleccione Administrador de Microsoft Entra en Configuración.

    Screenshot of the Azure portal showing the Microsoft Entra admin page open for the selected SQL managed instance.

  4. Seleccione el mensaje emergente encima de la página de administrador de Microsoft Entra y conceda permiso al usuario actual.

    Screenshot of the dialog for granting permissions to a SQL managed instance for accessing Microsoft Entra ID with the Grant permissions button selected.

  5. Después de que la operación se complete correctamente, la siguiente notificación se mostrará en la esquina superior derecha:

    Screenshot of a notification confirming that Microsoft Entra ID read permissions have been successfully updated for the managed instance.

  6. En la página Administrador de Microsoft Entra, seleccione Establecer administrador en la barra de navegación para abrir el panel de Microsoft Entra ID.

    Screenshot showing the Set admin command highlighted on the Microsoft Entra admin page for the selected SQL managed instance.

  7. En el panel de Microsoft Entra ID, busque un usuario, active la casilla situada junto al usuario o grupo para que sea administrador y, a continuación, presione Seleccionar para cerrar el panel y volver a la página de administración de Microsoft Entra para la instancia administrada.

    En el panel de Microsoft Entra se muestran todos los miembros y grupos del directorio actual. No se pueden seleccionar los usuarios o grupos que aparecen atenuados porque no se admiten como administradores de Microsoft Entra. Consulte la lista de administradores admitidos en la sección Características y limitaciones de Microsoft Entra. El control de acceso basado en roles de Azure (Azure RBAC) se aplica solo a Azure Portal y no se propaga a SQL Database, SQL Managed Instance ni Azure Synapse.

  8. En la barra de navegación de la página de administración de Microsoft Entra para la instancia administrada, seleccione Guardar para confirmar el administrador de Microsoft Entra.

    Screenshot of the Microsoft Entra admin page with the Save button in the top row next to the Set admin and Remove admin buttons.

    El proceso de cambio del administrador puede tardar varios minutos. El nuevo administrador aparece en el cuadro Administrador de Microsoft Entra.

    Elid. de objeto se muestra junto al nombre del administrador para los usuarios y grupos de Microsoft Entra. En el caso de las aplicaciones (entidades de servicio), se muestra el identificador de la aplicación.

Después de aprovisionar un administrador de Microsoft Entra para SQL Managed Instance, puede empezar a crear entidades de seguridad de servidor de Microsoft Entra (inicios de sesión) con la sintaxis CREATE LOGIN. Para obtener más información, consulte Información general sobre SQL Managed Instance.

Sugerencia

Si más adelante deseas excluir a un administrador, en la parte superior de la página Administrador de Microsoft Entra, selecciona Quitar administrador y, a continuación, selecciona Guardar.

PowerShell

Para usar PowerShell para conceder a SQL Managed Instance permisos de lectura a Microsoft Entra ID, ejecute este script:

# This script grants "Directory Readers" permission to a service principal representing the SQL Managed Instance.
# It can be executed only by a user who is a member of the **Global Administrator** or **Privileged Roles Administrator** role.

Import-Module Microsoft.Graph.Authentication
$managedInstanceName = "<ManagedInstanceName>" # Enter the name of your managed instance
$tenantId = "<TenantId>"                       # Enter your tenant ID

Connect-MgGraph -TenantId $tenantId -Scopes "RoleManagement.ReadWrite.Directory"
 
# Get Microsoft Entra "Directory Readers" role and create if it doesn't exist
$roleName = "Directory Readers"
$role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
if ($role -eq $null) {
    # Instantiate an instance of the role template
    $roleTemplate = Get-MgDirectoryRoleTemplate -Filter "DisplayName eq '$roleName'"
    New-MgDirectoryRoleTemplate -RoleTemplateId $roleTemplate.Id
    $role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
}

# Get service principal for your SQL Managed Instance
$roleMember = Get-MgServicePrincipal -Filter "DisplayName eq '$managedInstanceName'"
$roleMember.Count
if ($roleMember -eq $null) {
    Write-Output "Error: No service principal with name '$($managedInstanceName)' found, make sure that managedInstanceName parameter was entered correctly."
    exit
}
if (-not ($roleMember.Count -eq 1)) {
    Write-Output "Error: Multiple service principals with name '$($managedInstanceName)'"
    Write-Output $roleMember | Format-List DisplayName, Id, AppId
    exit
}

# Check if service principal is already member of Directory Readers role
$isDirReader = Get-MgDirectoryRoleMember -DirectoryRoleId $role.Id -Filter "Id eq '$($roleMember.Id)'"
if ($isDirReader -eq $null) {
    # Add principal to Directory Readers role
    Write-Output "Adding service principal '$($managedInstanceName)' to 'Directory Readers' role..."
    $body = @{
        "@odata.id"= "https://graph.microsoft.com/v1.0/directoryObjects/{$($roleMember.Id)}"
    }
    New-MgDirectoryRoleMemberByRef -DirectoryRoleId $role.Id -BodyParameter $body
    Write-Output "'$($managedInstanceName)' service principal added to 'Directory Readers' role."
} else {
    Write-Output "Service principal '$($managedInstanceName)' is already member of 'Directory Readers' role."
}

PowerShell para SQL Managed Instance

Para ejecutar los cmdlets de PowerShell, necesitará tener Azure PowerShell instalado y en marcha. Consulte el artículo de instalación y configuración de Azure PowerShell para información detallada.

Importante

Azure SQL Managed Instance todavía es compatible con el módulo de Azure Resource Manager (RM) para PowerShell, pero todo el desarrollo futuro se realizará para el módulo Az.Sql. El módulo de AzureRM recibirá correcciones de errores hasta diciembre de 2020 como mínimo. Los argumentos para los comandos del módulo Az y los módulos AzureRm son esencialmente idénticos. Para obtener más información sobre la compatibilidad, vea Presentación del nuevo módulo Az de Azure PowerShell.

Para aprovisionar un administrador de Microsoft Entra, debe ejecutar los siguientes comandos de Azure PowerShell:

  • Connect-AzAccount
  • Select-AzSubscription

Los cmdlets que se usan para aprovisionar y administrar el administrador de Microsoft Entra para SQL Managed Instance se enumeran en la tabla siguiente:

Nombre del cmdlet Descripción
Set-AzSqlInstanceActiveDirectoryAdministrator Aprovisiona un administrador de Microsoft Entra para la instancia de SQL Managed Instance de la suscripción actual. (Debe ser de la suscripción actual).
Remove-AzSqlInstanceActiveDirectoryAdministrator Quita un administrador de Microsoft Entra para la instancia de SQL Managed Instance de la suscripción actual.
Get-AzSqlInstanceActiveDirectoryAdministrator Devuelve información sobre un administrador de Microsoft Entra para la instancia de SQL Managed Instance de la suscripción actual.

El siguiente comando obtiene información sobre un administrador de Microsoft Entra para una instancia de SQL Managed Instance, denominada ManagedInstance01 y asociada a un grupo de recursos denominado ResourceGroup01.

Get-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstance01"

El siguiente comando aprovisiona un grupo de administradores de Microsoft Entra denominado DBAs para la instancia de SQL Managed Instance denominada ManagedInstance01. Este servidor está asociado al grupo de recursos ResourceGroup01.

Set-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstance01" -DisplayName "DBAs" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353b"

El siguiente comando elimina al administrador de Microsoft Entra para la instancia de SQL Managed Instance, denominada ManagedInstanceName01, que está asociada a un grupo de recursos denominado ResourceGroup01.

Remove-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstanceName01" -Confirm -PassThru

Aprovisionamiento del administrador de Microsoft Entra (SQL Database)

Importante

Simplemente siga estos pasos si va a aprovisionar un servidor de SQL Database o Azure Synapse.

Los dos procedimientos siguientes muestran cómo aprovisionar un administrador de Microsoft Entra para el servidor en Azure Portal y mediante el uso de PowerShell.

Azure portal

  1. En Azure Portal, en la esquina superior derecha, seleccione la cuenta y elija Cambiar directorio para abrir la página Directorios y suscripciones. Elija el directorio de Microsoft Entra que contiene Azure SQL Database o Azure Synapse Analytics como directorio actual.

  2. Busque servidores SQL Server y seleccione el servidor lógico de Azure SQL Database.

    Search for and select SQL servers.

    Nota:

    En esta página, antes de seleccionar Servidores SQL Server, puede seleccionar la estrella junto al nombre para incluir la categoría en favoritos y agregar Servidores SQL Server al menú de navegación izquierdo.

    Considere también la posibilidad de visitar el panel de Azure SQL.

  3. En la página SQL Server , seleccione Microsoft Entra ID.

  4. En la página Microsoft Entra ID, seleccione Establecer administrador para abrir el panel de Microsoft Entra ID.

    Screenshot shows the option to set the Microsoft Entra admin for SQL servers.

  5. En el panel de Microsoft Entra ID, busque un usuario y, a continuación, seleccione el usuario o grupo para que sea administrador. Usa Seleccionar para confirmar la elección y cierra el panel para volver a la página Microsoft Entra ID del servidor lógico. (El panel de Microsoft Entra ID muestra todos los miembros y grupos del directorio actual. No se pueden seleccionar usuarios o grupos atenuados porque no se admiten como administradores de Microsoft Entra. Consulta la lista de administradores admitidos en la sección de características y limitaciones de Microsoft Entra de Uso de la autenticación de Microsoft Entra con SQL Database o Azure Synapse). El control de acceso basado en rol de Azure (RBAC de Azure) solo se aplica al portal y no se propaga al servidor.

  6. En la parte superior de la página Microsoft Entra ID del servidor lógico, seleccione Guardar.

    Screenshot shows the option to save a Microsoft Entra admin.

    Elid. de objeto se muestra junto al nombre del administrador para los usuarios y grupos de Microsoft Entra. En el caso de las aplicaciones (entidades de servicio), se muestra el identificador de la aplicación.

El proceso de cambio del administrador puede tardar varios minutos. El nuevo administrador aparece en el campo Administrador de Microsoft Entra.

Nota:

Al configurar el administrador de Microsoft Entra, el nuevo nombre del administrador (usuario o grupo) no puede estar en la base de datos master virtual como usuario de autenticación del servidor. Si está presente, se produce un error en la configuración de un (nombre de) administrador de Microsoft Entra, se revierten los cambios y se indica que ese nombre de administrador ya existe. Como el usuario de autenticación del servidor no forma parte de Microsoft Entra ID, se produce un error cada vez que se intenta conectar el servidor con la autenticación de Microsoft Entra.

Si más adelante deseas quitar el administrador, en la parte superior de la página Microsoft Entra ID, selecciona Quitar administrador y, a continuación, Guardar. Esto deshabilita la autenticación de Microsoft Entra para el servidor lógico.

PowerShell para SQL Database y Azure Synapse

Para ejecutar los cmdlets de PowerShell, necesitará tener Azure PowerShell instalado y en marcha. Consulte el artículo de instalación y configuración de Azure PowerShell para información detallada. Para aprovisionar un administrador de Microsoft Entra, debe ejecutar los siguientes comandos de Azure PowerShell:

  • Connect-AzAccount
  • Select-AzSubscription

Los cmdlets que se usan para aprovisionar y administrar el administrador de Microsoft Entra para SQL Database y Azure Synapse son los siguientes:

Nombre del cmdlet Descripción
Set-AzSqlServerActiveDirectoryAdministrator Aprovisiona un administrador de Microsoft Entra para el servidor que hospeda SQL Database o Azure Synapse. (Debe ser de la suscripción actual).
Remove-AzSqlServerActiveDirectoryAdministrator Quita un administrador de Microsoft Entra para el servidor que hospeda SQL Database o Azure Synapse.
Get-AzSqlServerActiveDirectoryAdministrator Devuelve información sobre un administrador de Microsoft Entra configurado actualmente para el servidor que hospeda SQL Database o Azure Synapse.

Use el comando de PowerShell get-help para ver más información de cada uno de estos comandos. Por ejemplo, get-help Set-AzSqlServerActiveDirectoryAdministrator.

El script siguiente aprovisiona un grupo de administradores de Microsoft Entra denominado DBA_Group (id. de objeto 40b79501-b343-44ed-9ce7-da4c8cc7353f) para el servidor demo_server, en un grupo de recursos llamado Group-23:

Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" -DisplayName "DBA_Group"

El parámetro de entrada DisplayName acepta tanto el nombre para mostrar de Microsoft Entra ID, como el nombre principal de usuario. Por ejemplo, DisplayName="John Smith" y DisplayName="johns@contoso.com". En el caso de los grupos de Microsoft Entra, solo se admite el nombre para mostrar de Microsoft Entra ID.

Nota:

El comando Set-AzSqlServerActiveDirectoryAdministrator de Azure PowerShell no le impedirá aprovisionar administradores de Microsoft Entra para usuarios no admitidos. Es posible aprovisionar un usuario no admitido, pero no podrá conectarse a una base de datos.

En el ejemplo siguiente se usa el elemento opcional ObjectID:

Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" `
    -DisplayName "DBA_Group" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353f"

Nota:

El elemento ObjectID es necesario cuando el valor DisplayName no es único. Para recuperar los valores ObjectID y DisplayName, puede ver las propiedades de un usuario o grupo en la sección de Microsoft Entra ID de Azure Portal.

En el ejemplo siguiente se devuelve información sobre el administrador actual de Microsoft Entra para el servidor:

Get-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" | Format-List

En el ejemplo siguiente se quita un administrador de Microsoft Entra:

Remove-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server"

Nota:

También puede aprovisionar un Administrador de Microsoft Entra mediante las API de REST. Para más información, consulte Service Management REST API Reference and Operations for Azure SQL Databases (Referencia de la API REST de administración de servicio y operaciones para bases de datos de Azure SQL).

Configurar los equipos cliente.

Nota:

System.Data.SqlClient usa la Biblioteca de autenticación de Azure Active Directory (ADAL), que está en desuso. Si usa el espacio de nombres System.Data.SqlClient para la autenticación de Microsoft Entra, migre las aplicaciones a Microsoft.Data.SqlClient y a la Biblioteca de autenticación de Microsoft (MSAL). Para obtener más información, consulte Uso de la autenticación de Microsoft Entra con SqlClient.

Si debes seguir usando ADAL.DLL en las aplicaciones, puedes usar los vínculos de esta sección para instalar el controlador de ODBC u OLE DB más reciente que contiene la biblioteca ADAL.DLL más reciente.

En todas las máquinas cliente, desde las que las aplicaciones o los usuarios se conectan a SQL Database o a Azure Synapse mediante identidades de Microsoft Entra, es necesario instalar el software siguiente:

Puede cumplir estos requisitos mediante:

  • La instalación de la versión más reciente de SQL Server Management Studio o de SQL Server Data Tools cumple los requisitos de .NET Framework 4.6.
    • SSMS instala la versión x86 de ADAL.DLL.
    • SSDT instala la versión amd64 de ADAL.DLL.
    • La versión más reciente de Visual Studio de la sección Descargas de Visual Studio cumple con los requisitos de .NET Framework 4.6, pero no instala la versión amd64 necesaria de ADAL.DLL.

Creación de usuarios independientes asignados a identidades de Microsoft Entra

En esta sección se revisan los requisitos y consideraciones importantes para usar la autenticación de Microsoft Entra con Azure SQL Database, Azure SQL Managed Instance y Azure Synapse.

  • La autenticación de Microsoft Entra con SQL Database y Azure Synapse requiere la utilización de usuarios de bases de datos independientes basados en una identidad de Microsoft Entra. Un usuario de base de datos independiente no cuenta con ningún inicio de sesión en la base de datos master, y se asigna a una identidad en Microsoft Entra ID que esta asociada a la base de datos. La identidad de Microsoft Entra puede ser una cuenta de usuario individual, un grupo o una aplicación. Para más información sobre los usuarios de bases de datos independientes, vea Usuarios de bases de datos independientes: cómo hacer que la base de datos sea portátil. Para más información sobre la creación de usuarios de bases de datos independientes basados en identidades de Microsoft Entra, vea CREAR USUARIO (Transact-SQL).

  • Dado que SQL Managed Instance admite entidades de seguridad (inicios de sesión) de un servidor de Microsoft Entra, no es necesario utilizar usuarios de bases de datos independientes. Esto permite crear inicios de sesión a partir de usuarios, grupos o aplicaciones de Microsoft Entra. Esto significa que puedes autenticarse con tu instancia de SQL Managed Instance mediante el inicio de sesión de servidor de Microsoft Entra en lugar de un usuario de base de datos independiente. Para obtener más información, consulte Información general sobre SQL Managed Instance. Para conocer la sintaxis de creación de entidades de seguridad (inicios de sesión) de un servidor de Microsoft Entra, consulte CREATE LOGIN.

  • Los usuarios de base de datos (a excepción de los administradores) no pueden crear una base de datos con Azure Portal. Los roles de Microsoft Entra no se propagan a la base de datos en SQL Database, SQL Managed Instance o Azure Synapse. Los roles de Microsoft Entra administran los recursos de Azure y no se aplican a los permisos de base de datos. Por ejemplo, el rol Colaborador de SQL Server no concede acceso para conectarse a la base de datos en SQL Database, SQL Managed Instance o Azure Synapse. El permiso de acceso tiene que concederse directamente en la base de datos mediante instrucciones de Transact-SQL.

  • No puede crear directamente un usuario de base de datos para una administración de identidades en un inquilino de Microsoft Entra diferente al asociado a la suscripción de Azure. Sin embargo, los usuarios de otros directorios se pueden importar al directorio asociado como usuarios externos. Se pueden usar para crear usuarios de base de datos independientes que puedan acceder a SQL Database. Los usuarios externos también pueden obtener acceso a través de la pertenencia a grupos de Microsoft Entra que contienen usuarios de bases de datos.

  • No se admiten caracteres especiales, como los dos puntos (:) o la «y» comercial (&), en los nombres de usuario de las instrucciones CREATE LOGIN y CREATE USER de T-SQL.

Importante

No se admite que los usuarios y las entidades de servicio de Microsoft Entra (aplicaciones de Microsoft Entra) que forman parte de más de 2048 grupos de seguridad de Microsoft Entra inicien sesión en la base de datos en SQL Database, SQL Managed Instance o Azure Synapse.

Para crear un usuario de base de datos independiente basada en Microsoft Entra ID (que no sea el administrador del servidor que es el propietario de la base de datos), conéctate a la base de datos con una identidad de Microsoft Entra, como un usuario con al menos el permiso ALTER ANY USER. En el siguiente ejemplo de T-SQL, Microsoft_Entra_principal_name puede ser el nombre principal de un usuario de Microsoft Entra o el nombre para mostrar de un grupo de Microsoft Entra.

CREATE USER [<Microsoft_Entra_principal_name>] FROM EXTERNAL PROVIDER;

Ejemplos: para crear un usuario de base de datos independiente que represente un usuario de dominio administrado o federado de Microsoft Entra:

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;

Para crear un usuario de base de datos independiente que represente un grupo de Microsoft Entra, proporcione el nombre para mostrar del grupo:

CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;

Para crear un usuario de base de datos independiente que represente una aplicación que se conecta mediante un token de Microsoft Entra:

CREATE USER [appName] FROM EXTERNAL PROVIDER;

El comando CREATE USER ... FROM EXTERNAL PROVIDER requiere acceso de SQL a Microsoft Entra ID ("proveedor externo") en nombre del usuario que ha iniciado sesión. A veces, surgen circunstancias que hacen que Microsoft Entra ID devuelva una excepción a SQL.

  • Es posible que encuentres el error 33134 de SQL, que contiene el mensaje de error específico del identificador de Microsoft Entra ID. El error suele indicar que se deniega el acceso, que el usuario debe inscribirse en MFA para acceder al recurso, o que el acceso entre las aplicaciones propias debe controlarse con autorización previa. En los dos primeros casos, el problema se debe normalmente a las directivas de acceso condicional que se establecen en el inquilino de Microsoft Entra del usuario: impiden que el usuario acceda al proveedor externo. Al actualizar las directivas de acceso condicional para permitir el acceso a la aplicación "00000003-0000-0000-c000-000000000000" (el identificador de aplicación de Microsoft Graph API) se debería resolver el problema. Si el error indica que el acceso entre las aplicaciones propias debe controlarse con autorización previa, el problema se debe a que el usuario ha iniciado sesión como entidad de servicio. El comando debe ejecutarse correctamente si lo ejecuta un usuario.
  • Si recibe la notificación Tiempo de espera de conexión agotado, es posible que deba establecer el parámetro TransparentNetworkIPResolution de la cadena de conexión en False. Para más información, consulte Connection timeout issue with .NET Framework 4.6.1 – TransparentNetworkIPResolution (Problema de tiempo de espera de conexión agotado con .NET Framework 4.6.1: TransparentNetworkIPResolution).

Importante

Si se quita el administrador de Microsoft Entra del servidor, se impide que cualquier usuario de autenticación de Microsoft Entra pueda conectarse al servidor. Si es necesario, un administrador de SQL Database puede excluir manualmente usuarios de Microsoft Entra no utilizados.

Cuando se crea un usuario de base de datos, dicho usuario recibe el permiso CONNECT y puede conectarse a esa base de datos como un miembro con el rol PUBLIC. En un principio, los únicos permisos disponibles para el usuario son los permisos que se conceden al rol PUBLIC o a cualquiera de los grupos de Microsoft Entra de los que sea miembro. La concesión de permisos a los usuarios de base de datos independientes basados en Microsoft Entra funciona del mismo modo que la concesión de permisos a cualquier otro tipo de usuario. Se recomienda conceder permisos a los roles de base de datos y agregar usuarios a esos roles en lugar de conceder permisos directamente a usuarios individuales. Para obtener más información, consulte Conceptos básicos de los permisos de los motores de las bases de datos. Para obtener más información sobre los roles especiales de SQL Database, consulte Administración de bases de datos e inicios de sesión en Azure SQL Database. Una cuenta de usuario de dominio federado que se importa en un dominio administrado como un usuario externo debe usar la identidad del dominio administrado.

Los usuarios de Microsoft Entra se marcan en los metadatos de la base de datos con el tipo E (EXTERNAL_USER) y en los grupos con el tipo X (EXTERNAL_GROUPS). Para obtener más información, consulte sys.database_principals (Transact-SQL).

Conexión a la base de datos mediante SSMS o SSDT

Para confirmar que el administrador de Microsoft Entra está correctamente configurado, conéctese a la base de datos master con la cuenta de administrador de Microsoft Entra. Para crear un usuario de base de datos independiente basado en Microsoft Entra, conéctate a la base de datos con una identidad de Microsoft Entra que tenga acceso a la base de datos y al menos el permiso ALTER ANY USER.

Use una identidad de Microsoft Entra para conectarse mediante SSMS o SSDT

En los procedimientos siguientes se muestra cómo puede conectarse a una instancia de SQL Database con una identidad de Microsoft Entra mediante SQL Server Management Studio (SSMS) o SQL Server Database Tools (SSDT).

Microsoft Entra ID: integrado

Usa este método si has iniciado sesión en Windows con tus credenciales de Microsoft Entra desde un dominio federado, o bien desde un dominio administrado que esté configurado para el inicio de sesión único de conexión directa con autenticación de paso a través y hash de contraseña. Para obtener más información, consulte Inicio de sesión único de conexión directa de Microsoft Entra.

  1. Inicie SSMS o SSDT y, en el cuadro de diálogo Conectar con el servidor (o Conectarse al motor de base de datos), en el cuadro Autenticación, seleccione Azure Active Directory: integrado. No es necesario escribir una contraseña porque se presentan las credenciales existentes para la conexión.

    Screenshot from SSMS showing Microsoft Entra Integrated authentication.

  2. Seleccione el botón Opciones y, en la página Propiedades de conexión, en el cuadro Conectar con base de datos, escriba el nombre de la base de datos de usuarios a la que quiere conectarse.

    Screenshot from SSMS of the Options menu.

Microsoft Entra ID: contraseña

Use este método al conectarse con un nombre principal de Microsoft Entra mediante el dominio administrado de Microsoft Entra. También puede utilizarlo para la cuenta federada sin acceso al dominio, por ejemplo, cuando se trabaja de forma remota.

Use este método para autenticarse en la base de datos de SQL Database o SQL Managed Instance con usuarios de identidad solo en la nube de Microsoft Entra, o aquellos que usan identidades híbridas de Microsoft Entra. Este método admite a los usuarios que quieren usar sus credenciales de Windows, pero su máquina local no está unida al dominio (por ejemplo, mediante un acceso remoto). En este caso, un usuario de Windows puede indicar su cuenta de dominio y contraseña, y autenticarse en la base de datos de SQL Database, SQL Managed Instance o Azure Synapse.

  1. Inicie SSMS o SSDT y, en el cuadro de diálogo Conectar con el servidor (o Conectarse al motor de base de datos), en el cuadro Autenticación, seleccione Azure Active Directory: contraseña.

  2. En el cuadro Nombre de usuario, escriba el nombre de usuario de Microsoft Entra con el formato username\@domain.com. Los nombres de usuario deben ser una cuenta de Microsoft Entra ID o una cuenta de un dominio administrado o federado con Microsoft Entra ID.

  3. En el cuadro Contraseña, escriba la contraseña de usuario de la cuenta de Microsoft Entra o de la cuenta de dominio administrado o federado.

    Screenshot from SSMS using Microsoft Entra Password authentication.

  4. Seleccione el botón Opciones y, en la página Propiedades de conexión, en el cuadro Conectar con base de datos, escriba el nombre de la base de datos de usuarios a la que quiere conectarse. (Consulte el gráfico que aparece en la opción anterior).

Microsoft Entra ID: universal con MFA

Usa este método para la autenticación interactiva con autenticación multifactor (MFA), con la contraseña solicitada de forma interactiva. Este método se puede usar para autenticarse en la base de datos de SQL Database, SQL Managed Instance y Azure Synapse para usuarios de identidad solo en la nube de Microsoft Entra, o aquellos que usan identidades híbridas de Microsoft Entra.

Para obtener más información, consulte Uso de la autenticación multifactor de Microsoft Entra con SQL Database y Azure Synapse (compatibilidad de SSMS con MFA).

Microsoft Entra ID: entidad de servicio

Use este método para autenticarse en la base de datos en SQL Database o SQL Managed Instance con entidades de servicio de Microsoft Entra (aplicaciones de Microsoft Entra). Para obtener más información, consulte Entidad de servicio de Microsoft Entra con Azure SQL.

Microsoft Entra ID: identidad administrada

Use este método para autenticarse en la base de datos en SQL Database o SQL Managed Instance con identidades administradas de Microsoft Entra. Para obtener más información, vea Identidades administradas en Microsoft Entra para Azure SQL.

Microsoft Entra ID: valor predeterminado

La opción de autenticación predeterminada con Microsoft Entra ID habilita la autenticación que se realiza a través de mecanismos sin contraseña y no interactivos, incluidas las identidades administradas.

Uso de la identidad de Microsoft Entra para conectarse mediante el editor de consultas de Azure Portal para Azure SQL Database

Para obtener más información sobre el editor de consultas de Azure Portal para Azure SQL Database, consulte Inicio rápido: Uso del editor de consultas de Azure Portal para consultar Azure SQL Database.

  1. En Azure Portal, vaya a la base de datos SQL. Por ejemplo, visite el panel de Azure SQL.

  2. En la página Información general de la base de datos SQL de Azure Portal, seleccione Editor de consultas en el menú de la izquierda.

  3. En la pantalla de inicio de sesión en Bienvenido al editor de consultas de SQL Database, seleccione Continuar como <identificador de usuario o grupo>.

    Screenshot showing sign-in to the Azure portal Query editor with Microsoft Entra authentication.

Use una identidad de Microsoft Entra para conectarse desde una aplicación cliente

En los procedimientos siguientes se muestra cómo puede conectarse a una instancia de SQL Database con una identidad de Microsoft Entra desde una aplicación cliente. Esta no es una lista completa de métodos de autenticación cuando se usa una identidad de Microsoft Entra. Para obtener más información, consulte Conexión a Azure SQL con la autenticación de Microsoft Entra y SqlClient.

Autenticación integrada de Microsoft Entra

Para usar la autenticación integrada de Windows, la instancia de Active Directory del dominio debe estar federada con Microsoft Entra ID, o debe ser un dominio administrado que esté configurado para el inicio de sesión único de conexión directa para la autenticación de paso a través o de hash de contraseña. Para obtener más información, consulte Inicio de sesión único de conexión directa de Microsoft Entra.

La aplicación cliente (o un servicio) que se conecte a la base de datos debe ejecutarse en un equipo unido a un dominio con las credenciales de dominio de un usuario.

Para conectarse a una base de datos mediante autenticación integrada y una identidad de Microsoft Entra, la palabra clave Autenticación de la cadena de conexión de la base de datos debe establecerse como Active Directory Integrated. Reemplace <database_name> por el nombre de su base de datos. En el siguiente ejemplo de código de C# se usa ADO.NET.

string ConnectionString = @"Data Source=<database_name>.database.windows.net; Authentication=Active Directory Integrated; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

No se admite la palabra clave Integrated Security=True de la cadena de conexión para conectarse a Azure SQL Database. Al crear una conexión ODBC tiene que quitar espacios y establecer la autenticación en ActiveDirectoryIntegrated.

Autenticación de contraseña de Microsoft Entra

Para conectarse a una base de datos mediante cuentas de usuario de identidad solo en la nube de Microsoft Entra o las que usan identidades híbridas de Microsoft Entra, la palabra clave Autenticación debe establecerse en Active Directory Password. La cadena de conexión debe contener las palabras clave y los valores User ID/UID y Password/PWD. Reemplace <database_name>, <email_address> y <password> por los valores adecuados. En el siguiente ejemplo de código de C# se usa ADO.NET.

string ConnectionString =
@"Data Source=<database_name>.database.windows.net; Authentication=Active Directory Password; Initial Catalog=testdb; UID=<email_address>; PWD=<password>";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

Puede encontrar más información sobre los métodos de autenticación de Microsoft Entra con los ejemplos de código de demostración que se encuentran disponibles en la demostración de la autenticación de Microsoft Entra de GitHub.

Token de acceso de Microsoft Entra ID

Este método de autenticación permite a los servicios de nivel intermedio obtener tokens de tipo JSON Web Token (JWT) para conectarse a la base de datos de SQL Database, SQL Managed Instance o Azure Synapse mediante la obtención de un token de Microsoft Entra ID. Este método habilita varios escenarios de aplicación, incluidas las identidades de servicio, las entidades de servicio y las aplicaciones que usan la autenticación basada en certificados. Para usar la autenticación de token de Microsoft Entra tiene que realizar cuatro pasos básicos:

  1. Registrar la aplicación con Microsoft Entra ID y obtener el id. de cliente para el código.
  2. Crear un usuario de base de datos que represente a la aplicación. (Completado anteriormente en la sección Crear usuarios independientes asignados a identidades de Microsoft Entra).
  3. Crear un certificado en el equipo cliente que va ejecuta la aplicación.
  4. Agregar el certificado como una clave para la aplicación.

Cadena de conexión de ejemplo. Reemplace <database_name> por el nombre de su base de datos:

string ConnectionString = @"Data Source=<database_name>.database.windows.net; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.AccessToken = "Your JWT token";
conn.Open();

Para más información, consulte el blog de seguridad de SQL Server. Para obtener información acerca de cómo agregar un certificado, consulte Introducción a la autenticación basada en certificados de Microsoft Entra ID.

sqlcmd

Las instrucciones siguientes se conectan con la versión 13.1 de sqlcmd. Descargar Utilidades de la línea de comandos 14.0 de Microsoft para SQL Server.

Nota:

sqlcmd con el comando -G no funciona con identidades del sistema y requiere un inicio de sesión de entidad de seguridad de usuario.

sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -U bob@contoso.com -P MyAADPassword -G -l 30

Solución de problemas de autenticación de Microsoft Entra

Para obtener instrucciones sobre cómo solucionar problemas con la autenticación de Microsoft Entra, consulte Blog: Solución de problemas relacionados con la autenticación de Azure AD con Azure SQL DB y DW.