Note:

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.

Actualización de IMDS de instancia

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:

Público Objetivo

Objetivos

Implementa UBA basado en IA en un entorno OCI integrando:

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

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.

  1. 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.

  2. Aplique filtros para capturar eventos de conexión y desconexión.

    Navegar a compartimentos

  3. Genere el informe y descárguelo en formato .xls. Por ejemplo, Datasafe_LOGIN_DatasetJan2024-Feb2025_V2.xls.

  4. 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.

  1. Vaya a la consola de OCI, vaya a Oracle Databases y haga clic en Autonomous Database.

  2. Haga clic en Acciones de base de datos y Usuarios de base de datos.

    Seleccione Create Compartment

  3. Cree un usuario denominado OML_USER con OML y Acceso web.

    Seleccione Create Compartment

    Seleccione Create Compartment

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.

  1. Conéctese como OML_USER mediante el enlace de acceso web.

    Seleccione Create Identity Domain

  2. Vaya a Data Studio y haga clic en Carga de datos.

    Seleccione Create Identity Domain

  3. Elimine la sección de comentarios del archivo CSV y asegúrese de que empieza por las cabeceras de columna.

    Seleccione Create Identity Domain

  4. Haga clic en Cargar datos, seleccione el archivo CSV y configure el nombre de la tabla.

    Seleccione Create Identity Domain

    Seleccione Create Identity Domain

    Seleccione Create Identity Domain

    Seleccione Create Identity Domain

  5. Haga clic en Iniciar y ejecutar para cargar los datos.

    Seleccione Create Identity Domain

  6. Verifique el estado de carga de datos y corrija las filas rechazadas.

    Seleccione Create Identity Domain

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.

  1. Vaya a Desarrollo y haga clic en SQL como OML_USER.

    Seleccione Create Identity Domain

  2. Cree una tabla temporal (datasafe_audit_logs) y procese los datos mediante un procedimiento SQL.

    • Inserte registros de DATASAFE_LOGIN_RAW_DATASET en datasafe_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;
    

    Seleccione Create Identity Domain

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.

  1. Vaya a Desarrollo y haga clic en Oracle Machine Learning.

    Seleccione Create Identity Domain

  2. Conéctese como OML_USER y cree un nuevo bloc de notas.

    Seleccione Create Identity Domain

    Seleccione Create Identity Domain

    Seleccione Create Identity Domain

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.

  1. 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.

    Seleccione Create Identity Domain

  2. Agregue el título del párrafo.

    Seleccione Create Identity Domain

  3. 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;
    

    Seleccione Create Identity Domain

  4. 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;
    

    Seleccione Create Identity Domain

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.

  1. Mueva el cursor a la parte inferior del párrafo para seleccionar el script para OML4SQL.

    Seleccione Create Identity Domain

  2. 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;
    

    Seleccione Create Identity Domain

  3. 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;
    

    Seleccione Create Identity Domain

  4. 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_%';
    

    Seleccione Create Identity Domain

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.

  1. 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;
    

    Seleccione Create Identity Domain

  2. 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;
    

    Seleccione Create Identity Domain

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.

  1. Inicie Oracle APEX desde la consola de OCI.

    Seleccione Create Identity Domain

    Seleccione Create Identity Domain

  2. Conéctese como OML_USER y cree una nueva aplicación.

    Seleccione Create Identity Domain

    Seleccione Create Identity Domain

  3. Cree un panel de control con cuatro gráficos.

    Seleccione Create Identity Domain

    Seleccione Create Identity Domain

    • 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;
      

      Seleccione Create Identity Domain

    • 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;
      

      Seleccione Create Identity Domain

      Seleccione Create Identity Domain

    • 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;
      

      Seleccione Create Identity Domain

      Seleccione Create Identity Domain

    • 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;
      

      Seleccione Create Identity Domain

      Seleccione Create Identity Domain

  4. Ejecute la página y comparta la URL del panel de control con su equipo.

    Seleccione Create Identity Domain

    Seleccione Create Identity Domain

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,

  1. Datos de conexión y desconexión procesados para analizar la duración de la sesión.
  2. Se ha creado un modelo de detección de anomalías con OML4SQL.
  3. 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.

Agradecimientos

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.