En SQL Server, el concepto de securables (o elementos protegibles) es fundamental para la gestión de la seguridad. Los securables son los recursos a los que el Motor de base de datos de SQL Server autoriza el acceso. Constituyen los puntos o niveles en la jerarquía del servidor de base de datos donde se pueden aplicar permisos. Comprender esta jerarquía es esencial para diseñar un modelo de seguridad robusto y adherirse al principio de privilegio mínimo.
1. Jerarquía de securables
La arquitectura de seguridad de SQL Server organiza los securables en una estructura jerárquica. Los permisos sobre un securable en un nivel superior de la jerarquía pueden, por defecto, heredarse a los securables en niveles inferiores. Esta jerarquía se divide en tres ámbitos principales:
Ámbito de servidor: Son los securables que existen a nivel de la instancia de SQL Server. Los permisos otorgados en este nivel afectan a toda la instancia, incluyendo todas las bases de datos contenidas en ella.
Ejemplos de securables de servidor:
Servidor (la instancia de SQL Server misma): Permisos como ALTER ANY DATABASE
, CREATE LOGIN
, VIEW SERVER STATE
.
Inicios de sesión (Logins): Las credenciales que permiten a un usuario conectarse a la instancia.

Endpoints: Puntos de entrada para la comunicación de red con la instancia.
Roles de servidor: Grupos predefinidos o definidos por el usuario con permisos a nivel de servidor.
Ámbito de base de datos: Son los securables que existen dentro de una base de datos específica. Los permisos en este nivel controlan el acceso y las acciones dentro de esa base de datos.
Ejemplos de securables de base de datos:
Base de datos (la base de datos misma): Permisos como CREATE TABLE
, ALTER ANY USER
, VIEW DATABASE STATE
.
Usuarios de base de datos: Representaciones de inicios de sesión (o usuarios contenidos) dentro de una base de datos.
Roles de base de datos: Grupos predefinidos o definidos por el usuario con permisos a nivel de base de datos.
Esquemas: Contenedores lógicos para objetos de base de datos.
Tipos de datos: Tipos definidos por el usuario.
Asambleas (Assemblies): Objetos para la integración con el Common Language Runtime (CLR).
Ámbito de esquema (contenidos en el esquema): Son los securables que residen dentro de un esquema específico dentro de una base de datos. Este es el nivel más granular para la mayoría de los objetos de base de datos.

Ejemplos de securables contenidos en el esquema:
Tablas: Permisos como SELECT
, INSERT
, UPDATE
, DELETE
, ALTER
.
Vistas: Permisos de lectura de datos a través de una vista.
Procedimientos almacenados (Stored Procedures): Permisos para ejecutar un procedimiento.
Funciones: Permisos para ejecutar una función.
Índices: Permisos para crear, modificar o eliminar índices.
Sinónimos: Alias para objetos de base de datos.
2. Permisos sobre los securables
El control de acceso a los securables se realiza mediante la concesión, denegación o revocación de permisos a las entidades de seguridad (principales).

GRANT
: Concede un permiso a una entidad de seguridad.DENY
: Deniega un permiso a una entidad de seguridad. Las denegaciones anulan las concesiones, incluso si el permiso se hereda de un rol.REVOKE
: Elimina un permiso previamente concedido o denegado.
La sintaxis general para la concesión de permisos es:
GRANT <permiso> ON <tipo_securable>::<nombre_securable> TO <principal>;
Ejemplos:
Conceder permiso de lectura a una tabla específica:
GRANT SELECT ON OBJECT::MiEsquema.MiTabla TO MiUsuario;
Conceder permiso para crear tablas en una base de datos
GRANT CREATE TABLE ON DATABASE::MiBaseDeDatos TO MiUsuario;
Conceder permiso para ver el estado del servidor:
GRANT VIEW SERVER STATE TO MiLogin;
¿Qué son los securables en SQL Server y para qué sirven?
Qué diferencias existen entre asegurables a nivel de esquema y nivel de objeto dentro de una base de datos?
¿Qué tipo de instrucción se encuentra el GRANT y REVOKE?
¿Además de los ámbitos de servidor, base de datos y esquema, existen otros ámbitos de securables en SQL Server?
En SQL Server, ¿qué securable se usa para controlar todo el servidor?
¿Qué permisos específicos sobre securables en SQL Server debo asignar a un usuario para que pueda consultar vistas y procedimientos almacenados sin poder modificar su definición?
¿qué es el ámbito de servidor en SQL Server Express y qué tipo de securables incluye?
¿qué es el ámbito de servidor en SQL Server Express y qué tipo de securables incluye?