Los principales son todos aquellos objetos a los cuales se les colocan permisos para acceder a los asegurables.
Ejemplos de principales son : Grupos de windows, Cuentas de dominio, usuario locales, Logins de sql, roles de servidor, roles de base de datos, role de aplicación y usuarios
Los asegurables son aquellos objetos que son utilizados por los principales. Existen tres tipos de niveles de asegurables.
Nivel de servidor
*Logins
*Endpoints
*Databases
Nivel de Base de datos
*Usuarios
*Roles
*Roles de aplicación
*Certificados
*Llaves simetricas
*Llaves asimetricas
*Ensamblados
*Catálogos de Full-test
*Eventos DDL
*Esquemas
Nivel de esquema
*Tablas
*Vistas
*Funciones
*Procedimientos
*Tipos
*Sinonimos
*Agregados
Noten que por ejemplo los Roles son principales y asegurables a la vez.
Los permisos controlan el acceso de los principales a los asegurables, estos se pueden otorgar, revocar o denegar
Siempre el permiso denegar tiene mayor preferencia que los otros permisos, con excepción cuando se deniega el permiso sobre un tabla pero se otorga en una columna
Otorgar permisos
GRANT ALL [ PRIVILEGES ] permission [ ( column [ ,...n ] ) ] ON [ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ] TO
La opción ALL otorga los siguientes permisos teniendo en cuenta ANSI-92
*Permisos de función escalar: EXECUTE y REFERENCES.
*Permisos de función con valores de tabla: DELETE, INSERT, REFERENCES, SELECT y UPDATE.
*Permisos de procedimiento almacenado: EXECUTE, SYNO
NYM, DELETE, INSERT, SELECT y UPDATE.
*Permisos de tabla: DELETE, INSERT, REFERENCES, SELECT y UPDATE.
*Permisos de vista: DELETE, INSERT, REFERENCES, SELECT y UPDATE.
La opción PRIVILEGES se coloco por compatibilidad con versiones anteriores
La opción WHIT GRANT OPTION indica que el principal también podrá otorgar el mismo permiso a otros principales
Ejemplo: Asignar al usuario julio permiso sombre la tabla empleados en la base de datos prueba
USE Prueba
GRANT SELECT ON OBJECT::DBO.EMPLEADOS TO JULIO
GO
Asignar al usuario julio permiso de lectura sobre el campo EmployeeID de la tabla empleados con WHIT GRANT OPTION
USE Prueba
GRANT SELECT (EmployeeID) ON OBJECT::DBO.EMPLEADOS TO JULIO WITH GRANT OPTION
GO
Denegar permisos
DENY ALL [ PRIVILEGES ] permission [ ( column [ ,...n ] ) ]ON [ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ] TO
La opción CASCADE indica que también se denegara el permiso a las entidades a las cuales el principal le otorgo el permiso
Ejemplo: Denegar al principal julio el permiso de insertar sobre la tabla empleados de la BD prueba
USE Prueba
DENY INSERT ON OBJECT::DBO.EMPLEADOS TO JULIO CASCADE
GO
Revocar permisos
REVOKE [ GRANT OPTION FOR ]
Ejemplo: Quitar el permiso de ejecución del procedimiento almacenado ActualizarSalario de la BD Prueba al usuario julio
USE Prueba
REVOKE EXECUTE ON OBJECT::dbo.ActualizarSalario FROM julio
GO
Los permiso que se pueden otorgar, revocar y denegar a un asegurable son:
*Control: Da al principal todos los privilegios que tiene el propietario sobre el asegurable
*Alter: Tiene todos los privilegios con excepción de tomar propiedad de un asegurable
*Take Ownership: tomar propiedad del asegurable
*Create: Permite al principal crear asegurables
*View definition: permite ver la sentencias T-SQL con las cuales fueron creadas los asegurables
*Select: Permite al principal leer datos sobre el asegurable
*Insert: Permite al principal insertar datos sobre el asegurable
*Update: Permite al principal modificar datos sobre el asegurable
*Delete: Permite al principal borrar datos sobre el asegurables
*Reference:
*Execute: Permite al principal ejecutar asegurables