812
Las funciones de Microsoft SQL Server son una parte central de la seguridad del servidor de bases de datos. Los roles se utilizan para controlar el acceso a objetos y asignar permisos a usuarios y/o grupos de seguridad. Los roles de SQL Server son similares a los grupos de usuarios de Windows. En este artículo veremos cómo ver la lista de roles de SQL Server asignados a un usuario y cómo agregar/eliminar un rol.
SQL Server tiene varios roles de base de datos y servidor predefinidos (fijos) que se utilizan para realizar tareas comunes:
- Roles fijos a nivel de servidor – roles creados utilizados para asignar permisos en SQL Server. Por ejemplo, estos roles permiten cambiar la configuración del servidor, crear una nueva base de datos, etc.
- Roles fijos a nivel de base de datos – permitir gestionar permisos sobre bases de datos. Cuando se usa, debe otorgar permisos para crear una tabla en la base de datos o consultar datos.
Los permisos asignados a roles fijos de SQL Server no se pueden cambiar.
El administrador también puede crear servidor definido por el usuario o roles de base de datos con un conjunto personalizado de permisos.
Administrar roles de usuario con Microsoft SQL Server Management Studio
Utilice Microsoft SQL Server Management Studio (SSMS) para ver una lista de funciones fijas de SQL Server. Ejecute SSMS y conéctese al motor de base de datos.
Roles de servidor fijos están disponibles bajo Seguridad > Roles de servidor. Estos son:
- administrador de sistemas
- administrador del servidor
- administrador de seguridad
- administrador de procesos
- administrador de configuración
- administrador masivo
- administrador de disco
- creador de bases de datos
- público
Cada base de datos tiene su propio conjunto de roles fijos a nivel de base de datos. Ampliar el Base de datos > Seguridad > Roles > Roles de base de datos:
- propietario_db
- db_securityadmin
- db_accessadmin
- operador_db_backup
- db_ddladmin
- db_datawriter
- db_datareader
- db_denydatawriter
- db_denydatareader
- público
Los miembros de una función de base de datos pueden ser
- Grupos y cuentas de usuario de Windows y/o Active Directory
- Inicios de sesión de SQL Server
- Otros roles (no agregue roles de base de datos definidos por el usuario como miembros de roles fijos; esto podría usarse para escalar privilegios)
En este ejemplo, asignaremos varias funciones fijas de SQL Server a una cuenta de usuario de Active Directory.
- Primero, agregue el usuario de AD a los inicios de sesión de SQL Server. Expandir Seguridad > Iniciar sesión y seleccione Nuevo inicio de sesión;
- Seleccionar autenticación de Windows y haga clic en el Buscar botón;
- Seleccione su dominio como ubicación de búsqueda, escriba el nombre de usuario de AD y haga clic Verificar nombres;
- A continuación, vaya a Funciones del servidor y seleccione los roles de servidor global que desea otorgar al usuario.
- R La nueva cuenta de usuario de AD debería aparecer en la lista de inicios de sesión del servidor SQL.
- Si desea agregar o eliminar roles de usuario, abra las propiedades de la cuenta y realice cambios en la pestaña Roles del servidor.
Si desea otorgar una función de nivel de base de datos a un usuario de AD, primero agregue su cuenta a la lista de usuarios de base de datos, luego abra las propiedades de la función de la base de datos y agregue un usuario como miembro de la función.
Cómo agregar o enumerar roles de usuario en SQL Server con consultas Transact-SQL
Puede utilizar las consultas del lenguaje T-SQL para agregar o eliminar roles de SQL Server de los usuarios.
Abra el SSMS y haga clic Nueva consulta.
Para agregar un usuario de AD a los inicios de sesión del servidor SQL, utilice la siguiente consulta:
CREATE LOGIN login_name FROM THEITBROS\k.ziegler; GO
Pegue este código en la ventana de consulta SSMS y haga clic en Ejecutar botón.
Ahora puedes asignar una función de servidor al usuario:
ALTER SERVER ROLE serveradmin ADD MEMBER "THEITBROS\k.ziegler";
Asigne un rol a nivel de base de datos:
use DBNAME; CREATE USER "THEITBROS\k.ziegler"; ALTER ROLE db_backupoperator ADD MEMBER "THEITBROS\k.ziegler";
Para eliminar un usuario de la función del servidor, ejecute:
ALTER SERVER ROLE serveradmin DROP MEMBER "THEITBROS\k.ziegler";
O desde un rol de base de datos:
ALTER ROLE db_backupoperator DROP MEMBER "THEITBROS\k.ziegler";
Listar las funciones del servidor de las que es miembro un usuario:
SELECT r.name as Role, m.name as Principal from master.sys.server_role_members rm inner join master.sys.server_principals r on r.principal_id = rm.role_principal_id and r.type="R" inner join master.sys.server_principals m on m.principal_id = rm.member_principal_id where m.name = "THEITBROS\k.ziegler"
Consultar roles de usuario asignados en una base de datos específica:
use DBNAME; select P.Name, R.Name from sys.database_principals P left outer join sys.database_role_members RM on P.principal_id=RM.member_principal_id left outer join sys.database_principals R on R.principal_id=RM.role_principal_id where P.Name="THEITBROS\k.ziegler"