Unidad 3 Control de acceso



Taller de Base de Datos • SQL Server 2025

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:

1. Autenticación (Nivel Servidor)

Crea un LOGIN para validar quién eres al conectarte al servidor.

2. Autorización (Nivel Base de Datos)

Crea un USER mapeado al Login para validar qué puedes hacer dentro de la BD.

3. Permisos y Roles

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
Regla de Oro en SQL Server: Un permiso 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
Guía práctica · Administración de bases de datos

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.

Principio rector: cada identidad debe recibir únicamente los permisos que necesita para cumplir su funció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

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

  1. Identifica si el acceso será a toda la instancia o solamente a una base de datos.
  2. Define el método de autenticación: Windows, SQL o identidad externa.
  3. Crea el usuario asociado y asígnalo al esquema o rol necesario.

Esquema de identidad y acceso

Login Instancia
Usuario Base de datos
Permiso Objeto
Ejemplo práctico: usuario asociado a un login
USE Ventas;
CREATE USER ana_ventas FOR LOGIN ana_corp;
Evita utilizar cuentas compartidas: una identidad por persona mejora la auditoría y la responsabilidad.
3.2

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

  1. Crea o verifica el login en la instancia con la política de autenticación aprobada.
  2. Cambia al contexto de la base de datos objetivo mediante USE.
  3. Ejecuta CREATE USER y valida que el usuario pueda conectarse con el nivel mínimo previsto.

Flujo de creación

Verificar login
CREATE USER
Probar acceso
Ejemplo práctico: login SQL y usuario de base
CREATE LOGIN lector_app WITH PASSWORD = 'UseUnaClaveSegura!';
GO
USE Inventario;
CREATE USER lector_app FOR LOGIN lector_app;
Documenta el propietario funcional, la fecha de revisión y el propósito de cada cuenta creada.
3.3

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

  1. Clasifica el objeto y determina qué operación requiere realmente el usuario.
  2. Concede el permiso más específico posible con GRANT.
  3. Prueba el escenario y revisa periódicamente permisos heredados o innecesarios.

Evaluación de permiso

Usuario
GRANT SELECT
Vista o tabla permitida
Ejemplo práctico: lectura limitada a una vista
USE Ventas;
GRANT SELECT ON OBJECT::dbo.vw_ResumenPedidos
TO ana_ventas;
DENY debe usarse con cautela: puede prevalecer sobre permisos concedidos por otros caminos.
3.4

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

  1. Define un rol que represente una responsabilidad de negocio concreta.
  2. Asigna permisos al rol, no directamente a cada persona.
  3. Agrega o retira usuarios del rol cuando cambie su función.

Administración basada en roles

Usuarios Ana · Luis · Sofía
Rol LectoresVentas
Permisos centralizados
Ejemplo práctico: rol personalizado de lectura
CREATE ROLE LectoresVentas;
GRANT SELECT ON SCHEMA::dbo TO LectoresVentas;
ALTER ROLE LectoresVentas ADD MEMBER ana_ventas;
Revisa los roles fijos antes de usarlos: algunos conceden más capacidades de las necesarias.

Práctica guiada

Ejercicios para reforzar tu comprensión

1

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.

2

Crea un usuario de lectura

Escribe los comandos necesarios para vincular un login existente con un usuario en la base de datos Inventario.

3

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.

4

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.

1. ¿Qué objeto autentica una conexión a la instancia de SQL Server?
    A) Login B) Esquema C) Vista
2. ¿Qué principio evita otorgar permisos innecesarios?
    A) Máximo acceso B) Menor privilegio C) Acceso anónimo
3. ¿Qué instrucción concede un permiso?
    A) GRANT B) DROP C) BACKUP
4. ¿Dónde se crea un usuario de base de datos?
    A) En una base específica B) Solo en master C) En el sistema operativo
5. ¿Qué ventaja aporta un rol personalizado?
    A) Centraliza permisos B) Elimina auditoría C) Sustituye copias de seguridad
6. ¿Qué permiso permite consultar datos?
    A) SELECT B) EXECUTE C) ALTER
7. ¿Qué práctica mejora la trazabilidad?
    A) Cuentas compartidas B) Identidad individual C) Permisos públicos
8. ¿Qué se debe hacer cuando cambia la función de una persona?
    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.

Revisa accesos regularmente Programa revisiones de usuarios, roles y permisos al menos cada trimestre.
Prioriza roles personalizados Modela funciones de negocio en lugar de repartir permisos directos a cada cuenta.
Audita y documenta Conserva evidencia del motivo, responsable y vigencia de cada acceso relevante.
Control de Acceso en SQL Server 2025 · Recurso educativo de administración y seguridad