Nota

Implementa l'analisi del comportamento degli utenti basata sull'AI con Oracle Database 23ai, Oracle Data Safe e Oracle APEX

Introduzione

Man mano che gli ambienti di database diventano più complessi, è fondamentale proteggere i dati sensibili e rilevare comportamenti anomali degli utenti. Questo progetto utilizza i log di Oracle Data Safe, Oracle Machine Learning for SQL (OML4SQL) e Oracle Database 23ai per migliorare l'analisi del comportamento degli utenti (UBA), identificando pattern di accesso insoliti e potenziali minacce alla sicurezza.

Questo tutorial dettagliato spiega come implementare il rilevamento delle anomalie basato sull'intelligenza artificiale utilizzando Oracle Machine Learning (OML) e Oracle APEX, consentendo il monitoraggio della sicurezza in tempo reale. Progettata per gli amministratori della sicurezza del database, gli amministratori AutoML, gli amministratori AI/ML e gli sviluppatori APEX, questa soluzione rafforza la sicurezza del database integrando le funzionalità AI/ML di Oracle per il rilevamento proattivo delle minacce.

Alla base del progetto, il progetto utilizza SVM (One Class Support Vector Machines), un algoritmo di machine learning non supervisionato che apprende il normale comportamento degli utenti e segnala le deviazioni come anomalie. Analizzando funzionalità come i login totali e la durata media delle sessioni, il modello identifica le attività irregolari, aiutando a rilevare potenziali minacce alla sicurezza e tentativi di accesso non autorizzati.

Aggiornamento IMDS istanza

Caso d'uso: rilevamento anomalie utenti database.

Questo caso d'uso si concentra sul rilevamento di attività di login e logout degli utenti anomali in un ambiente di database Oracle analizzando gli eventi di logon e logoff. Il sistema identifica pattern sospetti come durate di sessione insolite o frequenze di login irregolari e visualizza insight tramite un dashboard di Oracle APEX, consentendo agli amministratori di proteggere il database in modo proattivo.

Sfruttando l'intelligenza artificiale e gli analytics di sicurezza, questo approccio contrassegna modelli anomali di accesso e logoff, aiutando a mitigare potenziali minacce alla sicurezza.

Informazioni chiave:

Destinatari

Obiettivi

Implementa un UBA basato sull'intelligenza artificiale in un ambiente OCI integrando:

L'obiettivo principale è identificare il comportamento anomalo degli utenti analizzando i set di dati degli eventi di accesso a Oracle Data Safe, consentendo il rilevamento proattivo delle minacce e una maggiore sicurezza del database.

Prerequisiti

Task 1: scaricare il data set dell'evento di collegamento e disconnessione da Oracle Data Safe

Generare e scaricare un report filtrato degli eventi di collegamento e logoff da Oracle Data Safe, quindi convertirlo in CSV per l'importazione del database.

  1. Eseguire il login a OCI Console, passare a Database Oracle, Data Safe, Audit attività, Report di audit e fare clic su Tutta l'attività.

  2. Applicare i filtri per acquisire gli eventi di collegamento e logoff.

    Passa ai compartimenti

  3. Generare il report e scaricarlo in formato .xls. Ad esempio, Datasafe_LOGIN_DatasetJan2024-Feb2025_V2.xls.

  4. Rinominare il file in formato .csv per il caricamento in Oracle Autonomous Database. Ad esempio, Datasafe_LOGIN_DatasetJan2024-Feb2025_V2.csv.

Task 2: Creare un utente in Oracle Database 23ai Autonomous Database

Crea un utente denominato OML_USER con OML e accesso Web necessari in Oracle Database 23ai.

  1. Andare alla console OCI, andare a Database Oracle e fare clic su Autonomous Database.

  2. Fare clic su Azioni database e su Utenti database.

    Seleziona crea compartimento

  3. Creare un utente denominato OML_USER con OML e Web Access.

    Seleziona crea compartimento

    Seleziona crea compartimento

Task 3: Carica il data set in Autonomous Database Oracle Database 23ai

Utilizzare Caricamento dati per caricare il data set CSV, verificare l'integrità dei dati e garantire il caricamento corretto.

  1. Eseguire il login come OML_USER utilizzando il collegamento di accesso Web.

    Seleziona Crea dominio Identity

  2. Passare a Data Studio e fare clic su Caricamento dati.

    Seleziona Crea dominio Identity

  3. Rimuovere la sezione dei commenti dal file CSV e assicurarsi che inizi con le intestazioni di colonna.

    Seleziona Crea dominio Identity

  4. Fare clic su Carica dati, selezionare il file CSV e configurare il nome della tabella.

    Seleziona Crea dominio Identity

    Seleziona Crea dominio Identity

    Seleziona Crea dominio Identity

    Seleziona Crea dominio Identity

  5. Fare clic su Avvia ed esegui per caricare i dati.

    Seleziona Crea dominio Identity

  6. Verificare lo stato di caricamento dati e correggere eventuali righe rifiutate.

    Seleziona Crea dominio Identity

Task 4: Convalida e cancella i dati

Elaborare il data set utilizzando le procedure SQL per rimuovere le incoerenze e preparare i dati per l'analisi.

  1. Passare a Sviluppo e fare clic su SQL come OML_USER.

    Seleziona Crea dominio Identity

  2. Creare una tabella intermedia (datasafe_audit_logs) ed elaborare i dati utilizzando una procedura SQL.

    • Inserisci record da DATASAFE_LOGIN_RAW_DATASET in datasafe_audit_logs.
    • Elimina i record LOGOFF privi di record LOGON corrispondenti.
    • Elimina i record LOGON se non esiste alcun evento LOGOFF con un indicatore orario successivo.
    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
    );
    

    Eseguire la procedura per pulire il set di dati.

     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;
    

    Seleziona Crea dominio Identity

Task 5: Creare un notebook Oracle Machine Learning

Impostare un notebook OML in OML_USER per eseguire il rilevamento delle anomalie e l'analisi del comportamento degli utenti.

  1. Passare a Sviluppo e fare clic su Oracle Machine Learning.

    Seleziona Crea dominio Identity

  2. Eseguire il login come OML_USER e creare un nuovo notebook.

    Seleziona Crea dominio Identity

    Seleziona Crea dominio Identity

    Seleziona Crea dominio Identity

Task 6: analizzare le anomalie degli utenti del database con OML4SQL

Analizzare le anomalie degli utenti del database calcolando le durate delle sessioni e rilevando pattern insoliti utilizzando SQL e OML4SQL.

  1. Spostare il cursore nella parte inferiore del paragrafo per selezionare SQL per OML4SQL e altri componenti quali OML4Py, OML4R e così via. In questo tutorial, utilizzeremo OML4SQL.

    Seleziona Crea dominio Identity

  2. Aggiungere il titolo del paragrafo.

    Seleziona Crea dominio Identity

  3. Creare una vista (user_session_data) per acquisire i dati della sessione.

    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;
    

    Seleziona Crea dominio Identity

  4. Calcolare le durate delle sessioni e creare una vista di riepilogo (user_activity_summary). Aggiungere un altro paragrafo SQL e inserire la query, quindi fare clic sull'icona Esegui.

    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;
    

    Seleziona Crea dominio Identity

Task 7: Creare un modello di rilevamento delle anomalie

Utilizzare SVM di una classe in OML4SQL per creare un modello di rilevamento delle anomalie basato sull'intelligenza artificiale per ogni database di destinazione.

  1. Spostare il cursore nella parte inferiore del paragrafo per selezionare lo script per OML4SQL.

    Seleziona Crea dominio Identity

  2. Creare una tabella delle impostazioni (anomaly_model_settings) per SVM di una classe.

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

    Seleziona Crea dominio Identity

  3. Creare un modello di rilevamento delle anomalie per ogni database di destinazione utilizzando 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;
    

    Seleziona Crea dominio Identity

  4. Verificare la creazione del modello.

    %sql
    SELECT model_name, mining_function, algorithm, creation_date FROM user_mining_models where model_name like 'ANOMALY_DETECTION_MODEL_%';
    

    Seleziona Crea dominio Identity

Task 8: Applicare il modello per rilevare anomalie

Esegui previsioni sulle anomalie per classificare l'attività utente sospetta e archiviare i risultati in una tabella strutturata.

  1. Creare tabelle per memorizzare gli utenti anomali per ogni database di destinazione. Spostare il cursore nella parte inferiore del paragrafo per selezionare lo script per 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;
    

    Seleziona Crea dominio Identity

  2. Esaminare i dati utente anomali.

    %sql
    SELECT * FROM ANOMALOUS_USERS_ADBIDCS3
    UNION ALL
    SELECT * FROM ANOMALOUS_USERS_DBAAS23PDB
    UNION ALL
    SELECT * FROM ANOMALOUS_USERS_DBAAS23PDB2;
    

    Seleziona Crea dominio Identity

Task 9: Visualizzare le anomalie in Oracle APEX

Sviluppa un dashboard interattivo con grafici per monitorare e analizzare le attività anomale del database in tempo reale.

  1. Avviare Oracle APEX da OCI Console.

    Seleziona Crea dominio Identity

    Seleziona Crea dominio Identity

  2. Eseguire il login come OML_USER e creare una nuova applicazione.

    Seleziona Crea dominio Identity

    Seleziona Crea dominio Identity

  3. Creare un dashboard con quattro grafici.

    Seleziona Crea dominio Identity

    Seleziona Crea dominio Identity

    • Grafico 1: tabella utenti sospetti (report classico).

      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;
      

      Seleziona Crea dominio Identity

    • Grafico 2: utenti anomali per database (grafico a torta).

      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;
      

      Seleziona Crea dominio Identity

      Seleziona Crea dominio Identity

    • Grafico 3: andamenti durata sessione (grafico a linee).

      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;
      

      Seleziona Crea dominio Identity

      Seleziona Crea dominio Identity

    • Grafico 4: primi utenti con il maggior numero di anomalie (grafico a barre).

      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;
      

      Seleziona Crea dominio Identity

      Seleziona Crea dominio Identity

  4. Eseguire la pagina e condividere l'URL del dashboard con il team.

    Seleziona Crea dominio Identity

    Seleziona Crea dominio Identity

Passi successivi

Questo tutorial ha mostrato un approccio basato sull'intelligenza artificiale alla sicurezza del database utilizzando Oracle Database 23ai, Oracle Data Safe e Oracle APEX. Qui noi,

  1. Dati di login e logoff elaborati per analizzare la durata delle sessioni.
  2. Ha creato un modello di rilevamento delle anomalie utilizzando OML4SQL.
  3. Risultati visualizzati in un dashboard Oracle APEX per il monitoraggio in tempo reale.

Integrando il machine learning e i dashboard interattivi, i team di sicurezza possono rilevare e mitigare in modo proattivo le attività sospette. Questa soluzione scalabile si estende al rilevamento delle frodi, alla sicurezza della rete e a molto altro ancora, sfruttando le funzionalità AI/ML integrate di Oracle per un'implementazione trasparente.

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione del prodotto, visita l'Oracle Help Center.