주:

Oracle Database 23ai, Oracle Data Safe 및 Oracle APEX를 통해 AI 기반 사용자 행동 분석 구현

소개

데이터베이스 환경이 더욱 복잡해짐에 따라 민감한 데이터를 보호하고 비정상적인 사용자 행동을 감지하는 것이 중요합니다. 이 프로젝트는 Oracle Data Safe 로그, Oracle Machine Learning for SQL(OML4SQL) 및 Oracle Database 23ai를 활용하여 사용자 행동 분석(UBA)을 개선하고 비정상적인 액세스 패턴 및 잠재적 보안 위협을 식별합니다.

이 단계별 사용지침서에서는 Oracle Machine Learning(OML)Oracle APEX를 사용하여 AI 기반 이상 감지를 구현하여 실시간 보안 모니터링을 가능하게 하는 방법을 보여줍니다. 데이터베이스 보안 관리자, AutoML 관리자, AI/ML 관리자APEX 개발자를 위해 설계된 이 솔루션은 사전 예방적 위협 감지를 위해 Oracle의 AI/ML 기능을 통합하여 데이터베이스 보안을 강화합니다.

이 프로젝트의 핵심은 One Class Support Vector Machines (SVMs)을 활용하는데, 이 알고리즘은 일반적인 사용자 행동을 학습하고 편차를 이상으로 표시합니다. 이 모델은 전체 로그인 및 평균 세션 기간과 같은 기능을 분석함으로써 불규칙한 활동을 식별하여 잠재적인 보안 위협 및 무단 액세스 시도를 감지할 수 있습니다.

인스턴스 IMDS 업데이트

사용 사례: 데이터베이스 사용자 변형 감지.

이 사용 사례에서는 로그온 및 로그오프 이벤트를 분석하여 Oracle 데이터베이스 환경에서 비정상적인 사용자 로그인 및 로그아웃 작업을 감지하는 방법을 중점적으로 다룹니다. 시스템에서는 비정상적인 세션 기간 또는 불규칙한 로그인 빈도와 같은 의심스러운 패턴을 식별하고 Oracle APEX 대시보드를 통해 통찰력을 시각화하여 관리자가 사전에 데이터베이스를 보호할 수 있도록 합니다.

이 접근 방식은 AI 및 보안 분석을 활용하여 비정상적인 로그온 및 로그오프 패턴에 플래그를 지정함으로써 잠재적인 보안 위협을 완화합니다.

주요 특징:

대상

목표

다음을 통합하여 OCI 환경에서 AI 기반 UBA 구현:

주요 목적은 Oracle Data Safe 로그온 이벤트 데이터 세트를 분석하여 비정상적 사용자 동작을 식별하고 사전 예방적 위협 감지 및 향상된 데이터베이스 보안을 지원하는 것입니다.

필요 조건

작업 1: Oracle Data Safe에서 로그온 및 로그오프 이벤트 데이터 집합 다운로드

Oracle Data Safe에서 로그온 및 로그오프 이벤트에 대한 필터링된 보고서를 생성 및 다운로드한 후 데이터베이스 임포트를 위해 CSV로 변환합니다.

  1. OCI 콘솔에 로그인하여 Oracle 데이터베이스, Data Safe, 작업 감사, 감사 보고서로 이동하고 모든 작업을 누릅니다.

  2. 필터를 적용하여 로그온 및 로그오프 이벤트를 캡처합니다.

    구획으로 이동

  3. 보고서를 생성하여 .xls 형식으로 다운로드합니다. 예: Datasafe_LOGIN_DatasetJan2024-Feb2025_V2.xls.

  4. Oracle Autonomous Database로 로드하기 위해 파일 이름을 .csv 형식으로 바꿉니다. 예: Datasafe_LOGIN_DatasetJan2024-Feb2025_V2.csv.

작업 2: Oracle Database 23ai Autonomous Database에서 사용자 생성

Oracle Database 23ai에서 필요한 OML 및 웹 액세스 권한을 가진 OML_USER라는 유저를 생성합니다.

  1. OCI 콘솔로 이동하여 Oracle Databases로 이동하고 Autonomous Database를 누릅니다.

  2. Database ActionsDatabase Users를 누릅니다.

    컴파트먼트 생성 선택

  3. OML웹 액세스를 사용하여 OML_USER라는 사용자를 만듭니다.

    컴파트먼트 생성 선택

    컴파트먼트 생성 선택

작업 3: Oracle Database 23ai Autonomous Database로 데이터 집합 로드

데이터 로드를 사용하여 CSV 데이터 집합을 업로드하고, 데이터 무결성을 확인하고, 적절한 로드를 확인합니다.

  1. 웹 액세스 링크를 사용하여 OML_USER로 로그인합니다.

    ID 도메인 생성 선택

  2. Data Studio로 이동하고 데이터 로드를 누릅니다.

    ID 도메인 생성 선택

  3. CSV 파일에서 의견 섹션을 제거하고 열 헤더로 시작하는지 확인하십시오.

    ID 도메인 생성 선택

  4. 데이터 로드를 누르고 CSV 파일을 선택한 다음 테이블 이름을 구성합니다.

    ID 도메인 생성 선택

    ID 도메인 생성 선택

    ID 도메인 생성 선택

    ID 도메인 생성 선택

  5. 데이터를 로드하려면 시작 및 실행을 누릅니다.

    ID 도메인 생성 선택

  6. 데이터 로드 상태를 확인하고 거부된 행을 수정하십시오.

    ID 도메인 생성 선택

작업 4: 데이터 검증 및 지우기

SQL 프로시저를 사용하여 데이터 집합을 처리하여 불일치를 제거하고 분석할 데이터를 준비합니다.

  1. Development로 이동하고 SQLOML_USER로 누릅니다.

    ID 도메인 생성 선택

  2. 스테이지 처리 테이블(datasafe_audit_logs)을 생성하고 SQL 프로시저를 사용하여 데이터를 처리합니다.

    • DATASAFE_LOGIN_RAW_DATASET의 레코드를 datasafe_audit_logs삽입합니다.
    • 해당 LOGON 레코드가 없는 LOGOFF 레코드를 삭제합니다.
    • LOGON 레코드는 이후 시간 기록의 LOGOFF 이벤트가 존재하지 않을 경우 삭제합니다.
    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
    );
    

    데이터 세트를 정리하는 절차를 실행합니다.

     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;
    

    ID 도메인 생성 선택

작업 5: Oracle Machine Learning 노트북 생성

변형 감지 및 사용자 동작 분석을 수행하려면 OML_USER 아래에 OML 노트북을 설정합니다.

  1. 개발로 이동하고 Oracle Machine Learning을 누릅니다.

    ID 도메인 생성 선택

  2. OML_USER로 로그인하고 새 노트북을 만듭니다.

    ID 도메인 생성 선택

    ID 도메인 생성 선택

    ID 도메인 생성 선택

작업 6: OML4SQL를 사용하여 데이터베이스 사용자 변형 분석

SQL 및 OML4SQL를 사용하여 세션 기간을 계산하고 비정상적인 패턴을 감지하여 데이터베이스 사용자 이상 징후를 분석합니다.

  1. 커서를 단락의 맨 아래로 이동하여 OML4SQL에 대한 SQL 및 OML4Py, OML4R 등의 기타 구성요소를 선택합니다. 이 자습서에서는 OML4SQL를 사용합니다.

    ID 도메인 생성 선택

  2. 단락의 제목을 추가합니다.

    ID 도메인 생성 선택

  3. 세션 데이터를 캡처할 뷰(user_session_data)를 생성합니다.

    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;
    

    ID 도메인 생성 선택

  4. 세션 기간을 계산하고 요약 뷰(user_activity_summary)를 생성합니다. SQL 단락을 하나 더 추가하고 query를 배치한 다음 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;
    

    ID 도메인 생성 선택

작업 7: 변형 감지 모델 빌드

OML4SQL에서 원클래스 SVM을 사용하여 대상 데이터베이스당 AI 기반 이상 감지 모델을 생성합니다.

  1. 단락의 맨 아래로 커서를 이동하여 OML4SQL에 대한 스크립트를 선택합니다.

    ID 도메인 생성 선택

  2. 일류 SVM에 대한 설정 테이블(anomaly_model_settings)을 생성합니다.

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

    ID 도메인 생성 선택

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

    ID 도메인 생성 선택

  4. 모델 생성을 확인합니다.

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

    ID 도메인 생성 선택

작업 8: 변형을 감지하기 위해 모델 적용

이상 예측을 실행하여 의심스러운 사용자 작업을 분류하고 결과를 구조화된 테이블에 저장합니다.

  1. 각 대상 데이터베이스에 대해 비정상적인 유저를 저장할 테이블을 생성합니다. 단락의 맨 아래로 커서를 이동하여 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;
    

    ID 도메인 생성 선택

  2. 비정상적인 사용자 데이터를 검토합니다.

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

    ID 도메인 생성 선택

작업 9: Oracle APEX에서 이상 시각화

비정상적인 데이터베이스 활동을 실시간으로 모니터링하고 분석할 수 있는 차트로 대화형 대시보드를 개발합니다.

  1. OCI 콘솔에서 Oracle APEX를 실행합니다.

    ID 도메인 생성 선택

    ID 도메인 생성 선택

  2. OML_USER로 로그인하여 새 응용 프로그램을 생성합니다.

    ID 도메인 생성 선택

    ID 도메인 생성 선택

  3. 네 개의 차트로 대시보드를 작성합니다.

    ID 도메인 생성 선택

    ID 도메인 생성 선택

    • 차트 1: 의심스러운 사용자 테이블(클래식 보고서).

      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;
      

      ID 도메인 생성 선택

    • 차트 2: 데이터베이스당 비정상 사용자(파이 차트)

      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;
      

      ID 도메인 생성 선택

      ID 도메인 생성 선택

    • 차트 3: 세션 기간 추세(라인 차트).

      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;
      

      ID 도메인 생성 선택

      ID 도메인 생성 선택

    • 차트 4: 변형이 가장 많은 최상위 사용자(막대 차트)

      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;
      

      ID 도메인 생성 선택

      ID 도메인 생성 선택

  4. 페이지를 실행하고 대시보드 URL을 팀과 공유하십시오.

    ID 도메인 생성 선택

    ID 도메인 생성 선택

다음 단계

이 사용지침서에서는 Oracle Database 23ai, Oracle Data Safe 및 Oracle APEX를 사용한 데이터베이스 보안에 대한 AI 기반 접근 방식을 보여주었습니다. 여기서 우리는,

  1. 세션 기간을 분석하기 위해 로그인 및 로그오프 데이터를 처리했습니다.
  2. OML4SQL를 사용하여 변형 감지 모델을 구축했습니다.
  3. 실시간 모니터링을 위해 Oracle APEX 대시보드에서 시각화된 결과를 제공합니다.

보안 팀은 머신 러닝과 대화형 대시보드를 통합하여 의심스러운 활동을 사전에 감지하고 완화할 수 있습니다. 이 확장 가능한 솔루션은 원활한 구현을 위해 Oracle의 내장 AI/ML 기능을 활용하여 사기 감지, 네트워크 보안 등으로 확장됩니다.

확인

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.