Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse para obtener una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
Implemente análisis de comportamiento de usuario basados en IA con Oracle Database 23ai, Oracle Data Safe y Oracle APEX
Introducción
A medida que los entornos de base de datos se vuelven más complejos, es fundamental proteger los datos confidenciales y detectar comportamientos anómalos de los usuarios. Este proyecto aprovecha los logs de Oracle Data Safe, Oracle Machine Learning for SQL (OML4SQL) y Oracle Database 23ai para mejorar User Behavior Analytics (UBA), identificando patrones de acceso inusuales y posibles amenazas de seguridad.
En este tutorial paso a paso se muestra cómo implantar la detección de anomalías basada en IA mediante Oracle Machine Learning (OML) y Oracle APEX, lo que permite la supervisión de la seguridad en tiempo real. Diseñada para administradores de seguridad de bases de datos, administradores de AutoML, administradores de IA/ML y desarrolladores de APEX, esta solución refuerza la seguridad de las bases de datos integrando las capacidades de IA/ML de Oracle para la detección proactiva de amenazas.
En esencia, el proyecto utiliza One Class Support Vector Machines (SVM), un algoritmo de aprendizaje automático no supervisado que aprende el comportamiento normal del usuario y marca las desviaciones como anomalías. Mediante el análisis de funciones como el total de inicios de sesión y la duración media de la sesión, el modelo identifica la actividad irregular, lo que ayuda a detectar posibles amenazas de seguridad e intentos de acceso no autorizados.
Caso de uso: Detección de anomalías de usuarios de base de datos.
Este caso de uso se centra en la detección de actividades anómalas de conexión y desconexión de usuarios en un entorno de base de datos Oracle mediante el análisis de eventos de conexión y desconexión. El sistema identifica patrones sospechosos, como duraciones de sesiones inusuales o frecuencias de conexión irregulares, y visualiza estadísticas a través de un panel de control de Oracle APEX, lo que permite a los administradores proteger de forma proactiva la base de datos.
Al aprovechar la IA y los análisis de seguridad, este enfoque marca los patrones anormales de inicio de sesión y cierre de sesión, lo que ayuda a mitigar las posibles amenazas de seguridad.
Aspectos importantes:
- Detección basada en IA: los modelos de aprendizaje automático identifican desviaciones con respecto al comportamiento normal del usuario.
- Supervisión en tiempo real: los paneles de control de Oracle APEX proporcionan estadísticas de seguridad continuas.
- Mitigación de riesgos proactiva: la detección temprana de anomalías refuerza la seguridad de la base de datos y reduce los riesgos potenciales.
Público Objetivo
-
Administradores de bases de datos (DBA) que gestionan bases de datos Oracle.
-
Administradores de seguridad de OCI que garantizan el cumplimiento de la seguridad de la base de datos.
-
Analistas de seguridad que utilizan las herramientas de seguridad de Oracle para la detección de amenazas.
Objetivos
Implementa UBA basado en IA en un entorno OCI integrando:
-
Oracle Database 23ai para el procesamiento de datos.
-
Oracle Data Safe para auditoría de seguridad y análisis de logs.
-
OML4SQL para la detección de anomalías basada en IA.
-
Oracle APEX para la visualización en tiempo real.
El objetivo principal es identificar el comportamiento anómalo del usuario mediante el análisis de los juegos de datos de eventos de conexión de Oracle Data Safe, lo que permite la detección proactiva de amenazas y una mayor seguridad de la base de datos.
Requisitos
-
Acceso a una instancia de Oracle Database 23ai con Data Warehouse como tipo de carga de trabajo.
-
Oracle Data Safe configurado y registrado con bases de datos de destino.
-
Conocimientos básicos de SQL, aprendizaje automático (ML) y Oracle APEX.
Tarea 1: Descargar juego de datos de evento de conexión y desconexión de Oracle Data Safe
Genere y descargue un informe filtrado de eventos de conexión y desconexión de Oracle Data Safe y, a continuación, conviértalo en CSV para la importación de la base de datos.
-
Conéctese a la consola de OCI, vaya a Bases de datos de Oracle, Data Safe, Auditoría de actividad, Informes de auditoría y haga clic en Toda actividad.
-
Aplique filtros para capturar eventos de conexión y desconexión.
-
Genere el informe y descárguelo en formato
.xls
. Por ejemplo,Datasafe_LOGIN_DatasetJan2024-Feb2025_V2.xls
. -
Cambie el nombre del archivo al formato
.csv
para cargarlo en Oracle Autonomous Database. Por ejemplo,Datasafe_LOGIN_DatasetJan2024-Feb2025_V2.csv
.
Tarea 2: Creación de un usuario en Oracle Database 23ai Autonomous Database
Cree un usuario denominado OML_USER
con OML y acceso web necesarios en Oracle Database 23ai.
-
Vaya a la consola de OCI, vaya a Oracle Databases y haga clic en Autonomous Database.
-
Haga clic en Acciones de base de datos y Usuarios de base de datos.
-
Cree un usuario denominado
OML_USER
con OML y Acceso web.
Tarea 3: Carga del juego de datos en Oracle Database 23ai Autonomous Database
Use Carga de datos para cargar el juego de datos CSV, verificar la integridad de los datos y garantizar una carga adecuada.
-
Conéctese como
OML_USER
mediante el enlace de acceso web. -
Vaya a Data Studio y haga clic en Carga de datos.
-
Elimine la sección de comentarios del archivo CSV y asegúrese de que empieza por las cabeceras de columna.
-
Haga clic en Cargar datos, seleccione el archivo CSV y configure el nombre de la tabla.
-
Haga clic en Iniciar y ejecutar para cargar los datos.
-
Verifique el estado de carga de datos y corrija las filas rechazadas.
Tarea 4: Validación y limpieza de los datos
Procese el juego de datos mediante procedimientos SQL para eliminar inconsistencias y preparar los datos para el análisis.
-
Vaya a Desarrollo y haga clic en SQL como
OML_USER
. -
Cree una tabla temporal (
datasafe_audit_logs
) y procese los datos mediante un procedimiento SQL.- Inserte registros de
DATASAFE_LOGIN_RAW_DATASET
endatasafe_audit_logs
. - Suprimir registros LOGOFF que no tienen registros LOGON correspondientes.
- Suprimir registros LOGON si no existe ningún evento LOGOFF con un registro de hora posterior.
CREATE TABLE datasafe_audit_logs ( target VARCHAR2(100), db_user VARCHAR2(100), client_host VARCHAR2(100), event VARCHAR2(50), object VARCHAR2(100), operation_status VARCHAR2(50), operation_time TIMESTAMP );
Ejecute el procedimiento para limpiar el juego de datos.
CREATE OR REPLACE PROCEDURE process_datasafe_audit_logs AS BEGIN -- Step 1: Insert data from raw dataset to audit logs INSERT INTO datasafe_audit_logs ( TARGET, DB_USER, CLIENT_HOST, EVENT, OBJECT, OPERATION_STATUS, OPERATION_TIME ) SELECT TARGET, DB_USER, CLIENT_HOST, EVENT, OBJECT, OPERATION_STATUS, CAST(OPERATION_TIME AS TIMESTAMP(6)) -- Convert DATE to TIMESTAMP(6) FROM DATASAFE_LOGIN_RAW_DATASET WHERE OPERATION_STATUS = 'SUCCESS'; -- Commit the insertion COMMIT; -- Step 2: Delete LOGOFF events that do not have a corresponding LOGON event DELETE FROM datasafe_audit_logs a WHERE a.EVENT = 'LOGOFF' AND NOT EXISTS ( SELECT 1 FROM datasafe_audit_logs b WHERE a.TARGET = b.TARGET AND a.DB_USER = b.DB_USER AND a.CLIENT_HOST = b.CLIENT_HOST AND b.EVENT = 'LOGON' ); -- Step 3: Delete LOGON events that do not have a corresponding LOGOFF event -- with an OPERATION_TIME that is greater than or equal to the LOGON event. DELETE FROM datasafe_audit_logs a WHERE a.EVENT = 'LOGON' AND NOT EXISTS ( SELECT 1 FROM datasafe_audit_logs b WHERE a.TARGET = b.TARGET AND a.DB_USER = b.DB_USER AND a.CLIENT_HOST = b.CLIENT_HOST AND b.EVENT = 'LOGOFF' AND b.OPERATION_TIME >= a.OPERATION_TIME -- Ensure LOGOFF happened after or at the same time ); -- Commit the deletions COMMIT; END process_datasafe_audit_logs; / EXEC process_datasafe_audit_logs;
- Inserte registros de
Tarea 5: Creación de un bloc de notas de Oracle Machine Learning
Configure un bloc de notas de OML en OML_USER
para realizar la detección de anomalías y el análisis del comportamiento del usuario.
-
Vaya a Desarrollo y haga clic en Oracle Machine Learning.
-
Conéctese como
OML_USER
y cree un nuevo bloc de notas.
Tarea 6: Análisis de anomalías de usuario de base de datos con OML4SQL
Analice las anomalías de los usuarios de la base de datos calculando las duraciones de la sesión y detectando patrones inusuales mediante SQL y OML4SQL.
-
Mueva el cursor a la parte inferior del párrafo para seleccionar SQL para OML4SQL y otros componentes como OML4Py, OML4R, etc. En este tutorial, utilizaremos OML4SQL.
-
Agregue el título del párrafo.
-
Cree una vista (
user_session_data
) para capturar datos de sesión.CREATE OR REPLACE VIEW user_session_data AS WITH session_data AS ( SELECT target, db_user, client_host, operation_time AS logon_time, LEAD(operation_time) OVER ( PARTITION BY target, db_user, client_host ORDER BY operation_time ) AS logoff_time FROM datasafe_audit_logs WHERE event = 'LOGON' ) SELECT * FROM session_data WHERE logoff_time IS NOT NULL;
-
Calcule las duraciones de la sesión y cree una vista de resumen (
user_activity_summary
). Agregue un párrafo SQL más y coloque la consulta y haga clic en el icono Run.CREATE OR REPLACE VIEW user_activity_summary AS SELECT target, db_user, client_host, COUNT(*) AS total_logins, ROUND( AVG( EXTRACT(DAY FROM (logoff_time - logon_time)) * 24 * 60 + EXTRACT(HOUR FROM (logoff_time - logon_time)) * 60 + EXTRACT(MINUTE FROM (logoff_time - logon_time)) + EXTRACT(SECOND FROM (logoff_time - logon_time)) / 60 ), 2 ) AS avg_session_duration_minutes FROM user_session_data GROUP BY target, db_user, client_host;
Tarea 7: Creación de un modelo de detección de anomalías
Utilice SVM de una clase en OML4SQL para crear un modelo de detección de anomalías basado en IA por base de datos de destino.
-
Mueva el cursor a la parte inferior del párrafo para seleccionar el script para OML4SQL.
-
Cree una tabla de configuración (
anomaly_model_settings
) para SVM de una clase.%script CREATE TABLE anomaly_model_settings ( setting_name VARCHAR2(30), setting_value VARCHAR2(4000) ); -- Insert settings for One-Class SVM BEGIN INSERT INTO anomaly_model_settings (setting_name, setting_value) VALUES ('ALGO_NAME', 'ALGO_SUPPORT_VECTOR_MACHINES'); INSERT INTO anomaly_model_settings (setting_name, setting_value) VALUES ('SVMS_OUTLIER_RATE', '0.05'); -- 5% of data as anomalies COMMIT; END;
-
Cree un modelo de detección de anomalías para cada base de datos de destino mediante
DBMS_DATA_MINING.CREATE_MODEL
.%script DECLARE CURSOR target_cursor IS SELECT DISTINCT target FROM user_activity_summary; BEGIN FOR target_rec IN target_cursor LOOP DBMS_DATA_MINING.CREATE_MODEL( model_name => 'ANOMALY_DETECTION_MODEL_' || REPLACE(target_rec.target, ' ', '_'), mining_function => dbms_data_mining.classification, data_table_name => 'USER_ACTIVITY_SUMMARY', case_id_column_name => 'DB_USER', target_column_name => NULL, -- No target column for anomaly detection settings_table_name => 'ANOMALY_MODEL_SETTINGS' ); END LOOP; END;
-
Verifique la creación del modelo.
%sql SELECT model_name, mining_function, algorithm, creation_date FROM user_mining_models where model_name like 'ANOMALY_DETECTION_MODEL_%';
Tarea 8: Aplicación del modelo para detectar anomalías
Ejecute predicciones de anomalías para clasificar la actividad sospechosa de los usuarios y almacenar los resultados en una tabla estructurada.
-
Cree tablas para almacenar usuarios anómalos para cada base de datos de destino. Mueva el cursor a la parte inferior del párrafo para seleccionar el script para OML4SQL.
.%script DECLARE CURSOR target_cursor IS SELECT DISTINCT target FROM user_activity_summary; BEGIN FOR target_rec IN target_cursor LOOP EXECUTE IMMEDIATE ' CREATE TABLE anomalous_users_' || REPLACE(target_rec.target, ' ', '_') || ' AS SELECT target, db_user, client_host, total_logins, avg_session_duration_minutes FROM ( SELECT target, db_user, client_host, total_logins, avg_session_duration_minutes, PREDICTION(ANOMALY_DETECTION_MODEL_' || REPLACE(target_rec.target, ' ', '_') || ' USING *) AS prediction FROM user_activity_summary WHERE target = ''' || target_rec.target || ''' ) WHERE prediction = 0'; -- Filter for anomalous users END LOOP; END;
-
Revise los datos de usuario anómalos.
%sql SELECT * FROM ANOMALOUS_USERS_ADBIDCS3 UNION ALL SELECT * FROM ANOMALOUS_USERS_DBAAS23PDB UNION ALL SELECT * FROM ANOMALOUS_USERS_DBAAS23PDB2;
Tarea 9: Visualización de anomalías en Oracle APEX
Desarrolle un panel de control interactivo con gráficos para supervisar y analizar la actividad anómala de la base de datos en tiempo real.
-
Inicie Oracle APEX desde la consola de OCI.
-
Conéctese como
OML_USER
y cree una nueva aplicación. -
Cree un panel de control con cuatro gráficos.
-
Gráfico 1: Tabla de usuario sospechoso (informe clásico).
SQL : %sql SELECT * FROM ( SELECT * FROM ANOMALOUS_USERS_ADBIDCS3 UNION ALL SELECT * FROM ANOMALOUS_USERS_DBAAS23PDB UNION ALL SELECT * FROM ANOMALOUS_USERS_DBAAS23PDB2 ) ORDER BY avg_session_duration_minutes DESC;
-
Gráfico 2: Usuarios anómalos por base de datos (gráfico circular).
SQL : %sql SELECT TARGET, COUNT(DB_USER) AS anomaly_count FROM ( SELECT * FROM ANOMALOUS_USERS_ADBIDCS3 UNION ALL SELECT * FROM ANOMALOUS_USERS_DBAAS23PDB UNION ALL SELECT * FROM ANOMALOUS_USERS_DBAAS23PDB2 ) GROUP BY TARGET;
-
Gráfico 3: Tendencias de duración de sesión (gráfico de líneas).
SELECT DB_USER, (AVG(AVG_SESSION_DURATION_MINUTES) / 60) AS session_duration_hours, TARGET FROM ( SELECT * FROM ANOMALOUS_USERS_ADBIDCS3 UNION ALL SELECT * FROM ANOMALOUS_USERS_DBAAS23PDB UNION ALL SELECT * FROM ANOMALOUS_USERS_DBAAS23PDB2 ) GROUP BY DB_USER, TARGET;
-
Gráfico 4: Usuarios principales con más anomalías (gráfico de barras)
SQL : %sql SELECT DB_USER AS x_value, -- Ensure DB_USER is used as the category (X-Axis) COUNT(*) AS y_value, -- Anomaly count or other metric TARGET FROM ( SELECT * FROM ANOMALOUS_USERS_ADBIDCS3 UNION ALL SELECT * FROM ANOMALOUS_USERS_DBAAS23PDB UNION ALL SELECT * FROM ANOMALOUS_USERS_DBAAS23PDB2 ) GROUP BY DB_USER, TARGET ORDER BY y_value DESC;
-
-
Ejecute la página y comparta la URL del panel de control con su equipo.
Pasos Siguientes
En este tutorial se muestra un enfoque basado en IA para la seguridad de la base de datos mediante Oracle Database 23ai, Oracle Data Safe y Oracle APEX. Aquí nosotros,
- Datos de conexión y desconexión procesados para analizar la duración de la sesión.
- Se ha creado un modelo de detección de anomalías con OML4SQL.
- Se visualizan los resultados en un panel de control de Oracle APEX para la supervisión en tiempo real.
Al integrar el aprendizaje automático y los paneles de control interactivos, los equipos de seguridad pueden detectar y mitigar de forma proactiva las actividades sospechosas. Esta solución escalable se extiende a la detección de fraudes, la seguridad de la red y mucho más, aprovechando las capacidades integradas de IA/AA de Oracle para una implementación perfecta.
Enlaces relacionados
-
Introducción a Notebooks Classic para análisis y visualización de datos
-
Presentación de las nuevas funciones de Oracle Machine Learning en Oracle Database 23ai
Agradecimientos
-
Autor: Alex Kovuru (arquitecto principal de nube)
-
Colaborador - Indiradarshni Balasundaram (Ingeniero sénior de la nube)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Implement AI-Powered User Behavior Analytics with Oracle Database 23ai, Oracle Data Safe and Oracle APEX
G28816-01
Copyright ©2025, Oracle and/or its affiliates.