Para gestionar el acceso a los datos confidenciales, puede utilizar mecanismos de autenticación y control de acceso para establecer reglas y controles para el acceso a datos. Pero, para proteger y descubrir comportamientos desconocidos o inaceptables, puede supervisar el acceso a los datos utilizando el recurso de comprobación de Db2®.
La supervisión satisfactoria del acceso no deseado a los datos y el análisis posterior pueden conducir a mejoras en el control del acceso a los datos y a la prevención final del acceso no autorizado, malintencionado o por descuido a los datos. La supervisión de la aplicación y el acceso de usuario individual, incluidas las acciones de administración del sistema, pueden proporcionar un registro histórico de la actividad en los sistemas de base de datos.
- Auditoría (AUDIT)
- Genera registros cuando se modifican los valores de auditoría o cuando se accede a las anotaciones cronológicas de auditoría.
- Comprobación de autorización (CHECKING)
- Genera registros durante la comprobación de autorización de intentos de acceso o manipulación de objetos o funciones de base de datos de Db2.
- Mantenimiento de objetos (OBJMAINT)
- Genera registros cuando se crean o descartan objetos de datos y cuando se alteran determinados objetos.
- Mantenimiento de seguridad (SECMAINT)
- Genera registros para las condiciones siguientes:
- Otorgar o revocar privilegios de objeto o autorizaciones de base de datos.
- Otrorgar o revocar etiquetas de seguridad o exenciones.
- Modificar la autorización de grupo, autorización de rol o anular o restringir los atributos de una política de seguridad LBAC.
- Otorgar o revocar el privilegio SETSESSIONUSER.
- Modificar cualquiera de los parámetros de configuración SYSADM_GROUP, SYSCTRL_GROUP, SYSMAINT_GROUP o SYSMON_GROUP.
- Administración del sistema (SYSADMIN)
- Genera registros cuando se realizan operaciones que requieren autorización SYSADM, SYSMAINT o SYSCTRL.
- Validación de usuario (VALIDATE)
- Genera registros cuando se autentifican usuarios o se recupera información de seguridad del sistema.
- Contexto de operación (CONTEXT)
- Genera registros para mostrar el contexto de operación cuando se realiza una operación de base de datos. Esta categoría permite interpretar mejor el archivo de anotaciones cronológicas de auditoría. Cuando se utiliza con el campo de correlación de sucesos de las anotaciones, un grupo de sucesos se puede volver a asociar a una sola operación de base de datos. Por ejemplo, una sentencia de consulta para consultas dinámicas, un identificador de paquete para consultas estáticas o un indicador del tipo de operación que se está realizando, como por ejemplo CONNECT, puede proporcionar el contexto necesario para el análisis de los resultados de auditoría.
- Ejecutar (EXECUTE)
- Genera registros durante la ejecución de sentencias de SQL.
Para cualquiera de las categorías listadas, se pueden auditar errores, éxitos o ambos.
Cualquier operación en el servidor de bases de datos puede generar varios registros. El número real de registros generados en el registro de comprobación depende del número de categorías de sucesos que se deben registrar según lo especificado por la configuración del recurso de comprobación. También depende de si los éxitos y/o los fracasos se auditan. Es importante ser selectivo respecto a los sucesos para auditar.
Los registros generados desde este recurso se pueden ver desde un conjunto de tablas AUDIT donde cada tabla corresponde a cada categoría. El análisis de estos registros puede revelar patrones de uso que pueden identificar un mal uso del sistema. Cuando se identifica un mal uso, se pueden tomar acciones para reducir o eliminar el mal uso del sistema.
El recurso de comprobación proporciona la posibilidad de auditar a nivel de base de datos. Cualquier miembro del grupo de administradores puede configurar una política de auditoría para controlar cuándo se recopila dicha información de auditoría, como por ejemplo, supervisar los ID de autorización de supervisión, las autorizaciones de base de datos, los contextos de confianza o las tablas particulares.
Inicio rápido
- AUDIT_ALL es una política predefinida que se configura durante el despliegue. Esta política comprueba todos los éxitos y errores para cada categoría de registros de auditoría. Se recomienda crear una política personalizada que se ajuste a sus necesidades.
- AUDIT_UPDATE es un procedimiento predefinido que extrae y carga registros de auditoría en las tablas base de datos.
- Las sentencias AUDIT requieren que los usuarios tengan la autorización SECADM. Para ver los datos en las tablas AUDIT.*, los usuarios a los que se otorga el privilegio SELECT sobre esas tablas pueden acceder a ellas.
- Para habilitar AUDIT para capturar todos los sucesos del servicio para cada rol
AUDIT ROLE DV_ADMIN USING POLICY AUDIT_ALL; AUDIT ROLE DV_ENGINEER USING POLICY AUDIT_ALL; AUDIT ROLE DV_STEWARD USING POLICY AUDIT_ALL; AUDIT ROLE DV_WORKER USING POLICY AUDIT_ALL;
- Para crear una tarea de actualización de auditoría planificada para obtener los últimos registros de auditoría en las tablas de auditoría cada 15 minutos (el intervalo mínimo entre actualizaciones)
CALL SYSPROC.ADMIN_TASK_ADD( 'AUDIT_UPDATE', NULL, NULL, NULL, '*/15 * * * *', 'AUDIT', 'UPDATE', NULL, NULL, 'Periodically update to audit tables' );
- Para ver los registros de auditoría de las 8 categorías de sucesos de auditoría
select * from AUDIT.AUDIT;
select * from AUDIT.CHECKING;
select * from AUDIT.CONTEXT;
select * from AUDIT.EXCUTE;
select * from AUDIT.OBJMAINT;
select * from AUDIT.SECMAINT;
select * from AUDIT.SYSADMIN;
select * from AUDIT.VALIDATE;
- Crear una política de auditoría
- Empiece a utilizar la política de auditoría
- Configurar una política de auditoría personalizada
- Ver todas las políticas de auditoría que se han creado
- Comprobar qué políticas de auditoría se están utilizando actualmente
- Detener auditoría en una entidad de base de datos
- Detener la auditoría de un grupo
- Crear una tarea planificada
- Modificar una tarea planificada
- Supervisar el estado de la tarea de actualización de auditoría planificada
- Cargar los registros de auditoría más recientes en las tablas AUDIT.*, inmediatamente
Para obtener más información, consulte Políticas de auditoría.
Crear una política de auditoría
CREATE AUDIT POLICY policy_name CATEGORIES category or ALL STATUS status ERROR TYPE NORMAL;
Para obtener más información, consulte Sentencia CREATE AUDIT POLICY.
- Nombres de política de auditoría
- Asegúrese de que el nombre sea exclusivo y que su propósito sea fácilmente identificable, por ejemplo,
AUDIT_SOC2_COMPLIANCE
oAUDIT_LOGIN_ONLY
. No inicie el nombre conSYS
, ya que está reservado para los nombres de sistema interno de la base de datos. - Categorías a auditar
- La política determina qué categorías se van a auditar. Esta política se puede aplicar a otros objetos de base de datos para determinar cómo se va a auditar el uso de esos objetos. Hay ocho categorías disponibles para auditar. Cuantas más categorías se configuren, más información se auditará y se acumula en el almacenamiento intermedio de auditoría ocupando espacio de cálculo. Entender lo que se necesita para su propósito es importante para evitar sobrecargar el espacio de cálculo de su sistema. El resumen describe cada categoría disponible. Si se especifica
ALL
como opción de categoría, no se puede especificar ninguna otra categoría.Para cumplir con la mayoría de los estándares de seguridad, las categorías recomendadas en la lista siguiente abordarán las cuestiones de control de acceso, autenticación y supervisión del acceso privilegiado. Configurar las políticas con estas categorías garantizará que haya una sobrecarga mínima mientras se mantiene la seguridad.EXECUTE WITHOUT DATA
: Control de accesoVALIDATE
: AutenticaciónSECMAINT
: Supervisión del acceso privilegiado
Además, para cada categoría, deben auditarse tanto los escenarios de éxito como los de error, y el tipo de error solo debe registrar errores de código SQL.STATUS BOTH
ERROR TYPE NORMAL
Empiece a utilizar la política de auditoría
AUDIT database_entity USING POLICY policy_name;
Para obtener más información, consulte Sentencia AUDIT.
Configurar una política de auditoría personalizada
Puede configurar una política de auditoría personalizada para capturar solicitudes de autenticación y ejecutar correctamente mandatos SQL y habilitarla.
CREATE AUDIT POLICY AUDIT_VALIDATE_EXECUTE CATEGORIES VALIDATE STATUS BOTH, EXECUTE STATUS SUCCESS ERROR TYPE NORMAL;
- Objetos de la base de datos
- La auditoría de toda la base de datos producirá una sobrecarga del espacio de cálculo. La recomendación es identificar a qué tabla y tabla de consulta materializada asociada (MQT) se debe aplicar una política.Nota: La política de auditoría que se aplica a una tabla no se aplica a una tabla de consulta materializada (MQT) basada en dicha tabla. Resulta recomendable que si se asocia una política de auditoría con una tabla, también se asocie dicha política con cualquier MQT basada en dicha tabla. Es posible que el compilador utilice automáticamente una MQT, aún en el caso de que una sentencia de SQL haga referencia a la tabla base; sin embargo, estará vigente la política de auditoría que se utilice para la tabla base.
Otra configuración recomendada es aplicar una política a un grupo o rol. Puede utilizar esta configuración para supervisar qué usuarios en qué grupo y rol realizan acciones inesperadas. Si decide aplicar una política a toda la base de datos, asegúrese de que la política no guarda un registro de todas las categorías.
- Habilitar la política de auditoría para una tabla
AUDIT TABLE CUSTOMTABLE USING POLICY AUDIT_VALIDATE_EXECUTE;
También puede configurar una política de auditoría personalizada para capturar sólo las solicitudes de autenticación (tanto satisfactorias como anómalas) y habilitarlas.
CREATE AUDIT POLICY AUDIT_VALIDATE_ONLY CATEGORIES VALIDATE STATUS BOTH ERROR TYPE NORMAL;
Ver todas las políticas de auditoría que se han creado
select * from SYSCAT.AUDITPOLICIES;
AUDITPOLICYNAME AUDITPOLICYID CREATE_TIME ALTER_TIME AUDITSTATUS CONTEXTSTATUS VALIDATESTATUS CHECKINGSTATUS SECMAINTSTATUS OBJMAINTSTATUS SYSADMINSTATUS EXECUTESTATUS EXECUTEWITHDATA ERRORTYPE REMARKS
---------------------------- ------------- -------------------------- -------------------------- ----------- ------------- -------------- -------------- -------------- -------------- -------------- ------------- --------------- --------- -------
AUDIT_VALIDATE_ONLY 108 2018-07-23-21.00.57.024758 2018-07-23-21.00.57.024758 N N B N N N N N N N -
AUDIT_ALL 106 2018-07-23-20.51.18.017062 2018-07-23-20.51.18.017062 B B B B B B B B N N -
2 record(s) selected.
Comprobar qué políticas de auditoría se están utilizando actualmente
select * from SYSCAT.AUDITUSE;
AUDITPOLICYNAME AUDITPOLICYID OBJECTTYPE SUBOBJECTTYPE OBJECTSCHEMA OBJECTNAME AUDITEXCEPTIONENABLED
------------------------- ------------- ---------- ------------- ------------- ----------------- ---------------------
AUDIT_VALIDATE_ONLY 108 - CURRENT SERVER N
1 record(s) selected.
Detener auditoría en una entidad de base de datos
Para detener una auditoría en una entidad de base de datos, se debe eliminar la política.
AUDIT database_entity REMOVE POLICY;
Para obtener más información, consulte Sentencia AUDIT.
Detener la auditoría de un grupo
AUDIT GROUP BLUUSERS REMOVE POLICY;
Crear una tarea planificada
Para obtener más información, consulte Procedimiento ADMIN_TASK_ADD: planificar una nueva tarea.
- Para crear una tarea de actualización de auditoría planificada para obtener los últimos registros de auditoría en las tablas de auditoría cada 20 minutos:
CALL SYSPROC.ADMIN_TASK_ADD( 'AUDIT_UPDATE', NULL, NULL, NULL, '*/20 * * * *', 'AUDIT', 'UPDATE', NULL, NULL, 'Periodically update to audit tables' );
- Frecuencia de planificación
- La frecuencia de ejecución de la tarea predefinida que archiva los registros de auditoría estaba fuera del ámbito de esta prueba, pero vale la pena indicar las recomendaciones que se recopilan de situaciones del cliente reales. Con bases de datos más grandes, la recomendación es ejecutar la tarea de archivado cada día durante 15 minutos. Esto permite que la base de datos se recupere en caso de que hubiera problemas de rendimiento inesperados. Si las políticas se configuran según lo recomendado, los almacenamientos intermedios de auditoría deberían ser capaces de contener la carga de trabajo dentro de ese periodo de tiempo. Como han demostrado las pruebas de rendimiento, si las consultas complicadas se ejecutan al mismo tiempo que el archivado de los registros de auditoría, se esperan problemas de rendimiento.
Modificar una tarea planificada
Para obtener más información, consulte Procedimiento ADMIN_TASK_UPDATE: actualizar una tarea existente.
- Para modificar una tarea de actualización de auditoría planificada para obtener los últimos registros de auditoría en las tablas de auditoría cada 20 minutos:
CALL SYSPROC.ADMIN_TASK_UPDATE( 'AUDIT_UPDATE', NULL, NULL, NULL, '*/20 * * * *', 'Periodically update to audit tables every 20 minutes' );
- Para eliminar la tarea de actualización de auditoría planificada:
CALL SYSPROC.ADMIN_TASK_REMOVE( 'AUDIT_UPDATE', NULL );
Supervisar el estado de la tarea de actualización de auditoría planificada
select * from SYSTOOLS.ADMIN_TASK_STATUS;
NAME TASKID STATUS AGENT_ID INVOCATION BEGIN_TIME END_TIME SQLCODE SQLSTATE SQLERRMC RC
------------- ------- ---------- ------------ ----------- -------------------------- -------------------------- -------- -------- -------- -----
AUDIT_UPDATE 1 COMPLETE 16433 1 2018-07-23-21.50.00.135211 2018-07-23-21.50.10.584127 0 x'' 0
AUDIT_UPDATE 1 RUNNING 16448 2 2018-07-23-21.55.00.608060 - - - - -
2 record(s) selected.
Cargar los registros de auditoría más recientes en las tablas AUDIT.*, inmediatamente
CALL AUDIT.UPDATE();
SQL1307N Se ha producido un error durante la invocación del recurso de comprobación de seguridad. Código de razón: "9".
Este mensaje indica que no se produjo ninguna actividad desde la última vez que las tablas de auditoría se cargaron con datos. No indica un error del sistema.