Entidades de seguridad de servidor de Microsoft Entra

Se aplica a:Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (solo grupos SQL dedicados)

Ahora puede crear y usar entidades de seguridad de servidor de Microsoft Entra ID (anteriormente, Azure Active Directory), que son inicios de sesión en la base de datos master virtual de una base de datos de SQL Database. Hay varias ventajas de usar entidades de seguridad de servidor de Microsoft Entra para SQL Database:

  • Admite Roles del servidor de Azure SQL Database para la administración de permisos.
  • Admite varios usuarios de Microsoft Entra con roles especiales para SQL Database, como los roles loginmanager y dbmanager.
  • Paridad funcional entre inicios de sesión de SQL e inicios de sesión de Microsoft Entra.
  • Aumente la compatibilidad con la mejora funcional, como el uso de la autenticación específica de Microsoft Entra. La autenticación específica de Microsoft Entra permite desactivar la autenticación SQL, que incluye el administrador de SQL Server, los inicios de sesión y los usuarios de SQL.
  • Permite que las entidades de seguridad de Microsoft Entra admitan réplicas geográficas. Las entidades de seguridad de Microsoft Entra pueden conectarse a la réplica geográfica de una base de datos de usuario, con permisos de solo lectura y denegación al servidor principal.
  • Utilice de usar los inicios de sesión de las entidades de servicio de Microsoft Entra con roles especiales para automatizar completamente la creación de usuarios y bases de datos, así como el mantenimiento con las aplicaciones de Microsoft Entra.

Para más información sobre la autenticación de Microsoft Entra en Azure SQL, vea Usar la autenticación de Microsoft Entra.

Nota:

Las entidades de seguridad del servidor (inicios de sesión) de Microsoft Entra están actualmente en versión preliminar pública para Azure SQL Database y Azure Synapse Analytics. Los inicios de sesión de Microsoft Entra están disponibles con carácter general para Azure SQL Managed Instance y SQL Server 2022.

Permisos

Los siguientes permisos son necesarios para utilizar o crear inicios de sesión de Microsoft Entra en la base de datos master virtual.

  • Permiso de administrador de Microsoft Entra o suscripción en el rol del servidor loginmanager. El primer inicio de sesión de Microsoft Entra solo puede crearlo el administrador de Microsoft Entra.
  • Debe ser un miembro de Microsoft Entra ID en el mismo directorio que se use para Azure SQL Database.

De manera predeterminada, los inicios de sesión de Microsoft Entra recién creado en la base de datos master reciben el permiso VER TODAS LAS BASES DE DATOS.

Sintaxis de las entidades de seguridad de Microsoft Entra

Use la sintaxis siguiente para crear y administrar entidades de seguridad de base de datos y servidor de Microsoft Entra.

Creación de inicio de sesión

Esta sintaxis crea un inicio de sesión de nivel de servidor basado en una identidad de Microsoft Entra. Solo el administrador de Microsoft Entra puede ejecutar este comando en la base de datos master virtual.

CREATE LOGIN login_name
  { 
    FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] 
    | WITH <option_list> [,..] 
  }

<option_list> ::=
    PASSWORD = { 'password' }
    [ , SID = sid ]

El login_name especifica la entidad de seguridad de Microsoft Entra, que es un usuario, grupo o aplicación de Microsoft Entra.

Para obtener más información, consulte CREAR INICIO DE SESIÓN (Transact-SQL).

Creación de un usuario a partir del inicio de sesión

La siguiente sintaxis de T-SQL crea una entidad de seguridad de Microsoft Entra de nivel de base de datos asignada a un inicio de sesión de Microsoft Entra en la base de datos master virtual. De forma similar a la sintaxis para crear un usuario de Microsoft Entra de base datos independiente, la única diferencia es especificar FROM LOGIN [login_name] en lugar de FROM EXTERNAL PROVIDER.

Para crear un usuario de Microsoft Entra a partir del inicio de sesión de Microsoft Entra, use la sintaxis siguiente.

CREATE USER [user_name] FROM LOGIN [login_name]

Puede usar la columna SID de sys.database_principals para distinguir entre un usuario de base de datos independiente de Microsoft Entra y un usuario de Microsoft Entra creado a partir de un inicio de sesión. Para un usuario de base de datos independiente, SID es una cadena binaria de longitud 16. Para un usuario basado en inicio de sesión, SID tiene longitud 18 con un sufijo AADE.

Nota:

Anexar el sufijo AADE al SID es cómo identificamos a un usuario de Microsoft Entra como creado a partir de un inicio de sesión. Sin embargo, esto también significa que los SID del inicio de sesión y sus usuarios no coinciden entre sys.server_principals y sys.database_principals. Para correlacionar al usuario de nuevo con su inicio de sesión, primero se debe quitar el sufijio AADE.

Para comprender la diferencia conceptual entre los usuarios basados en inicio de sesión y los usuarios de bases de datos independientes, vea Usuarios de base de datos independiente.

Para obtener más información sobre toda la sintaxis de creación de usuarios, vea CREATE USER (Transact-SQL).

Deshabilitar o habilitar un inicio de sesión mediante ALTER LOGIN

La sintaxis DDL ALTER LOGIN (Transact-SQL) se usa para habilitar o deshabilitar un inicio de sesión de Microsoft Entra en Azure SQL Database.

ALTER LOGIN [login_name] DISABLE 

Cuando se deshabilita un inicio de sesión, las conexiones ya no se permiten mediante esa entidad de seguridad del servidor. También impide a todas las entidades de seguridad de base de datos (usuarios) creadas a partir de ese inicio de sesión poder conectarse a sus respectivas bases de datos.

Nota:

  • ALTER LOGIN login_name DISABLE no afectará a los usuarios de base de datos independiente, ya que no están asociados a los inicios de sesión.

  • ALTER LOGIN login_name DISABLE no se admite para grupos de Microsoft Entra.

  • Un inicio de sesión deshabilitado individual no puede pertenecer a un usuario que forme parte de un grupo de inicio de sesión creado en la base de datos master (por ejemplo, un grupo administrador de Microsoft Entra).

  • Para que los cambios DISABLE o ENABLE tengan efecto inmediato, la caché de autenticación y la caché the TokenAndPermUserStore deben borrarse mediante los comandos T-SQL.

    DBCC FLUSHAUTHCACHE
    DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS 
    

Roles para entidades de seguridad de Microsoft Entra

Los roles especiales de SQL Database pueden asignarse a los usuarios de la base de datos master virtual para las entidades de seguridad de Microsoft Entra, incluidos dbmanager y loginmanager.

Los roles de servidor de Azure SQL Database pueden asignar a inicios de sesión en la base de datos master virtual.

Para obtener un tutorial sobre cómo conceder estos roles, consulte Tutorial: Creación y uso de inicios de sesión de servidor de Microsoft Entra.

Limitaciones y comentarios

  • El administrador del servidor SQL Server no puede crear inicios de sesión de Microsoft Entra ni usuarios en ninguna base de datos.
  • Un administrador o usuario de SQL no puede ejecutar las siguientes operaciones de Microsoft Entra:
    • CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    • CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
    • EXECUTE AS USER [bob@contoso.com]
    • ALTER AUTHORIZATION ON securable::name TO [bob@contoso.com]
  • No se admite la suplantación de entidades de seguridad de servidor (inicios de sesión) de Microsoft Entra para la Azure SQL Database y Azure Synapse Analytics. No es compatible con SQL Managed Instance.
  • Los inicios de sesión de Microsoft Entra no pueden superponerse con el administrador de Microsoft Entra. El administrador de Microsoft Entra tiene prioridad sobre cualquier inicio de sesión. Si una cuenta de Microsoft Entra ya tiene acceso al servidor como administrador de Microsoft Entra, ya sea individualmente o como parte de un grupo, cualquier inicio de sesión creado para este usuario no tendrá ningún efecto. Sin embargo, la creación del inicio de sesión no se bloquea a través de T-SQL. Después de que la cuenta se autentique en el servidor, el inicio de sesión tendrá los permisos efectivos de un administrador de Microsoft Entra y no de un inicio de sesión recién creado.
  • No se admite el cambio de permisos en un objeto de inicio de sesión específico de Microsoft Entra:
    • GRANT <PERMISSION> ON LOGIN :: <Microsoft Entra account> TO <Any other login>
  • Cuando se modifican los permisos para un inicio de sesión de Microsoft Entra, de forma predeterminada, los cambios solo surten efecto la próxima vez que el inicio de sesión se conecta a Azure SQL Database. Las conexiones abiertas existentes con el inicio de sesión no se ven afectadas. Para forzar que los cambios de permisos surtan efecto inmediato, puede borrar manualmente la autenticación y TokenAndPermUserStore, como se describe anteriormente en Deshabilitar o habilitar un inicio de sesión mediante ALTER LOGIN. Este comportamiento también se aplica al realizar cambios de pertenencia a roles de servidor con ALTER SERVER ROLE.
  • En SQL Server Management Studio y Azure Data Studio, el comando de script para crear un usuario no comprueba si ya hay un inicio de sesión de Microsoft Entra en master con el mismo nombre. Siempre genera el T-SQL para un usuario de Microsoft Entra de base de datos independiente.
  • Si intentas crear un inicio de sesión o un usuario desde una entidad de servicio con un nombre para mostrar que no es único, podría producirse un error. Para obtener más información sobre cómo mitigar este error, consulta Inicios de sesión y usuarios de Microsoft Entra con nombres para mostrar que no son únicos.

Limitaciones de las entidades de seguridad de servidor de grupo de Microsoft Entra

Con los inicios de sesión de Microsoft Entra en versión preliminar pública para la Azure SQL Database y Azure Synapse Analytics, se indican las limitaciones conocidas:

  • Los roles de servidor de Azure SQL Database no se admiten para los grupos de Microsoft Entra.
  • Si el administrador de SQL es un grupo de Microsoft Entra, hay algunas limitaciones cuando los usuarios de ese grupo se conectan. Cada usuario de Microsoft Entra no forma parte de la tabla sys.server_principals individualmente. Esto tiene varias consecuencias, incluidas las llamadas a SUSER_SID que devuelven NULL.
  • Los inicios de sesión de usuario de Microsoft Entra que forman parte de los inicios de sesión de grupo de Microsoft Entra tampoco se crean implícitamente, lo que significa que no tendrán un esquema predeterminado y no podrán realizar operaciones como CREATE SCHEMA hasta que se cree un inicio de sesión para el usuario de Microsoft Entra o se asigne un esquema predeterminado al grupo.
  • No se admite el cambio de la propiedad de una base de datos a un grupo de Microsoft Entra como propietario de la base de datos.
    • ALTER AUTHORIZATION ON database::<mydb> TO [my_aad_group] se genera un mensaje de error:

      Msg 33181, Level 16, State 1, Line 4
      The new owner cannot be Azure Active Directory group.
      

Pasos siguientes