Freigeben über


Roles para poder implementar un modelo de seguridad en SQL

por Luis Ramirez

En SQL Server los roles es una forma de otorgar y remover permisos de una manera sencilla.
Lo puedes ver como una forma de crear un grupo en SQL Server al cual le das permisos sobre ciertos objetos como tablas, vistas, procedimientos etc. dependiendo la granularidad deseada. Una vez que tengas los permisos que buscas lo único que haces es agregar los usuarios a este rol y con esto tendrán los permisos otorgados al rol.
Teniendo la misma facilidad de modificar/remover permisos/usuarios del rol.
Con esto te ahorras la tarea repetitiva de ir otorgando/cambiando/removiendo permisos uno a uno.
SQL Server ofrece:

  • Fixed Server Roles. Estos son roles a nivel SERVIDOR, notando que usuarios del ROL securityadmin pueden otorgar ambos "Fixed Server Roles" y "Fixed Database Roles"
    Usuarios con otros roles solo podrán otorgar el mismo nivel de rol a otro usuario.
    Nota importante que estos Roles como su nombre lo indica en Ingles SON FIJOS, por lo tanto no se puede crear, modificar, remover los roles.
    Fixed server role   Server-level permission(Permiso en el servidor) 
    bulkadmin.
        Se le concede: ADMINISTER BULK OPERATIONS
    dbcreator.
        Se le concede: CREATE DATABASE
    diskadmin.
        Se le concede: ALTER RESOURCES
    processadmin.
        Se le concede: ALTER ANY CONNECTION, ALTER SERVER STATE
    securityadmin.
        Se le concede: ALTER ANY LOGIN
    serveradmin.
        Se le concede: ALTER ANY ENDPOINT, ALTER RESOURCES, ALTER SERVER STATE, ALTER SETTINGS, SHUTDOWN, VIEW SERVER STATE
    setupadmin.                     
        Se le concede: ALTER ANY LINKED SERVER
    sysadmin.                           
        Se le concede con la opción GRANT: CONTROL SERVER
  • Fixed Database Roles. Estos son roles definidos a nivel BASE DE DATOS, aqui miembros de los roles  db_owner y db_securityadmin pueden administrar los roles, pero solo miembros de db_owner pueden otorgar acceso a este rol.
    Estos roles también son fijos  por lo tanto no se puede crear, modificar o remover.
    Fixed database role   Database-level permission 
    db_accessadmin.            
        Concedido: ALTER ANY USER, CREATE SCHEMA
    db_accessadmin.            
        Concedido con la opción GRANT: CONNECT
    db_backupoperator      
        Concedido: BACKUP DATABASE, BACKUP LOG, CHECKPOINT
    db_datareader                
        Concedido: SELECT
    db_datawriter                  
        Concedido: DELETE, INSERT, UPDATE
    db_ddladmin.                   
        Concedido: ALTER ANY ASSEMBLY, ALTER ANY ASYMMETRIC KEY, ALTER ANY CERTIFICATE, ALTER ANY CONTRACT, ALTER ANY DATABASE DDL TRIGGER, ALTER ANY DATABASE EVENT, NOTIFICATION, ALTER ANY DATASPACE, ALTER ANY FULLTEXT CATALOG, ALTER ANY MESSAGE TYPE, ALTER ANY REMOTE SERVICE BINDING, ALTER ANY ROUTE, ALTER ANY SCHEMA, ALTER ANY SERVICE, ALTER ANY SYMMETRIC KEY, CHECKPOINT, CREATE AGGREGATE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE QUEUE, CREATE RULE, CREATE SYNONYM, CREATE TABLE, CREATE TYPE, CREATE VIEW, CREATE XML SCHEMA COLLECTION, REFERENCES
    db_denydatareader      
        Denegado: SELECT
    db_denydatawriter       
        Denegado: DELETE, INSERT, UPDATE
    db_owner                          
        Concedido con la opción GRANT: CONTROL
    db_securityadmin          
        Concedido: ALTER ANY APPLICATION ROLE, ALTER ANY ROLE, CREATE SCHEMA, VIEW DEFINITION
    dbm_monitor                   
        Concedido: VIEW el estado más reciente en el Monitor de creación de reflejo de la base de datos

Los roles no solo se limitan a estos dos tipos, también existen para SSIS, SSRS, Jobs, Aplicaciones, Usuarios etc.
Estos últimos roles mencionados serán creados a nivel base de datos, ya sea por medio de la interfaz gráfica o Transact SQL, y a menos que se especifique lo contrario el creador del ROL tendrá automáticamente el permiso de dicho rol.

 

Mas Información: