Configuración y administración de la autenticación de Azure AD con Azure SQL

Se aplica a: Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics

En este artículo se muestra cómo crear y rellenar una instancia de Azure Active Directory (Azure AD) y, a continuación, usarla con Azure SQL Database, Azure SQL Managed Instance y Azure Synapse Analytics. Para obtener información general, consulte Autenticación con Azure Active Directory.

Métodos de autenticación de Azure AD

La autenticación de Azure AD admite los siguientes métodos de autenticación:

  • Identidades solo en la nube de Azure AD
  • Identidades híbridas de Azure AD 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 Azure AD
      • Autenticación de paso a través de Azure AD
    • Autenticación federada

Para obtener más información sobre los métodos de autenticación de Azure AD y cuál debe elegir, vea Seleccionar el método de autenticación adecuado para su solución de identidad híbrida de Azure Active Directory.

Para obtener más información sobre las identidades híbridas de Azure AD, la configuración y la sincronización, consulte los siguientes artículos:

Creación y relleno de una instancia de Azure AD

Cree una instancia de Azure AD y rellénela con usuarios y grupos. Azure AD puede ser el dominio administrado de Azure AD inicial. Azure AD también puede ser una instancia local de Active Directory Domain Services que se federa con Azure AD.

Para más información, consulte:

Asociación o adición de una suscripción de Azure a Azure Active Directory

  1. Asocie la suscripción de Azure a Azure Active Directory 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 detalles, consulte Asociación o incorporación de una suscripción de Azure al inquilino de Azure Active Directory.

  2. Use 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 Azure AD. 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 relación 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 puede 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, vea Asociación o adición de una suscripción de Azure a Azure Active Directory.

Administrador de Azure AD con un servidor en SQL Database

Cada servidor 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 cuenta de Azure AD. 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.

Cuando se usa Azure Active Directory con replicación geográfica, el administrador de Azure Active Directory debe configurarse para los servidores principal y secundarios. Si un servidor no tiene ningún administrador de Azure Active Directory, los usuarios y los inicios de sesión de Azure Active Directory reciben un error "Cannot connect con el servidor".

Nota:

Los usuarios que no se basen en una cuenta de Azure AD (incluida la cuenta de administrador del servidor) no pueden crear usuarios basados en Azure AD porque no tienen ningún permiso para validar a los usuarios de la base de datos propuesta con Azure AD.

Aprovisionamiento de un administrador de Azure AD (Instancia administrada de SQL)

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 Azure AD.

Puede asignar el rol Lectores de directorio a un grupo en Azure AD. 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 Azure AD en Azure SQL Managed Instance. Para más información sobre esta característica, consulte Rol Lectores de directorio en Azure Active Directory de Azure SQL.

La Instancia administrada de SQL necesita permisos para leer en Azure AD a fin de realizar correctamente 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, debe conceder el permiso a la Instancia administrada de SQL para leer en Azure AD. Para ello, puede usar Azure Portal o PowerShell.

Azure portal

Para conceder a la Instancia administrada de SQL permiso de lectura de Azure AD mediante Azure Portal, inicie sesión como administrador global en Azure AD y siga estos pasos:

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

    Captura de pantalla del portal de Azure que muestra dónde cambiar el directorio

  2. Elija el Active Directory correcto como el valor predeterminado de Azure AD.

    En este paso se vincula la suscripción asociada a Active Directory con la Instancia administrada de SQL, de modo que se asegura que se usa la misma suscripción tanto para la instancia de Azure AD como para la Instancia administrada de SQL.

  3. Vaya a la Instancia administrada de SQL que quiera usar para la integración de Azure AD.

    Captura de pantalla de Azure Portal que muestra la página de administración de Active Directory abierta para la Instancia administrada de SQL seleccionada.

  4. Seleccione el banner encima de la página de administrador de Active Directory y conceda permiso al usuario actual.

    Captura de pantalla del cuadro de diálogo para conceder permisos a una instancia administrada de SQL para acceder a Active Directory. El botón Conceder permisos está seleccionado.

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

    Captura de pantalla de una notificación que confirma que los permisos de lectura de Active Directory se han actualizado correctamente para la Instancia administrada.

  6. Ahora puede elegir el administrador de Azure AD para su Instancia administrada de SQL. Para ello, en la página Administrador de Active Directory, seleccione el comando Establecer administrador.

    Captura de pantalla que muestra el comando Set admin (Establecer administrador) en la página de administración de Active Directory abierta para la Instancia administrada de SQL seleccionada.

  7. En la página de administrador de Azure AD, busque un usuario, seleccione el usuario o grupo que se convertirá en administrador y, después, elija Seleccionar.

    En la hoja Administrador de Active Directory se muestran todos los miembros y grupos de Active Directory. No se pueden seleccionar los usuarios o grupos que aparecen atenuados porque no se admiten como administradores de Azure AD. Consulte la lista de administradores admitidos en la sección Características y limitaciones de Azure AD. 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.

    Incorporación del administrador de Azure Active Directory

  8. En la parte superior de la página Administrador de Active Directory, seleccione Guardar.

    Captura de pantalla de la página de administración de Active Directory con el botón Save (Guardar) en la fila superior junto a los botones Set admin (Establecer administrador) y Remove admin (Quitar administrador).

    El proceso de cambio del el administrador puede tardar varios minutos. El nuevo administrador aparecerá después en el cuadro Administrador de Active Directory.

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

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

Sugerencia

Si más adelante desea quitar un administrador, en la parte superior de la página Administrador de Active Directory, seleccione Quitar administrador y después Guardar.

PowerShell

Para conceder a la Instancia administrada de SQL el permiso de lectura de Azure AD mediante el uso de PowerShell, ejecute este script:

# Gives Azure Active Directory read permission to a Service Principal representing the SQL Managed Instance.
# Can be executed only by a "Global Administrator" or "Privileged Role Administrator" type of user.

$aadTenant = "<YourTenantId>" # Enter your tenant ID
$managedInstanceName = "MyManagedInstance"

# Get Azure AD role "Directory Users" and create if it doesn't exist
$roleName = "Directory Readers"
$role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -eq $roleName}
if ($role -eq $null) {
    # Instantiate an instance of the role template
    $roleTemplate = Get-AzureADDirectoryRoleTemplate | Where-Object {$_.displayName -eq $roleName}
    Enable-AzureADDirectoryRole -RoleTemplateId $roleTemplate.ObjectId
    $role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -eq $roleName}
}

# Get service principal for your SQL Managed Instance
$roleMember = Get-AzureADServicePrincipal -SearchString $managedInstanceName
$roleMember.Count
if ($roleMember -eq $null) {
    Write-Output "Error: No Service Principals with name '$    ($managedInstanceName)', make sure that managedInstanceName parameter was     entered correctly."
    exit
}
if (-not ($roleMember.Count -eq 1)) {
    Write-Output "Error: More than one service principal with name pattern '$    ($managedInstanceName)'"
    Write-Output "Dumping selected service principals...."
    $roleMember
    exit
}

# Check if service principal is already member of readers role
$allDirReaders = Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId
$selDirReader = $allDirReaders | where{$_.ObjectId -match     $roleMember.ObjectId}

if ($selDirReader -eq $null) {
    # Add principal to readers role
    Write-Output "Adding service principal '$($managedInstanceName)' to     'Directory Readers' role'..."
    Add-AzureADDirectoryRoleMember -ObjectId $role.ObjectId -RefObjectId     $roleMember.ObjectId
    Write-Output "'$($managedInstanceName)' service principal added to     'Directory Readers' role'..."

    #Write-Output "Dumping service principal '$($managedInstanceName)':"
    #$allDirReaders = Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId
    #$allDirReaders | where{$_.ObjectId -match $roleMember.ObjectId}
}
else {
    Write-Output "Service principal '$($managedInstanceName)' is already     member of 'Directory Readers' role'."
}

PowerShell para la Instancia administrada de SQL

Para ejecutar los cmdlets de PowerShell, necesitará tener Azure PowerShell instalado y en marcha. Para obtener información detallada, vea Instalación y configuración de Azure PowerShell.

Importante

El módulo de Azure Resource Manager (RM) de PowerShell todavía es compatible con la Instancia administrada de Azure SQL, pero todo el desarrollo futuro se realizará para el módulo Az.Sql. El módulo de AzureRM continuará recibiendo 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 Azure AD, debe ejecutar los siguientes comandos de Azure PowerShell:

  • Connect-AzAccount
  • Select-AzSubscription

Los cmdlets que se usan para aprovisionar y administrar el administrador de Azure AD para la Instancia administrada de SQL se enumeran en la tabla siguiente:

Nombre del cmdlet Descripción
Set-AzSqlInstanceActiveDirectoryAdministrator Aprovisiona un administrador de Azure AD para la Instancia administrada de SQL de la suscripción actual. (Debe ser de la suscripción actual).
Remove-AzSqlInstanceActiveDirectoryAdministrator Quita un administrador de Azure AD para la Instancia administrada de SQL de la suscripción actual.
Get-AzSqlInstanceActiveDirectoryAdministrator Devuelve información sobre un administrador de Azure AD para la Instancia administrada de SQL de la suscripción actual.

El siguiente comando obtiene información sobre un administrador de Azure AD para una Instancia administrada de SQL, denominada ManagedInstance01, que está asociada a un grupo de recursos denominado ResourceGroup01.

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

El siguiente comando aprovisiona un grupo de administradores de Azure AD denominado DBAs para la Instancia administrada de SQL 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 Azure AD para la Instancia administrada de SQL, denominada ManagedInstanceName01, que está asociada a un grupo de recursos denominado ResourceGroup01.

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

Aprovisionamiento del administrador de Azure AD (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 Azure Active Directory 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 conexión para desplegar una lista de posibles instancias de Active Directory. Elija el Active Directory correcto como el valor predeterminado de Azure AD. En este paso se vincula la instancia de Active Directory asociada a la suscripción con el servidor, de modo que se asegura de que la misma suscripción se use tanto para Azure AD como para el servidor.

  2. Busque y seleccione SQL Server.

    Buscar y seleccionar servidores SQL

    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 a la barra de navegación izquierda.

  3. En la página SQL Server, seleccione Administrador de Active Directory.

  4. En la página Administrador de Active Directory, seleccione Establecer administrador.

    Conjunto de servidores SQL en Administrador de Active Directory

  5. En la página Agregar administrador, busque un usuario, seleccione el usuario o grupo que convertirá en administrador y después haga clic en Seleccionar. En la hoja Administrador de Active Directory se muestran todos los miembros y grupos de Active Directory. No se pueden seleccionar los usuarios o grupos que aparecen atenuados porque no se admiten como administradores de Azure AD. (Consulte la lista de administradores admitidos en la sección Características y limitaciones de Azure AD del artículo Uso de la autenticación de Azure Active Directory con SQL Database o Azure Synapse). El control de acceso basado en rol de Azure (RBAC de Azure) se aplica solo al portal y no se propaga a SQL Server.

    Seleccionar administrador de Azure Active Directory

  6. En la parte superior de la página Administrador de Active Directory, seleccione Guardar.

    guardar administrador

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

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

Nota:

Al configurar el administrador de Azure AD, 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 estuviera presente, se producirá un error en el programa de instalación del administrador de Azure AD y, por lo tanto, deberá revertir su creación e indicar que ese administrador (nombre) ya existe. Dado que dicho usuario de autenticación del servidor no forma parte de Azure AD, se producirá un error cada vez que intente conectarse al servidor mediante la autenticación de Azure AD.

Si más adelante desea quitar un administrador, en la parte superior de la página Administrador de Active Directory, seleccione Quitar administrador y después Guardar.

PowerShell para SQL Database y Azure Synapse

Para ejecutar los cmdlets de PowerShell, necesitará tener Azure PowerShell instalado y en marcha. Para obtener información detallada, vea Instalación y configuración de Azure PowerShell. Para aprovisionar un administrador de Azure AD, debe ejecutar los siguientes comandos de Azure PowerShell:

  • Connect-AzAccount
  • Select-AzSubscription

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

Nombre del cmdlet Descripción
Set-AzSqlServerActiveDirectoryAdministrator Aprovisiona un administrador de Azure Active Directory para el servidor que hospeda SQL Database o Azure Synapse. (Debe ser de la suscripción actual).
Remove-AzSqlServerActiveDirectoryAdministrator Quita un administrador de Azure Active Directory para el servidor que hospeda SQL Database o Azure Synapse.
Get-AzSqlServerActiveDirectoryAdministrator Devuelve información sobre un administrador de Azure Active Directory 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 Azure AD 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 Azure AD, como el nombre principal de usuario. Por ejemplo, DisplayName="John Smith" y DisplayName="johns@contoso.com". En los grupos de Azure AD solo se admite el nombre para mostrar de Azure AD.

Nota:

El comando Set-AzSqlServerActiveDirectoryAdministrator de Azure PowerShell no le impedirá aprovisionar administradores de Azure AD 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 de Azure AD es necesario cuando el valor DisplayName no es único. Para recuperar los valores ObjectID y DisplayName, use la sección Active Directory del Portal de Azure clásico y visualice las propiedades de un usuario o grupo.

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

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

En el ejemplo siguiente se quita un administrador de Azure AD:

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

Nota:

También puede aprovisionar un administrador de Azure Active Directory 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 quedará en desuso. Si usa el espacio de nombres System.Data.SqlClient para la autenticación de Azure Active Directory, migre las aplicaciones a Microsoft.Data.SqlClient y a la Biblioteca de autenticación de Microsoft (MSAL). Para más información sobre el uso de la autenticación de Azure AD con SqlClient, consulte Uso de la autenticación de Azure Active Directory con SqlClient.

SSMS y SSDT todavía utilizan la Biblioteca de autenticación de Azure Active Directory (ADAL). Si quiere seguir usando ADAL.DLL en las aplicaciones, puede usar los vínculos de esta sección para instalar el controlador de OLE DB, SSMS, y ODBC 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 Azure AD, debe 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 Azure AD

Dado que la Instancia administrada de SQL admite entidades de seguridad de servidor de Azure AD (inicios de sesión), no es necesario utilizar usuarios de bases de datos independientes. Las entidades de seguridad de servidor de Azure AD (inicios de sesión) le permiten crear inicios de sesión de usuarios, grupos o aplicaciones de Azure AD. Esto significa que puede autenticarse con su Instancia administrada de SQL mediante el inicio de sesión de servidor de Azure AD en lugar de un usuario de base de datos independiente. Para obtener más información, consulte Información general sobre la Instancia administrada de SQL. Para conocer la sintaxis de creación de entidades de seguridad (inicios de sesión) de un servidor de Azure AD, consulte CREATE LOGIN.

Sin embargo, el uso de la autenticación de Azure Active Directory con SQL Database y Azure Synapse requiere la utilización de usuarios de bases de datos independientes basados en una identidad de Azure AD. 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 Azure AD que esta asociada a la base de datos. La identidad de Azure AD puede ser una cuenta de usuario individual o un grupo. 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.

Nota:

Los usuarios de base de datos (a excepción de los administradores) no se pueden crear mediante Azure Portal. Los roles de Azure no se propagan a la base de datos en SQL Database, SQL Managed Instance o Azure Synapse. Los roles de Azure se utilizan para administrar 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, la Instancia administrada de SQL o Azure Synapse. El permiso de acceso tiene que concederse directamente en la base de datos mediante instrucciones de Transact-SQL.

Advertencia

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 Azure AD (aplicaciones de Azure AD) que forman parte de más de 2048 grupos de seguridad de Azure AD 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 Azure AD (que no sea el administrador del servidor que es el propietario de la base de datos), conéctese a la base de datos con una identidad de Azure AD, como un usuario con al menos el permiso ALTER ANY USER . Después, use la sintaxis de Transact-SQL siguiente:

CREATE USER [<Azure_AD_principal_name>] FROM EXTERNAL PROVIDER;

Azure_AD_principal_name puede ser el nombre principal de usuario de un usuario de Azure AD, o el nombre para mostrar de un grupo de Azure AD.

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

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 contenido que represente un grupo de dominio federado o de Azure AD, proporcione el nombre para mostrar de un grupo de seguridad:

CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;

Para crear un usuario de base de datos independiente que represente a una aplicación que se conecta mediante un token de Azure AD:

CREATE USER [appName] FROM EXTERNAL PROVIDER;

Nota:

Este comando requiere acceso de SQL a Azure AD ("proveedor externo") en nombre del usuario que ha iniciado sesión. A veces, surgen circunstancias que hacen que Azure AD devuelva una excepción a SQL. En estos casos, el usuario verá el error 33134 de SQL, que debe contener el mensaje de error específico de Azure AD. La mayor parte de las veces el error indica 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 Azure AD del usuario, ya que 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. En caso de que el error indique 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.

Sugerencia

No puede crear directamente un usuario a partir de una instancia de Azure Active Directory distinta a la que esté asociada a su suscripción de Azure. Sin embargo, se pueden agregar miembros de otras instancias de AD que sean usuarios importados en el Active Directory asociado (que se conocen como "usuarios externos") a un grupo de Active Directory del AD inquilino. Al crear un usuario de la base de datos independiente para ese grupo de AD, los usuarios del Active Directory externo pueden obtener acceso a SQL Database.

Para más información sobre la creación de usuarios de bases de datos independientes basados en identidades de Azure Active Directory, vea CREAR USUARIO (Transact-SQL).

Nota:

Si se quita el administrador de Azure Active Directory del servidor, se impide que cualquier usuario de autenticación de Azure AD pueda conectarse al servidor. Si es necesario, un administrador de SQL Database puede quitar manualmente a usuarios de Azure AD no utilizados.

Nota:

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).

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 cualquier otro permiso que se conceda a los grupos de Azure AD de los que sea miembro. Cuando se aprovisiona un usuario de base de datos de independiente basada en AD Azure, se pueden conceder permisos adicionales al usuario, del mismo modo que se conceden permisos a cualquier otro tipo de usuario. Normalmente, se conceden permisos a roles de base de datos y después se agregan usuarios a los roles. 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.

Nota:

Los usuarios de Azure AD 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 Azure AD está correctamente configurado, conéctese a la base de datos master con la cuenta de administrador de Azure AD. Para aprovisionar un usuario de base de datos independiente basada en un directorio de Azure AD (que no sea el administrador del servidor que es el propietario de la base de datos), conéctese a la base de datos con una identidad de Azure AD que tenga acceso a la base de datos.

Importante

La autenticación de Azure Active Directory es compatible con SQL Server 2016 Management Studio (SSMS) y SQL Server Data Tools en 2015. La versión de agosto de 2016 de SSMS también incluye compatibilidad con la autenticación universal de Active Directory, que permite a los administradores requerir Multi-Factor Authentication con una llamada de teléfono, un mensaje de texto, tarjetas inteligentes con PIN o una notificación de aplicación móvil.

Uso de una identidad de Azure AD para conectarse mediante SQL Server Management Studio o SQL Server Database Tools

En los procedimientos siguientes se muestra cómo puede conectarse a una instancia de SQL Database con una identidad de Azure AD mediante SQL Server Management Studio o SQL Server Database Tools.

Autenticación integrada de Active Directory

Use este método si ha iniciado sesión en Windows con sus credenciales de Azure Active Directory 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 más información, consulte Inicio de sesión único de conexión directa de Azure Active Directory.

  1. Inicie Management Studio o Data Tools 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 se necesita ni se puede especificar una contraseña para la conexión, ya que aparecen las credenciales existentes.

    Selección de autenticación integrada de Active Directory

  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. Para obtener más información, consulte el artículo Autenticación multifactor de Azure AD sobre las diferencias entre las propiedades de conexión de SSMS 17.x y 18.x.

    Selección del nombre de la base de datos

Autenticación de contraseña de Active Directory

Use este método al conectarse con un nombre de entidad de seguridad de Azure AD mediante el dominio administrado de Azure AD. 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 la Instancia administrada de SQL con usuarios de identidad solo en la nube de Azure AD, o aquellos que usan identidades híbridas de Azure AD. 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, la Instancia administrada de SQL o Azure Synapse.

  1. Inicie Management Studio o Data Tools 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 Azure Active Directory con el formato username@domain.com. Los nombres de usuario deben corresponderse con una cuenta de Azure Active Directory o una cuenta de un dominio administrado o federado con Azure Active Directory.

  3. En el cuadro Contraseña, escriba la contraseña de usuario de la cuenta de Azure Active Directory o de la cuenta de dominio administrado o federado.

    Selección de autenticación de contraseña de Active Directory

  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).

Autenticación interactiva de Active Directory

Use este método para la autenticación interactiva con o sin Multi-Factor Authentication (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, la Instancia administrada de SQL y Azure Synapse para usuarios de identidad solo en la nube de Azure AD, o aquellos que usan identidades híbridas de Azure AD.

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

Uso de una identidad de Azure AD 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 Azure AD desde una aplicación cliente.

Autenticación integrada de Active Directory

Para usar la autenticación integrada de Windows, la instancia de Active Directory del dominio debe estar federada con Azure Active Directory, 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 más información, consulte Inicio de sesión único de conexión directa de Azure Active Directory.

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 Azure AD, la palabra clave Authentication de la cadena de conexión de la base de datos debe establecerse como Active Directory Integrated. En el siguiente ejemplo de código de C# se usa ADO.NET.

string ConnectionString = @"Data Source=n9lxnyuzhv.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 tendrá que quitar espacios y establecer la autenticación en 'ActiveDirectoryIntegrated'.

Autenticación de contraseña de Active Directory

Para conectarse a una base de datos mediante cuentas de usuario de identidad solo en la nube de Azure AD o las que usan identidades híbridas de Azure AD, la palabra clave Authentication 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. En el siguiente ejemplo de código de C# se usa ADO.NET.

string ConnectionString =
@"Data Source=n9lxnyuzhv.database.windows.net; Authentication=Active Directory Password; Initial Catalog=testdb;  UID=bob@contoso.onmicrosoft.com; PWD=MyPassWord!";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

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

Token de Azure AD

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, la Instancia administrada de SQL o Azure Synapse mediante la obtención de un token de Azure AD. 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 Azure AD tiene que realizar cuatro pasos básicos:

  1. Registrar la aplicación con Azure Active Directory y obtener el identificador de cliente para el código.
  2. Crear un usuario de base de datos que represente a la aplicación. (Completado anteriormente en el paso 6).
  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:

string ConnectionString = @"Data Source=n9lxnyuzhv.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 Azure Active Directory.

sqlcmd

Las instrucciones siguientes permiten conectar con la versión 13.1 de sqlcmd, que está disponible en el Centro de descarga.

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 con la autenticación de Azure AD

Puede encontrar instrucciones para la solución de problemas con la autenticación de Azure AD en el siguiente blog: https://techcommunity.microsoft.com/t5/azure-sql-database/troubleshooting-problems-related-to-azure-ad-authentication-with/ba-p/1062991.

Pasos siguientes