Autorización del acceso de base de datos a SQL Database, Instancia administrada de SQL y Azure Synapse Analytics
Se aplica a: Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics
En este artículo, aprenderá lo siguiente:
- Opciones para configurar Azure SQL Database, Azure SQL Managed Instance y Azure Synapse Analytics a fin de permitir a los usuarios realizar tareas administrativas y acceder a los datos almacenados en esas bases de datos.
- Configuración de acceso y autorización después de crear inicialmente un servidor.
- Instrucciones para agregar inicios de sesión y cuentas de usuario a la base de datos
master
y, tras ello, conceder permisos administrativos a esas cuentas. - Cómo agregar cuentas de usuario a las bases de datos de usuario, estén asociadas a inicios de sesión o sean cuentas de usuario independientes.
- Configurar cuentas de usuario con permisos en bases de datos de usuario usando roles de base de datos y permisos explícitos.
Importante
A las bases de datos de Azure SQL Database, Azure SQL Managed Instance y Azure Synapse se les conocen colectivamente en el resto de este artículo como "bases de datos", y el servidor hace referencia al servidor lógico que administra las bases de datos de Azure SQL Database y Azure Synapse.
Nota:
Microsoft Entra ID era conocido anteriormente como Azure Active Directory (Azure AD).
Autenticación y autorización
Por autenticación se entiende el proceso según el cual se demuestra que el usuario es quien dice ser. Un usuario se conecta a una base de datos a través de una cuenta de usuario. Cuando un usuario intenta conectarse a una base de datos, proporciona una cuenta de usuario y la información de autenticación. El usuario se autentica con uno de los dos métodos de autenticación siguientes:
-
Con este método de autenticación, el usuario envía un nombre de cuenta de usuario y una contraseña asociada para establecer una conexión. Esta contraseña se almacena en la base de datos
master
de cuentas de usuario vinculadas a un inicio de sesión, o bien en la base de datos que contiene las cuentas de usuario no vinculadas a un inicio de sesión.Nota
Azure SQL Database solo aplica la complejidad de la contraseña para la directiva de contraseñas. Para la directiva de contraseñas en Azure SQL Managed Instance, consulte Preguntas frecuentes acerca de Azure SQL Managed Instance.
Autenticación de Microsoft Entra
Con este método de autenticación, el usuario envía un nombre de cuenta de usuario y solicita que el servicio use la información de credenciales que hay almacenada en Microsoft Entra ID (anteriormente Azure Active Directory).
Inicios de sesión y usuarios: una cuenta de usuario en una base de datos puede estar asociada a un inicio de sesión almacenado en la base de datos master
, o bien puede ser un nombre de usuario almacenado en una base de datos individual.
- Un inicio de sesión es una cuenta individual que se encuentra en la base de datos
master
y a la que se puede vincular a una cuenta de usuario en una o varias bases de datos. Con un inicio de sesión, la información de credenciales de la cuenta de usuario se almacena en el propio inicio de sesión. - Una cuenta de usuario es una cuenta individual en una base de datos que podría estar vinculada a un inicio de sesión, si bien esto no es obligatorio. En el caso de una cuenta de usuario que no está vinculada a un inicio de sesión, la información de las credenciales se almacena con la cuenta de usuario.
La autorización para acceder a los datos y realizar diversas acciones se administran con roles de base de datos y permisos explícitos. El término autorización hace referencia a los permisos asignados a un usuario, y determina qué puede hacer ese usuario. La autorización se controla por medio de las pertenencias a roles y los permisos de nivel de objeto de la base de datos de cada cuenta de usuario. Como procedimiento recomendado, debe conceder a los usuarios los privilegios mínimos necesarios.
Inicios de sesión y cuentas de usuario existentes después de crear una base de datos
Al implementar por primera vez Azure SQL, puede especificar un nombre de inicio de sesión y una contraseña para un tipo especial de inicio de sesión administrativo, el administrador del servidor. La siguiente configuración de inicios de sesión y usuarios en las bases de datos maestras y de usuario se produce durante la implementación:
- Se crea un inicio de sesión de SQL con privilegios administrativos usando el nombre de inicio de sesión especificado. Un inicio de sesión es una cuenta individual para iniciar sesión en SQL Database, SQL Managed Instance y Azure Synapse.
- A este inicio de sesión se le conceden permisos administrativos completos en todas las bases de datos, como una entidad de seguridad de nivel de servidor. El inicio de sesión tiene todos los permisos disponibles y no puede ser limitado. En una instancia administrada de SQL, este inicio de sesión se agrega al rol fijo de servidor sysadmin (este rol no existe en Azure SQL Database).
- Cuando esta cuenta inicia sesión en una base de datos, se compara con la cuenta de usuario especial
dbo
(cuenta de usuario), que existe en cada base de datos de usuario. El usuario dbo posee todos los permisos de base de datos en la base de datos y es miembro del rol fijo de base de datosdb_owner
. Más adelante en este artículo hablaremos de otros roles fijos de base de datos.
Para identificar la cuenta de administrador del servidor, abra Azure Portal y navegue hasta la pestaña Propiedades de su servidor lógico o instancia administrada:
Importante
El nombre de la cuenta de administrador del servidor no se puede cambiar después de crearla. Para restablecer la contraseña del administrador del servidor, ve a Azure Portal, selecciona Servidores SQL, selecciona el servidor en la lista y luego selecciona Restablecer contraseña. Para restablecer la contraseña de la instancia administrada de SQL, ve a Azure Portal, selecciona la instancia y, después, selecciona Restablecer contraseña. También puede usar PowerShell o la CLI de Azure.
Creación de inicios de sesión y usuarios adicionales con permisos administrativos
En este momento, el servidor o la instancia administrada está configurada para el acceso a través de un único inicio de sesión de SQL y una cuenta de usuario. Si quiere crear más inicios de sesión con permisos administrativos completos o parciales, dispone de las siguientes opciones (en función del modo de implementación):
Creación de una cuenta de administrador de Microsoft Entra con permisos administrativos completos
Habilite la autenticación de Microsoft Entra y agregue un administrador de Microsoft Entra. Una cuenta de Microsoft Entra se puede configurar como administrador de la implementación de Azure SQL con permisos administrativos completos. Puede tratarse de una cuenta individual o una cuenta de un grupo de seguridad. Si quiere usar cuentas de Microsoft Entra para conectarse a SQL Database, SQL Managed Instance o Azure Synapse, un administrador de Microsoft Entra debe estar configurado. Para obtener más información sobre cómo habilitar la autenticación de Microsoft Entra de todos los tipos de implementación de Azure SQL, consulte los siguientes artículos:
En Instancia administrada de SQL, cree inicios de sesión de SQL con permisos administrativos completos.
- Cree un inicio de sesión de SQL adicional en la base de datos
master
. - Agregue el inicio de sesión al rol fijo de servidor sysadmin usando la instrucción ALTER SERVER ROLE. Este inicio de sesión tendrá permisos administrativos completos.
- También puede crear un inicio de sesión de Microsoft Entra con la sintaxis CREATE LOGIN.
Nota:
Los roles
dbmanager
yloginmanager
no pertenecen a las implementaciones de Azure SQL Managed Instance.- Cree un inicio de sesión de SQL adicional en la base de datos
En SQL Database, cree inicios de sesión de SQL con permisos administrativos limitados.
- Cree un inicio de sesión de SQL adicional en la base de datos
master
. - Agregue el inicio de sesión a los roles de nivel de servidor
##MS_DatabaseManager##
,##MS_LoginManager##
y##MS_DatabaseConnector##
mediante la instrucción ALTER SERVER ROLE.
Los miembros de los roles de base de datos
master
especiales para Azure SQL Database tienen la autoridad necesaria para crear y administrar bases de datos o para crear y administrar inicios de sesión. En el caso de las bases de datos creadas por un usuario que es miembro del roldbmanager
, el miembro se asigna al rol fijo de base de datosdb_owner
, y puede iniciar sesión en la base de datos y administrarla usando la cuenta de usuariodbo
. Estos roles no tienen permisos explícitos fuera de la base de datosmaster
.Importante
No se pueden crear inicios de sesión de SQL adicionales con permisos administrativos completos en Azure SQL Database. Solo la cuenta de administrador del servidor o la cuenta de administrador de Microsoft Entra (que puede ser un grupo de Microsoft Entra) pueden agregar inicios de sesión a roles de servidor o quitárselos. Esto es específico para Azure SQL Database.
- Cree un inicio de sesión de SQL adicional en la base de datos
En los grupos de SQL dedicados de Azure Synapse, cree inicios de sesión de SQL con permisos administrativos limitados.
- Cree un inicio de sesión de SQL adicional en la base de datos
master
. - Cree una cuenta de usuario en la base de datos
master
asociada a ese nuevo inicio de sesión. - Agregue la cuenta de usuario al rol
dbmanager
,loginmanager
o a ambos en la base de datosmaster
mediante la instrucción sp_addrolemember.
- Cree un inicio de sesión de SQL adicional en la base de datos
En los grupos de SQL sin servidor de Azure Synapse, cree inicios de sesión de SQL con permisos administrativos limitados.
- Cree un inicio de sesión de SQL adicional en la base de datos
master
. - Agregue el inicio de sesión de SQL al rol fijo de servidor de sysadmin, para lo que debe usar la instrucción ALTER SERVER ROLE.
- También puede crear un inicio de sesión de Microsoft Entra con la sintaxis CREATE LOGIN.
- Cree un inicio de sesión de SQL adicional en la base de datos
Creación de cuentas para usuarios que no son administradores
Se pueden crear cuentas para los usuarios no administrativos recurriendo a uno de estos dos métodos:
Crear un inicio de sesión
Cree un inicio de sesión de SQL en la base de datos
master
. Luego, cree una cuenta de usuario en cada base de datos a la que el usuario necesite tener acceso y asocie la cuenta de usuario a ese inicio de sesión. Este método es preferible cuando el usuario debe acceder a varias bases de datos y se quieren mantener todas las contraseñas sincronizadas, pero plantea algunas dificultades cuando se usa con la replicación geográfica, ya que hay que crear el inicio de sesión tanto en el servidor principal como en los secundarios. Para más información, vea Configuración y administración de la seguridad de Azure SQL Database para la restauración geográfica o la conmutación por error.Crear una cuenta de usuario
Cree una cuenta de usuario en la base de datos a la que un usuario necesite tener acceso (esto se conoce también como usuario independiente).
- Con SQL Database, siempre se puede crear este tipo de cuentas de usuario.
- Como SQL Managed Instance admite las entidades de seguridad de Microsoft Entra, puede crear cuentas de usuario para autenticarse en SQL Managed Instance sin necesidad de que los usuarios de la base de datos deban crearse como usuarios de base de datos independientes.
Con este método, la información de autenticación del usuario se almacena en cada base de datos y se replica automáticamente en las bases de datos con replicación geográfica, pero si la misma cuenta existe en varias bases de datos y usa la autenticación de SQL, deberá sincronizar las contraseñas manualmente. Además, si un usuario tiene una cuenta en varias bases de datos con distintas contraseñas, recordarlas puede suponer un problema.
Importante
Para crear usuarios independientes asignados a identidades de Microsoft Entra, debe iniciar sesión con una cuenta de Microsoft Entra en la base de datos de Azure SQL. En SQL Managed Instance, un inicio de sesión de SQL con permisos sysadmin
también puede crear un usuario o inicio de sesión de Microsoft Entra.
Para obtener ejemplos que reflejan cómo crear inicios de sesión y usuarios, vea:
- Crear inicio de sesión para Azure SQL Database
- Crear inicio de sesión para Instancia administrada de SQL de Azure
- Crear inicio de sesión para Azure Synapse
- Crear usuario
- Creación de usuarios independientes de Microsoft Entra
Sugerencia
Para ver un tutorial de seguridad que incluye la creación de usuarios en Azure SQL Database, consulte Tutorial: Seguridad de Azure SQL Database.
Uso de roles de base de datos fijos y personalizados
Después de crear una cuenta de usuario en una base de datos, ya sea basada en un inicio de sesión o para un usuario independiente, puede autorizar a ese usuario para realizar diversas acciones y acceder a los datos de una base de datos determinada. Se pueden usar los siguientes métodos para autorizar el acceso:
Roles fijos de base de datos
Agregue la cuenta de usuario a un rol fijo de base de datos. Existen nueve roles fijos de base de datos, cada uno con un conjunto definido de permisos. Los roles fijos de base de datos más comunes son: db_owner, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter y db_denydatareader. db_owner se usa habitualmente para conceder permiso completo solo a algunos usuarios. Los restantes roles fijos de base de datos son útiles para obtener rápidamente una base de datos simple en la fase de desarrollo, pero no se recomiendan para la mayoría de las bases de datos de producción. Por ejemplo, el rol fijo de base de datos db_datareader concede acceso de lectura a todas las tablas de la base de datos, lo que es más de lo estrictamente necesario.
Para agregar un usuario a un rol fijo de base de datos:
- En los grupos de SQL sin servidor de Azure SQL Database y Azure Synapse, use la instrucción ALTER ROLE. Para obtener ejemplos, vea Ejemplos de ALTER ROLE.
- En los grupos de SQL dedicados de Azure Synapse, use la instrucción sp_addrolemember. Para obtener ejemplos, vea Ejemplos de sp_addrolemember.
Rol de base de datos personalizado
Cree un rol de base de datos personalizado usando la instrucción CREATE ROLE. Un rol personalizado permite crear sus propios roles de base de datos definidos por el usuario y otorgar minuciosamente a cada rol los permisos mínimos necesarios para la necesidad empresarial. Después, puede agregar usuarios a ese rol personalizado. Cuando un usuario es miembro de varios roles, realiza la agregación de los permisos de todos ellos.
Conceder permisos directamente
Conceda permisos directamente a la cuenta de usuario. En SQL Database, hay más de 100 permisos que pueden conceder o denegar individualmente. Muchos de estos permisos están anidados. Por ejemplo, el permiso
UPDATE
de un esquema incluye el permisoUPDATE
en cada tabla dentro de dicho esquema. Al igual que en la mayoría de los sistemas de permisos, la denegación de un permiso anula su concesión. Dada la naturaleza anidada y el número de permisos, es preciso realizar un estudio meticuloso para diseñar un sistema de permisos apropiado para proteger adecuadamente la base de datos. Empiece con la lista de permisos de Permisos (motor de base de datos) y revise el gráfico a tamaño de póster de los permisos.
Uso de grupos
En una administración eficaz del acceso, en vez de los permisos asignados a usuarios individuales, se usan los permisos asignados a grupos de seguridad de Active Directory, así como roles fijos o personalizados.
Al usar la autenticación de Microsoft Entra, incluya los usuarios de Microsoft Entra en un grupo de seguridad de Microsoft Entra. Cree un usuario de base de datos independiente para el grupo. Agregue uno o varios usuarios de base de datos como miembros a un rol de base de datos integrado o personalizado con permisos específicos adecuados para ese grupo de usuarios.
Si se usa la autenticación de SQL, cree usuarios de base de datos independientes en la base de datos. Asigne a uno o varios usuarios de base de datos un rol de base de datos personalizado con permisos específicos adecuados para ese grupo de usuarios.
Nota
También se pueden usar grupos para usuarios de bases de datos no independientes.
Debe familiarizarse con las siguientes características que pueden utilizarse para limitar o elevar los permisos:
- La suplantación y la firma de módulos se pueden usar para elevar los permisos temporalmente de forma segura.
- Seguridad del nivel de fila permite limitar las filas a las que puede acceder un usuario.
- enmascaramiento de datos puede utilizarse para limitar la exposición de información confidencial.
- procedimientos almacenados puede utilizarse para limitar las acciones que se pueden realizar en la base de datos.