Name: Ana Isabel Rivera Company: IBM
Session:
Seguridad en los datos con LBAC
(Label Based Access Control)
Agenda
• Introducción: La seguridad de la información.
• Amenazas posibles/ Acciones para evitarlas.
• Buenas prácticas en la seguridad del acceso a las tablas.
• Funcionalidades de DB2 en seguridad.
• Database Roles.
• LBAC:
• Introducción
• Conceptos
• Ejemplos.
Introducción:
La seguridad de la información.
• La seguridad de los datos es un área crítica debido a:
• Aumento de las violaciones de seguridad en las empresas.
• Aumento de requerimientos de ley sobre la seguridad de los datos.
• Afecta a múltiples niveles:
• Seguridad física.
• Seguridad de red.
• Seguridad del servidor.
• Seguridad de los datos almacenados.
• Controles de negocio y gestión de identidades.
Introducción:
La seguridad de la información no es trivial
1. Clasificación de los datos: Entender y clasificar la información que nuestros sistemas almacenan.
2. Clasificación de usuarios: Quién debe acceder a qué.
3. Identificación de amenazas posibles: Conocer a qué nos enfrentamos
4. Acciones a implementar:
Conocer la manera de evitar que las amenazas sean
ataques reales a nuestra seguridad e implementar las
Introducción:
La seguridad de la información no es trivial
5. Pruebas: Validar las acciones y mecanismos de seguridad implementados.
6. Auditoría: Detección de los accesos no autorizados.
7. Mantenimiento.
La seguridad de la información.
Amenazas posibles.
Información de diagnóstico
Logs de transacciones (activos y archivados) Backups
Datos en tránsito
Acceso a los datos por administrador del SO Acceso a los datos por parte del DBA
ID Común de usuario
Conexiones no autorizadas
Amenaza
La seguridad de la información.
Amenazas posibles / Acciones
Información de diagnóstico Extracciones de datos
Logs de transacciones (activos y archivados) Backups
Datos en tránsito
Acceso a los datos por administrador del SO Acceso a los datos por parte del DBA
ID Común de usuario
Conexiones no autorizadas
Amenaza
Control de acceso SO.
IBM DEE Encriptación.
Control de acceso SO.
IBM DEE
Encriptación de backup: IBM DEE Encriptación SSL
IBM Database Encryption Expert (IBM DEE) Separación de roles en DB2: SECADM
Trusted Context
Proceso de autenticación + autorización de DB2
Acción
La seguridad de la información.
Amenazas posibles.
Acceso a las tablas
Amenaza
Buenas prácticas en el acceso a las tablas
Acción
Buenas prácticas en el acceso a tablas
• Clasificación de los datos de las tablas:
• Datos sensibles
• Datos no-sensibles.
• Validación de los privilegios de acceso:
• Revocar (REVOKE) todos los privilegios no estrictamente necesarios.
• Asignar los privilegios a roles, no directamente a usuarios.
• Auditar los accesos a las tablas con información sensible
• Implementar LBAC
La seguridad de la información.
Separación de Roles en el acceso a la BD
Medidas para mejorar la seguridad en DB2.
• Autenticación
• Autorización
• Database Roles
• Trusted Contexts
• Label-Based Access Control
• Auditoría
• Encriptación.
• Static SQL / pureQuery
Database Roles
• ¿Qué son?
• Objeto de base de datos que agrupa uno o más privilegios o
autorizaciones de base de datos y se asigna a través de GRANT a:
• Usuarios
• Grupos
• PUBLIC
• Otros Roles
• ¿Qué puede asociarse a un Role?
• Etiquetas de seguridad LBAC
• Todos los privilegios de Base de Datos
• Todas las autorizaciones de Base de Datos
Database Roles
• Ventajas.
• Simplificar (y mejorar) la administración y gestión de los privilegios y autorizaciones en la base de datos.
• ¿Quién gestiona el acceso a un Role?
• La administración se realiza a través de SECADM
• Puede delegarse en otros WITH ADMIN en la sentencia GRANT
Database Roles. Ejemplos
• Usuario SECDAM :
• CREATE ROLE CALIDAD
• GRANT SELECT ON TABLE CLIENTES TO ROLE CALIDAD
• GRANT SELECT ON TABLE PRODUCTOS TO ROLE CALIDAD
• GRANT SELECT, INSERT ON TABLE ESTADOS TO ROLE CALIDAD
• GRANT SELECT, INSERT ON TABLE INCIDENCIAS TO ROLE CALIDAD
• GRANT ROLE CALIDAD TO USER PERS001
• GRANT ROLE CALIDAD TO USER PERS002
• REVOKE ROLE CALIDAD FROM USER PERS001
LBAC.
• LBAC complementa el control de seguridad tradicional de DB2 : DAC (Discretionary Access Control). Con DAC, el acceso a los datos
restringidos se basa en la autorización sobre el objeto.
• LBAC es la implementación de MAC (Mandatory Access Control),
permitiendo el acceso a la información en función de la sensibilidad de los datos y la autorización del usuario.
• Los datos protegidos se asignan a una etiqueta de seguridad: security label.
• SECADM crea y mantiene las etiquetas de seguridad.
• Los usuarios tendrán acceso a los datos protegidos a través de las etiquetas de seguridad a las que tengan acceso.
• LBAC permite controlar el acceso a nivel de fila columna o una combinación de ambos.
• Con LBAC + DAC cuando se produce un intento de acceso a datos protegidos se activan dos niveles de control de acceso:
• DAC: A nivel de objeto: ¿Tiene el usuario privilegios para realizar la operación solicitada?
• LBAC: Fila/Columna/Ambas.
LBAC.
¿Qué debo saber de mi base de datos?
• La implementación de LBAC debe realizarse por SECADM.
• ¿Qué debemos saber antes de comenzar a implementar LBAC?
• Clasificación de los datos:
• Ejemplo: Top Secret/Secret/Clasificados/No Clasificados
• Modelo de datos. Tablas donde reside la información sensible.
• Usuarios que pueden acceder a la información sensible y tipo de acceso.
LBAC.
Conceptos
• Security label components.
• Security Policy.
• Security Label.
• Tablas protegidas
LBAC. Conceptos.
Security Label Component
• Criterios bajo los que se va a realizar el control de acceso. Tres tipos.
SET
Conjunto no ordenado.
ARRAY
Conjunto ordenado jerárquicamente
TREE
Modelo más complejo de niveles y jerarquías
LBAC. Conceptos.
Security Label Component
• SENTENCIAS DE CREACIÓN:
LBAC. Conceptos.
Security Policy
• Security policy : Determinan exactamente cómo va a protegerse una tabla a través de LBAC.
• Queda definida a través de:
• Security Label components que se van a utilizar.
• Reglas de acceso. Reglas predefinidas en DB2: DB2LBACRULES
• Excepciones.
• Una tabla solo puede tener una security policy; pero una security policy puede asignarse a varias tablas.
• Definida por SECADM
LBAC. Conceptos.
Security Policy
• Sentencia:
LBAC. Conceptos.
Security Label
• Security label : Describe un conjunto de criterios de seguridad que se utilizan para proteger el acceso y/o modificación de datos sensibles.
• Security label consiste en:
• Nombre del security label
• Security policy de la que forma parte.
• Valores de uno o más de los security label components incluidos en la security policy.
• Un security label solo puede formar parte de una security
policy.
LBAC. Conceptos.
Security Label
• Sentencia.
• Definida por SECADM
LBAC. Conceptos.
Security Label
• Asignación de security label a los usuarios autorizados:
• Es necesario proporcionar acceso a los security label a través de la sentencia GRANT a los usuarios autorizados a acceder a los datos protegidos, indicando cuando se permite acceso de lectura, acceso de escritura o acceso completo.
LBAC. Proteger tablas.
• Los elementos de LBAC:
• Security Label Components,
• Security Policies y
• Security Labels
se utilizan para proteger las tablas que almacenan datos sensibles.
• La protección de tablas se puede realizar:
• Protección a nivel de fila
• Protección a nivel de columna
• Ambos.
LBAC. Proteger tablas.
• PROCESO
1. Un usuario trata de acceder a datos protegidos.
2. Credenciales LBAC del usuario (security label a los que tiene acceso) son comparadas con los security label asignados a la security policy que posee la tabla.
1. Protección a nivel de fila: Solo se mostrarán las filas para las que el usuario tiene credenciales adecuadas, y en caso de no tener ninguna no se recuperará ninguna fila.
2. Protección a nivel de columna: Si no se poseen credenciales para las columnas a las que se intenta acceder se muestra un error:
LBAC. Ejemplos.
Protección a nivel de fila
• Conocimiento de los requerimientos (Tabla SALES)
Datos organizativos (usuarios). Requerimientos de seguridad
• Ejecutivos : Pueden ver, pero no actualizar todos los
registros de la tabla.
• Directores regionales: Pueden ver y actualizar los registros de los vendedores de su área.
• Vendedores: Pueden ver y actualizar los registros
relativos a sus ventas.
LBAC. Ejemplos.
Protección a nivel de fila
• Security label components.
• Security Policy.
• Security Label.
• Tablas protegidas
LBAC. Ejemplos.
Protección a nivel de fila
CREATE SECURITY LABEL COMPONENT sec_comp TREE (‘EXECS’ROOT,
‘N_MGR’UNDER ‘EXECS’,
‘E_MGR’UNDER ‘EXECS’,
‘S_MGR’UNDER ‘EXECS’,
‘W_MGR’UNDER ‘EXECS’,
‘N_SREP’UNDER ‘N_MGR’,
‘E_SREP’UNDER ‘E_MGR’,
‘S_SREP’UNDER ‘S_MGR’,
‘W_SREP’UNDER ‘W_MGR’)
Comando realizado por SECADM
LBAC. Ejemplos.
Protección a nivel de fila
• Security label components.
• Security Policy.
• Security Label.
• Tablas protegidas
LBAC. Ejemplos.
Protección a nivel de fila
CREATE SECURITY POLICY sec_policy COMPONENTS sec_comp
WITH DB2LBACRULES
Comando realizado por SECADM
LBAC. Ejemplos.
Protección a nivel de fila
• Security label components.
• Security Policy.
• Security Label.
• Tablas protegidas
LBAC. Ejemplos.
Protección a nivel de fila
CREATE SECURITY LABEL sec_policy.execs COMPONENT sec_comp 'EXECS‘;
CREATE SECURITY LABEL sec_policy.n_mgr COMPONENT sec_comp 'N_MGR‘;
CREATE SECURITY LABEL sec_policy.e_mgr COMPONENT sec_comp 'E_MGR‘;
CREATE SECURITY LABEL sec_policy.s_mgr COMPONENT sec_comp 'S_MGR‘;
CREATE SECURITY LABEL sec_policy.w_mgr COMPONENT sec_comp 'W_MGR‘;
CREATE SECURITY LABEL sec_policy.n_srep COMPONENT sec_comp ‘N_SREP‘;
CREATE SECURITY LABEL sec_policy.e_srep COMPONENT sec_comp ‘E_SREP‘;
CREATE SECURITY LABEL sec_policy.s_srep COMPONENT sec_comp ‘S_SREP‘;
CREATE SECURITY LABEL sec_policy.w_srep COMPONENT sec_comp ‘W_SREP‘;
LBAC. Ejemplos.
Protección a nivel de fila
CREATE SECURITY LABEL sec_policy.execs COMPONENT sec_comp 'EXECS‘;
CREATE SECURITY LABEL sec_policy.n_mgr COMPONENT sec_comp 'N_MGR‘;
CREATE SECURITY LABEL sec_policy.e_mgr COMPONENT sec_comp 'E_MGR‘;
CREATE SECURITY LABEL sec_policy.s_mgr COMPONENT sec_comp 'S_MGR‘;
CREATE SECURITY LABEL sec_policy.w_mgr COMPONENT sec_comp 'W_MGR‘;
CREATE SECURITY LABEL sec_policy.n_srep COMPONENT sec_comp ‘N_SREP‘;
CREATE SECURITY LABEL sec_policy.e_srep COMPONENT sec_comp ‘E_SREP‘;
CREATE SECURITY LABEL sec_policy.s_srep
GRANT SECURITY LABEL sec_policy.execs TO USER president
FOR READ ACCESS;
GRANT SECURITY LABEL sec_policy.n_mgr TO USER n_salesmgr
FOR ALL ACCESS;
(East, South, and West Sales Manager)
GRANT SECURITY LABEL sec_policy.n_srep TO USER n_salesrep
FOR ALL ACCESS;
LBAC. Ejemplos.
Protección a nivel de fila
• Security label components.
• Security Policy.
• Security Label.
• Tablas protegidas.
LBAC. Ejemplos.
Protección a nivel de fila
CREATE TABLE corp.sales (
sales_rec_id INTEGER NOT NULL, sales_date DATE WITH DEFAULT, sales_rep INTEGER,
region VARCHAR(15),
sales_amt DECIMAL(12,2), sec_label DB2SECURITYLABEL) SECURITY POLICY sec_policy
ALTER TABLE corp.sales
ADD COLUMN sec_label DB2SECURITYLABEL ADD SECURITY POLICY sec_policy
LBAC. Ejemplos.
Protección a nivel de fila
LBAC. Ejemplos.
Protección a nivel de columna
• Conocimiento de los requerimientos (Tabla EMPLOYEES)
Datos organizativos (usuarios). Requerimientos de seguridad
• Nombre, género, departamento y teléfono: Información accesible a todos los empleados.
• Salario, información de bonus (además de los valores
anteriores): Información accesible solo por directores y Recursos Humanos.
• Número de la seguridad social:
Información accesible solo para
RECURSOS HUMANOS
DIRECTORES
RESTO DE EMPLEADOS
LBAC. Ejemplos.
Protección a nivel de columna
• Security label components.
• Security Policy.
• Security Label.
• Tablas protegidas
LBAC. Ejemplos.
Protección a nivel de columna
CREATE SECURITY LABEL COMPONENT sec_comp ARRAY [‘CONFIDENTIAL’, ‘CLASSIFIED’,
‘UNCLASSIFIED’]
Comando realizado por SECADM
LBAC. Ejemplos.
Protección a nivel de columna
• Security label components.
• Security Policy.
• Security Label.
• Tablas protegidas
LBAC. Ejemplos.
Protección a nivel de columna
CREATE SECURITY POLICY sec_policy COMPONENTS sec_comp
WITH DB2LBACRULES
Comando realizado por SECADM
LBAC. Ejemplos.
Protección a nivel de columna
• Security label components.
• Security Policy.
• Security Label.
• Tablas protegidas
LBAC. Ejemplos.
Protección a nivel de columna
CREATE SECURITY LABEL sec_policy.confidential
COMPONENT sec_comp 'CONFIDENTIAL‘
CREATE SECURITY LABEL sec_policy.classified
COMPONENT sec_comp 'CLASSIFIED‘
CREATE SECURITY LABEL sec_policy.unclassified
COMPONENT sec_comp 'UNCLASSIFIED'
LBAC. Ejemplos.
Protección a nivel de columna
CREATE SECURITY LABEL sec_policy.confidential
COMPONENT sec_comp 'CONFIDENTIAL‘
CREATE SECURITY LABEL sec_policy.classified
COMPONENT sec_comp 'CLASSIFIED‘
CREATE SECURITY LABEL sec_policy.unclassified
COMPONENT sec_comp 'UNCLASSIFIED'
GRANT SECURITY LABEL
sec_policy.confidential TO ROLE hrstaff
FOR ALL ACCESS;
GRANT SECURITY LABEL
sec_policy.classified TO ROLE manager
FOR READ ACCESS;
GRANT SECURITY LABEL
sec_policy.unclassified TO ROLE worker
FOR READ ACCESS;
LBAC. Ejemplos.
Protección a nivel de columna
• Security label components.
• Security Policy.
• Security Label.
• Tablas protegidas.
LBAC. Ejemplos.
Protección a nivel de columna
CREATE TABLE hr.employees (
name VARCHAR(40) SECURED WITH unclassified, gender CHAR(1) SECURED WITH unclassified, dept_id CHAR(5) SECURED WITH unclassified, phone CHAR(14) SECURED WITH unclassified, ssn CHAR(12) SECURED WITH confidential,
salary DECIMAL(12,2) SECURED WITH classified, bonus DECIMAL(12,2) SECURED WITH classified) SECURITY POLICY sec_policy
ALTER TABLE hr.employees
ALTER COLUMN name SECURED WITH unclassified ...
ALTER COLUMN ssn SECURED WITH confidential ALTER COLUMN salary SECURED WITH classified ALTER COLUMN bonus SECURED WITH classified;
LBAC. Ejemplos.
Protección a nivel de columna
LBAC. Ejemplos.
Protección a nivel de fila y columna
• Conocimiento de los requerimientos (Tabla MEDICAL_RECORD) Datos organizativos (usuarios). Requerimientos de seguridad
• La columna MEDICAL_HISTORY de la tabla MEDICAL_RECORD contiene información confidencial. El resto de las columnas contiene información no
confidencial.
• Los analistas médicos tienen acceso de lectura/escritura a todas las columnas.
• Los directores tienen acceso de lectura a las columnas no confidenciales.
• Los analistas médicos tienen acceso de lectura/escritura a todas las filas.
• Los directores tienen acceso de lectura a las filas de su departamento.
ANALISTA MEDICO
DIRECTOR K01 DIRECTOR S01 DIRECTOR K02 DIRECTOR S02
Clasificación de los datos
CONFIDENCIALES
NO CONFIDENCIALES
LBAC. Ejemplos.
Protección a nivel de fila y columna
CREATE SECURITY LABEL COMPONENT SLC_LEVEL SET {'CONFIDENTIAL'}
CREATE SECURITY LABEL COMPONENT SLC_LIFEINS_ORG TREE {'LIFE_INS_DEPT' ROOT, 'K01' UNDER 'LIFE_INS_DEPT', 'K02' UNDER 'LIFE_INS_DEPT',
'S01' UNDER 'LIFE_INS_DEPT', 'S02' UNDER 'LIFE_INS_DEPT' }
CREATE SECURITY POLICY MEDICAL_RECORD_POLICY COMPONENTS SLC_LEVEL, SLC_LIFEINS_ORG WITH DB2LBACRULES RESTRICT NOT AUTHORIZED WRITE SECURITY LABEL
CREATE SECURITY LABEL MEDICAL_RECORD_POLICY.MED_RECORD COMPONENT SLC_LEVEL 'CONFIDENTIAL' CREATE SECURITY LABEL MEDICAL_RECORD_POLICY.DEPT_K01 COMPONENT SLC_LIFEINS_ORG 'K01'
CREATE SECURITY LABEL MEDICAL_RECORD_POLICY.DEPT_K02 COMPONENT SLC_LIFEINS_ORG 'K02' CREATE SECURITY LABEL MEDICAL_RECORD_POLICY.DEPT_S01 COMPONENT SLC_LIFEINS_ORG 'S01' CREATE SECURITY LABEL MEDICAL_RECORD_POLICY.DEPT_S02 COMPONENT SLC_LIFEINS_ORG 'S02‘
CREATE SECURITY LABEL MEDICAL_RECORD_POLICY.MEDICAL_ANALYST COMPONENT SLC_LEVEL 'CONFIDENTIAL', COMPONENT SLC_LIFEINS_ORG 'K01', 'K02', 'S01', 'S02'
GRANT SECURITY LABEL MEDICAL_RECORD_POLICY. MEDICAL_ANALYST TO USER PETER FOR ALL ACCESS GRANT SECURITY LABEL MEDICAL_RECORD_POLICY.DEPT_K01 TO USER Andrea FOR ALL ACCESS
LBAC. Ejemplos.
Protección a nivel de fila y columna
ALTER TABLE MEDICAL_RECORD
ALTER COLUMN MEDICAL_HISTORY SECURED WITH MED_RECORD ADD COLUMN DEPARTMENT_TAG DB2SECURITYLABEL
ADD SECURITY POLICY MEDICAL_RECORD_POLICY
LBAC. Ejemplos.
Protección a nivel de fila y columna
Andrea
Joseph
RESUMEN
• DB2 proporciona una serie de medidas eficaces para neutralizar las amenazas sobre la seguridad de los datos:
Autenticación, Autorización, Roles, Trusted Context, auditoría, encriptación, LBAC.
• SECADM permite separar los roles de administración y seguridad en el acceso a los datos.
• LBAC complementa la seguridad tradicional basada en autorización, introduciendo un nuevo nivel de seguridad que proporciona:
• Seguridad a nivel de fila
• Seguridad a nivel de columna
• Combinación de ambas
• La implementación de LBAC requiere conocimiento de la tipología de los datos y de los usuarios que acceden a datos sensibles.
RECURSOS
• Tutorial de LBAC en developer works:
http://www.ibm.com/developerworks/data/tutorials/dm0605wong/index.html
• Chat with the Lab. Modelo de seguridad de DB2
http://www.channeldb2.com/events/chat-db2-security-primer http://www.channeldb2.com/events/ibm-data-security-blueprint
• Redbook : DB2 Security and compliance Solutions for LUW (db2 9.5)
http://www.redbooks.ibm.com/abstracts/sg247555.html?Open
• Centro de Información db2 9.7