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:
- CREATE ROLE (Transact-SQL) https://msdn.microsoft.com/es-es/library/ms187936(SQL.90).aspx
- Permisos de las funciones fijas de servidor https://msdn.microsoft.com/es-es/library/ms175892(SQL.90).aspx
- Permisos de las funciones fijas de base de datos https://msdn.microsoft.com/es-es/library/ms189612(SQL.90).aspx
- Setting the Protection Level of Packages https://msdn.microsoft.com/en-us/library/ms141747.aspx
- Managing and Deploying SQL Server Integration Services https://technet.microsoft.com/en-us/library/cc966389.aspx
- Managing Permissions and Security for Reporting Services https://msdn.microsoft.com/en-us/library/ms156014(SQL.90).aspx