Remarques :

Implémentez des analyses du comportement des utilisateurs basées sur l'IA avec Oracle Database 23ai, Oracle Data Safe et Oracle APEX

Introduction

Au fur et à mesure que les environnements de base de données deviennent plus complexes, il est essentiel de sécuriser les données sensibles et de détecter les comportements anormaux des utilisateurs. Ce projet tire parti des journaux Oracle Data Safe, d'Oracle Machine Learning for SQL (OML4SQL) et d'Oracle Database 23ai pour améliorer les analyses de comportement des utilisateurs (UBA), en identifiant les modèles d'accès inhabituels et les menaces de sécurité potentielles.

Ce tutoriel étape par étape explique comment implémenter la détection d'anomalies alimentée par l'IA à l'aide d'Oracle Machine Learning (OML) et d'Oracle APEX, ce qui permet la surveillance de la sécurité en temps réel. Conçue pour les administrateurs de la sécurité des bases de données, les administrateurs AutoML, les administrateurs AI/ML et les développeurs APEX, cette solution renforce la sécurité des bases de données en intégrant les fonctionnalités d'IA/ML d'Oracle pour la détection proactive des menaces.

Au cœur du projet, le projet utilise des machines vectorielles de support à une classe (SVM), un algorithme d'apprentissage automatique non supervisé qui apprend le comportement normal de l'utilisateur et signale les écarts en tant qu'anomalies. En analysant des fonctionnalités telles que le nombre total de connexions et la durée moyenne de session, le modèle identifie les activités irrégulières, ce qui permet de détecter les menaces de sécurité potentielles et les tentatives d'accès non autorisé.

Mise à jour IMDS de l'instance

Cas d'emploi : détection d'anomalies des utilisateurs de base de données.

Ce cas d'emploi est axé sur la détection des activités de connexion et de déconnexion utilisateur anormales dans un environnement de base de données Oracle en analysant les événements de connexion et de déconnexion. Le système identifie des modèles suspects, tels que des durées de session inhabituelles ou des fréquences de connexion irrégulières, et visualise les informations via un tableau de bord Oracle APEX, ce qui permet aux administrateurs de sécuriser la base de données de manière proactive.

En tirant parti de l'IA et des analyses de sécurité, cette approche signale les modèles de connexion et de déconnexion anormaux, ce qui contribue à atténuer les menaces de sécurité potentielles.

Points clés :

Public

Objectifs

Implémentez l'UBA alimenté par l'IA dans un environnement OCI en intégrant :

L'objectif principal est d'identifier les comportements anormaux des utilisateurs en analysant les ensembles de données d'événement de connexion Oracle Data Safe, ce qui permet une détection proactive des menaces et une sécurité améliorée des bases de données.

Prérequis

Tâche 1 : téléchargement de l'ensemble de données d'événement de connexion et de déconnexion à partir d'Oracle Data Safe

Générez et téléchargez un rapport filtré d'événements de connexion et de déconnexion à partir d'Oracle Data Safe, puis convertissez-le au format CSV pour l'import de base de données.

  1. Connectez-vous à la console OCI, accédez à Bases de données Oracle, à Data Safe, à Audit d'activité, à Rapports d'audit et cliquez sur Toutes les activités.

  2. Appliquez des filtres pour capturer les événements de connexion et de déconnexion.

    Accéder aux compartiments

  3. Générez le rapport et téléchargez-le au format .xls. Par exemple, Datasafe_LOGIN_DatasetJan2024-Feb2025_V2.xls.

  4. Renommez le fichier au format .csv pour le chargement dans Oracle Autonomous Database. Par exemple, Datasafe_LOGIN_DatasetJan2024-Feb2025_V2.csv.

Tâche 2 : création d'un utilisateur dans Oracle Database 23ai Autonomous Database

Créez un utilisateur nommé OML_USER avec l'OML et l'accès Web nécessaires dans Oracle Database 23ai.

  1. Accédez à la console OCI, accédez à Bases de données Oracle et cliquez sur Autonomous Database.

  2. Cliquez sur Database Actions et sur Utilisateurs de base de données.

    Sélectionner Créer un compartiment

  3. Créez un utilisateur nommé OML_USER avec OML et Web Access.

    Sélectionner Créer un compartiment

    Sélectionner Créer un compartiment

Tâche 3 : chargement de l'ensemble de données dans Oracle Database 23ai Autonomous Database

Utilisez le chargement de données pour charger le jeu de données CSV, vérifier l'intégrité des données et garantir un chargement correct.

  1. Connectez-vous en tant qu'utilisateur OML_USER à l'aide du lien d'accès Web.

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  2. Accédez à Data Studio et cliquez sur Chargement des données.

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  3. Supprimez la section de commentaire du fichier CSV et assurez-vous qu'elle commence par des en-têtes de colonne.

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  4. Cliquez sur Charger les données, sélectionnez le fichier CSV et configurez le nom de la table.

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  5. Cliquez sur Démarrer et exécuter pour charger les données.

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  6. Vérifiez le statut de chargement des données et corrigez les lignes rejetées.

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

Tâche 4 : valider et nettoyer les données

Traitez l'ensemble de données à l'aide de procédures SQL pour supprimer les incohérences et préparer les données pour l'analyse.

  1. Accédez à Development (Développement) et cliquez sur SQL en tant que OML_USER.

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  2. Créez une table intermédiaire (datasafe_audit_logs) et traitez les données à l'aide d'une procédure SQL.

    • Insérer des enregistrements de DATASAFE_LOGIN_RAW_DATASET dans datasafe_audit_logs.
    • Supprimer les enregistrements LOGOFF qui n'ont aucun enregistrement LOGON correspondant.
    • Supprimer les enregistrements LOGON s'il n'existe aucun événement LOGOFF avec un horodatage ultérieur.
    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
    );
    

    Exécutez la procédure de nettoyage de l'ensemble de données.

     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;
    

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

Tâche 5 : création d'un bloc-notes Oracle Machine Learning

Configurez un bloc-notes OML sous OML_USER pour effectuer une détection d'anomalies et une analyse du comportement des utilisateurs.

  1. Accédez à Développement et cliquez sur Oracle Machine Learning.

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  2. Connectez-vous en tant qu'utilisateur OML_USER et créez un bloc-notes.

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

Tâche 6 : analyse des anomalies utilisateur de base de données avec OML4SQL

Analysez les anomalies des utilisateurs de base de données en calculant la durée des sessions et en détectant des modèles inhabituels à l'aide de SQL et de OML4SQL.

  1. Déplacez le curseur en bas du paragraphe pour sélectionner SQL pour OML4SQL et d'autres composants tels que OML4Py, OML4R, etc. Dans ce tutoriel, nous allons utiliser OML4SQL.

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  2. Ajoutez le titre du paragraphe.

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  3. Créez une vue (user_session_data) pour capturer les données de session.

    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;
    

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  4. Calculez les durées de session et créez une vue récapitulative (user_activity_summary). Ajoutez un autre paragraphe SQL, placez la requête et cliquez sur l'icône Run (Exécuter).

    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;
    

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

Tâche 7 : création d'un modèle de détection d'anomalies

Utilisez SVM à une classe dans OML4SQL pour créer un modèle de détection d'anomalies basé sur l'IA par base de données cible.

  1. Déplacez le curseur en bas du paragraphe pour sélectionner le script pour OML4SQL.

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  2. Créez une table de paramètres (anomaly_model_settings) pour le SVM à une 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;
    

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  3. Créez un modèle de détection d'anomalies pour chaque base de données cible à l'aide de 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;
    

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  4. Vérifiez la création du modèle.

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

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

Tâche 8 : appliquer le modèle pour détecter les anomalies

Exécutez des prévisions d'anomalies pour classer l'activité des utilisateurs suspects et stocker les résultats dans une table structurée.

  1. Créez des tables pour stocker les utilisateurs anormaux pour chaque base de données cible. Déplacez le curseur en bas du paragraphe pour sélectionner le script pour 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;
    

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  2. Passez en revue les données utilisateur anormales.

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

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

Tâche 9 : visualisation des anomalies dans Oracle APEX

Développez un tableau de bord interactif avec des graphiques pour surveiller et analyser l'activité anormale des bases de données en temps réel.

  1. Lancez Oracle APEX à partir de la console OCI.

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  2. Connectez-vous en tant qu'utilisateur OML_USER et créez une application.

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  3. Créez un tableau de bord avec quatre graphiques.

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

    • Graphique 1 : Table des utilisateurs suspects (état classique).

      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;
      

      Sélectionnez Create Identity Domain (Créer un domaine d'identité).

    • Graphique 2 : Utilisateurs anormaux par base de données (graphique à secteurs).

      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;
      

      Sélectionnez Create Identity Domain (Créer un domaine d'identité).

      Sélectionnez Create Identity Domain (Créer un domaine d'identité).

    • Graphique 3 : Tendances de durée de session (graphique à courbes).

      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;
      

      Sélectionnez Create Identity Domain (Créer un domaine d'identité).

      Sélectionnez Create Identity Domain (Créer un domaine d'identité).

    • Graphique 4 : Principaux utilisateurs présentant le plus d'anomalies (graphique à barres).

      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;
      

      Sélectionnez Create Identity Domain (Créer un domaine d'identité).

      Sélectionnez Create Identity Domain (Créer un domaine d'identité).

  4. Exécutez la page et partagez l'URL du tableau de bord avec votre équipe.

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

    Sélectionnez Create Identity Domain (Créer un domaine d'identité).

Etapes suivantes

Ce tutoriel présente une approche de la sécurité des bases de données basée sur l'IA à l'aide d'Oracle Database 23ai, d'Oracle Data Safe et d'Oracle APEX. Ici, nous,

  1. Données de connexion et de déconnexion traitées pour analyser les durées de session.
  2. Création d'un modèle de détection d'anomalies à l'aide de OML4SQL.
  3. Résultats visualisés dans un tableau de bord Oracle APEX pour la surveillance en temps réel.

En intégrant le machine learning et les tableaux de bord interactifs, les équipes de sécurité peuvent détecter et atténuer de manière proactive les activités suspectes. Cette solution évolutive s'étend à la détection des fraudes, à la sécurité réseau, etc., en tirant parti des fonctionnalités d'IA/ML intégrées d'Oracle pour une implémentation transparente.

Remerciements

Ressources de formation supplémentaires

Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir la documentation produit, consultez le site Oracle Help Center.