Unidad 3 Control de acceso

Unidad 3: Control de Acceso y Seguridad
Catedrática: Dra. Olga López Fortiz
Importancia Estratégica del Control de Acceso
El Control de Acceso en Microsoft SQL Server 2025 garantiza que solo los usuarios autenticados y autorizados puedan interactuar con los datos. Implementa el principio de Privilegio Mínimo, blindando la arquitectura relacional contra accesos no autorizados, inyecciones maliciosas y fugas de información crítica.
Confidencialidad e Integridad
Asegura que únicamente el personal con roles definidos lea o altere registros sensibles de la organización.
Auditoría y Cumplimiento
Facilita la rastreabilidad de operaciones individuales dentro de SQL Server 2025 para normativas internacionales.
Arquitectura de Seguridad de 2 Niveles en SQL Server
Para acceder a un objeto de datos (como una tabla o vista), SQL Server valida dos fronteras consecutivas:
Crea un LOGIN para validar quién eres al conectarte al servidor.
Crea un USER mapeado al Login para validar qué puedes hacer dentro de la BD.
Asigna cláusulas GRANT, DENY o asigna ROLES específicos.
3.1 Tipos de Usuario (Logins y Database Users)
En SQL Server existen dos entidades conceptuales esenciales:
| Concepto | Nivel de Alcance | Tipos de Autenticación / Tipos de Usuario |
|---|---|---|
| Login (Inicio de Sesión) | Servidor Global (Instance Level) |
• Autenticación de Windows (Windows User / Group) • Autenticación de SQL Server (Usuario + Contraseña propia) |
| Database User (Usuario de BD) | Base de Datos Específica (Database Level) |
• Mapeado a un Login de Servidor • Usuario de BD Contenida (Sin Login asociado) • Usuarios Especiales ( dbo, guest)
|
3.2 Creación de Usuarios Paso a Paso
A continuación se detallan los comandos DCL/DDL oficiales en T-SQL para registrar un inicio de sesión e integrarlo como usuario activo en una base de datos específica.
Paso 1: Crear un Login en el Servidor
-- 1. Crear un Login con Autenticación propia de SQL Server
CREATE LOGIN [usr_analista]
WITH PASSWORD = 'P@ssw0rd2025!Secure',
CHECK_EXPIRATION = ON,
CHECK_POLICY = ON;
GO
Paso 2: Crear el Usuario de Base de Datos y Mapearlo al Login
-- 2. Seleccionar la base de datos de trabajo
USE [EmpresaBD];
GO
-- 3. Crear el usuario mapeado al login del servidor
CREATE USER [usr_analista_db]
FOR LOGIN [usr_analista];
GO
3.3 Privilegios a Usuarios (GRANT, REVOKE, DENY)
SQL Server utiliza tres sentencias principales para administrar permisos granulares sobre tablas, vistas o procedimientos almacenados:
GRANT (Otorgar)
Concede permisos explícitos para realizar acciones específicas.
DENY (Denegar)
Prohíbe explícitamente un permiso. Tiene máxima prioridad sobre cualquier GRANT previo o de rol.
Sintaxis y Ejemplos de Administración de Privilegios
USE [EmpresaBD];
GO
-- Otorgar consultas (SELECT) e inserciones sobre la tabla Empleados
GRANT SELECT, INSERT ON dbo.Empleados TO [usr_analista_db];
-- Denegar explícitamente la modificación de salarios
DENY UPDATE ON dbo.Empleados(Salario) TO [usr_analista_db];
-- Revocar (remover) un permiso previamente otorgado
REVOKE INSERT ON dbo.Empleados FROM [usr_analista_db];
GO
DENY siempre sobreescribe a cualquier permiso GRANT, ya sea asignado directamente al usuario o heredado mediante un rol.
3.4 Roles en SQL Server 2025
Un Rol es un contenedor de permisos que simplifica la administración. En lugar de asignar privilegios usuario por usuario, se asignan permisos al rol y los usuarios se agregan como miembros.
1. Roles Fijos de Servidor y de Base de Datos
| Categoría | Ejemplos de Roles Predefinidos | Descripción |
|---|---|---|
| Fixed Server Roles | sysadmin, securityadmin, dbcreator |
Tienen control total sobre la instancia global del servidor. |
| Fixed Database Roles | db_owner, db_datareader, db_datawriter |
Permiten leer, escribir o administrar una base de datos específica. |
2. Creación de Roles Personalizados (Custom Database Roles)
USE [EmpresaBD];
GO
-- Crear un rol personalizado para el departamento de Auditoría
CREATE ROLE [Rol_Auditores];
-- Asignar permisos al rol
GRANT SELECT ON SCHEMA::dbo TO [Rol_Auditores];
-- Agregar a un usuario existente dentro del rol
ALTER ROLE [Rol_Auditores] ADD MEMBER [usr_analista_db];
GO
Ejercicios Prácticos Guiados
Ejercicio 1: Crear el Login usr_ventas con clave segura y mapearlo como usuario de BD usr_ventas_db.
CREATE LOGIN [usr_ventas] WITH PASSWORD = 'Ventas2025#Pass';
USE [EmpresaBD];
CREATE USER [usr_ventas_db] FOR LOGIN [usr_ventas];
Ejercicio 2: Otorgar permisos de lectura y actualización sobre la tabla Pedidos al usuario usr_ventas_db.
GRANT SELECT, UPDATE ON dbo.Pedidos TO [usr_ventas_db];
Ejercicio 3: Crear un rol de base de datos llamado Rol_Operadores, otorgarle permiso de inserción sobre la tabla Clientes e incluir a usr_ventas_db.
CREATE ROLE [Rol_Operadores];
GRANT INSERT ON dbo.Clientes TO [Rol_Operadores];
ALTER ROLE [Rol_Operadores] ADD MEMBER [usr_ventas_db];
Examen Interactivo de Conocimientos
Evalúa tus conocimientos adquiridos en la Unidad 3 seleccionando las respuestas correctas:
1. ¿Cuál es el orden de evaluación correcto para el acceso a objetos en SQL Server?
2. Si a un usuario se le concede GRANT SELECT y al mismo tiempo pertenece a un rol con DENY SELECT sobre la misma tabla, ¿qué sucede?
3. ¿Qué comando de T-SQL se utiliza para agregar un usuario existente a un rol de base de datos en SQL Server?
Control de acceso en SQL Server 2025
Diseña accesos seguros, auditables y fáciles de administrar para proteger la información crítica de tu organización.
Punto de partida
¿Qué es el control de acceso?
El control de acceso es el conjunto de mecanismos que identifica a una persona o proceso, determina qué recursos puede utilizar y registra sus acciones. En SQL Server 2025, esta disciplina conecta inicios de sesión, usuarios de base de datos, permisos y roles para reducir riesgos sin frenar el trabajo operativo.
3.1 Tipos de usuario
Distingue la identidad que entra al servidor de la identidad que trabaja dentro de una base de datos.
Concepto
Un login autentica una conexión en la instancia de SQL Server. Un usuario de base de datos autoriza esa identidad dentro de una base concreta. También existen usuarios contenidos, usuarios sin login y usuarios asociados a cuentas externas, según el escenario de seguridad.
Proceso para elegir el tipo adecuado
- Identifica si el acceso será a toda la instancia o solamente a una base de datos.
- Define el método de autenticación: Windows, SQL o identidad externa.
- Crea el usuario asociado y asígnalo al esquema o rol necesario.
Esquema de identidad y acceso
USE Ventas; CREATE USER ana_ventas FOR LOGIN ana_corp;
3.2 Creación de usuarios
Crear un usuario correctamente implica vincularlo a una identidad, definir su contexto y probar el acceso.
Concepto
La creación de usuarios se ejecuta en el contexto de la base de datos. Antes de crear uno, valida que el login exista en la instancia o decide si un usuario contenido responde mejor a los requisitos de portabilidad y aislamiento.
Pasos detallados
- Crea o verifica el login en la instancia con la política de autenticación aprobada.
- Cambia al contexto de la base de datos objetivo mediante USE.
- Ejecuta CREATE USER y valida que el usuario pueda conectarse con el nivel mínimo previsto.
Flujo de creación
CREATE LOGIN lector_app WITH PASSWORD = 'UseUnaClaveSegura!'; GO USE Inventario; CREATE USER lector_app FOR LOGIN lector_app;
3.3 Privilegios a usuarios
Los permisos determinan qué acciones se permiten sobre cada elemento de la plataforma.
Concepto
SQL Server permite conceder, denegar o revocar permisos como SELECT, INSERT, UPDATE y EXECUTE. El principio de menor privilegio recomienda dar solamente la operación indispensable y preferir permisos sobre esquemas, vistas o procedimientos antes que sobre tablas sensibles.
Pasos detallados
- Clasifica el objeto y determina qué operación requiere realmente el usuario.
- Concede el permiso más específico posible con GRANT.
- Prueba el escenario y revisa periódicamente permisos heredados o innecesarios.
Evaluación de permiso
USE Ventas; GRANT SELECT ON OBJECT::dbo.vw_ResumenPedidos TO ana_ventas;
3.4 Roles
Los roles agrupan permisos y convierten una administración individual en una política reutilizable.
Concepto
Un rol de base de datos funciona como un contenedor de permisos. SQL Server incluye roles fijos, pero los roles definidos por el equipo permiten modelar funciones reales, por ejemplo LectoresVentas o OperadoresInventario, con menos riesgo de privilegios excesivos.
Pasos detallados
- Define un rol que represente una responsabilidad de negocio concreta.
- Asigna permisos al rol, no directamente a cada persona.
- Agrega o retira usuarios del rol cuando cambie su función.
Administración basada en roles
CREATE ROLE LectoresVentas; GRANT SELECT ON SCHEMA::dbo TO LectoresVentas; ALTER ROLE LectoresVentas ADD MEMBER ana_ventas;
Práctica guiada
Ejercicios para reforzar tu comprensión
Clasifica identidades
Para una aplicación web, un analista y un proceso de integración, decide qué tipo de autenticación y usuario usarías. Justifica cada elección.
Crea un usuario de lectura
Escribe los comandos necesarios para vincular un login existente con un usuario en la base de datos Inventario.
Aplica menor privilegio
Un usuario debe consultar pedidos, pero no ver datos de pago. Propón un permiso seguro y el objeto ideal para concederlo.
Diseña un rol
Crea el diseño de un rol para el equipo de reportes: nómbralo, lista sus permisos y define qué usuarios deberían pertenecer a él.
Autoevaluación
Examen de conocimientos
Selecciona mentalmente una respuesta por pregunta y abre la solución al terminar. Meta sugerida: al menos 6 respuestas correctas.
- A) Login B) Esquema C) Vista
- A) Máximo acceso B) Menor privilegio C) Acceso anónimo
- A) GRANT B) DROP C) BACKUP
- A) En una base específica B) Solo en master C) En el sistema operativo
- A) Centraliza permisos B) Elimina auditoría C) Sustituye copias de seguridad
- A) SELECT B) EXECUTE C) ALTER
- A) Cuentas compartidas B) Identidad individual C) Permisos públicos
- A) Revisar su rol y permisos B) Ignorar el cambio C) Crear una cuenta compartida
Ver respuestas correctas
- 1. A — Login.
2. B — Menor privilegio.
3. A — GRANT.
4. A — En una base específica.
5. A — Centraliza permisos.
6. A — SELECT.
7. B — Identidad individual.
8. A — Revisar su rol y permisos.
Cierre
Resumen y recomendaciones prácticas
Una estrategia sólida de acceso combina identidades bien definidas, usuarios en el contexto correcto, permisos mínimos y roles administrables. No se trata solo de bloquear: se trata de habilitar el trabajo correcto, de forma verificable y segura.