주:
- 이 자습서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 완료했으면 이러한 값을 자신의 클라우드 환경과 관련된 값으로 대체하십시오.
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)을 활용하는데, 이 알고리즘은 일반적인 사용자 행동을 학습하고 편차를 이상으로 표시합니다. 이 모델은 전체 로그인 및 평균 세션 기간과 같은 기능을 분석함으로써 불규칙한 활동을 식별하여 잠재적인 보안 위협 및 무단 액세스 시도를 감지할 수 있습니다.
사용 사례: 데이터베이스 사용자 변형 감지.
이 사용 사례에서는 로그온 및 로그오프 이벤트를 분석하여 Oracle 데이터베이스 환경에서 비정상적인 사용자 로그인 및 로그아웃 작업을 감지하는 방법을 중점적으로 다룹니다. 시스템에서는 비정상적인 세션 기간 또는 불규칙한 로그인 빈도와 같은 의심스러운 패턴을 식별하고 Oracle APEX 대시보드를 통해 통찰력을 시각화하여 관리자가 사전에 데이터베이스를 보호할 수 있도록 합니다.
이 접근 방식은 AI 및 보안 분석을 활용하여 비정상적인 로그온 및 로그오프 패턴에 플래그를 지정함으로써 잠재적인 보안 위협을 완화합니다.
주요 특징:
- AI 기반 감지: 머신 러닝 모델은 일반적인 사용자 행동과의 편차를 식별합니다.
- 실시간 모니터링: Oracle APEX 대시보드는 지속적인 보안 인사이트를 제공합니다.
- 사전 예방적 위험 완화: 초기 이상 감지 기능은 데이터베이스 보안을 강화하고 잠재적 위험을 줄입니다.
대상
-
Oracle 데이터베이스를 관리하는 데이터베이스 관리자(DBA)입니다.
-
데이터베이스 보안 준수를 보장하는 OCI 보안 관리자입니다.
-
보안 분석가는 위협 감지를 위해 Oracle 보안 도구를 활용합니다.
목표
다음을 통합하여 OCI 환경에서 AI 기반 UBA 구현:
-
데이터 처리를 위한 Oracle Database 23ai.
-
보안 감사 및 로그 분석을 위한 Oracle Data Safe
-
AI 기반 이상 감지를 위한 OML4SQL
-
실시간 시각화를 위한 Oracle APEX.
주요 목적은 Oracle Data Safe 로그온 이벤트 데이터 세트를 분석하여 비정상적 사용자 동작을 식별하고 사전 예방적 위협 감지 및 향상된 데이터베이스 보안을 지원하는 것입니다.
필요 조건
-
데이터 웨어하우스 인스턴스가 작업 로드 유형인 Oracle Database 23ai에 액세스합니다.
-
Oracle Data Safe가 대상 데이터베이스에 구성 및 등록되었습니다.
-
SQL, ML(머신 러닝) 및 Oracle APEX에 대한 기본 지식
작업 1: Oracle Data Safe에서 로그온 및 로그오프 이벤트 데이터 집합 다운로드
Oracle Data Safe에서 로그온 및 로그오프 이벤트에 대한 필터링된 보고서를 생성 및 다운로드한 후 데이터베이스 임포트를 위해 CSV로 변환합니다.
-
OCI 콘솔에 로그인하여 Oracle 데이터베이스, Data Safe, 작업 감사, 감사 보고서로 이동하고 모든 작업을 누릅니다.
-
필터를 적용하여 로그온 및 로그오프 이벤트를 캡처합니다.
-
보고서를 생성하여
.xls
형식으로 다운로드합니다. 예:Datasafe_LOGIN_DatasetJan2024-Feb2025_V2.xls
. -
Oracle Autonomous Database로 로드하기 위해 파일 이름을
.csv
형식으로 바꿉니다. 예:Datasafe_LOGIN_DatasetJan2024-Feb2025_V2.csv
.
작업 2: Oracle Database 23ai Autonomous Database에서 사용자 생성
Oracle Database 23ai에서 필요한 OML 및 웹 액세스 권한을 가진 OML_USER
라는 유저를 생성합니다.
-
OCI 콘솔로 이동하여 Oracle Databases로 이동하고 Autonomous Database를 누릅니다.
-
Database Actions 및 Database Users를 누릅니다.
-
OML 및 웹 액세스를 사용하여
OML_USER
라는 사용자를 만듭니다.
작업 3: Oracle Database 23ai Autonomous Database로 데이터 집합 로드
데이터 로드를 사용하여 CSV 데이터 집합을 업로드하고, 데이터 무결성을 확인하고, 적절한 로드를 확인합니다.
-
웹 액세스 링크를 사용하여
OML_USER
로 로그인합니다. -
Data Studio로 이동하고 데이터 로드를 누릅니다.
-
CSV 파일에서 의견 섹션을 제거하고 열 헤더로 시작하는지 확인하십시오.
-
데이터 로드를 누르고 CSV 파일을 선택한 다음 테이블 이름을 구성합니다.
-
데이터를 로드하려면 시작 및 실행을 누릅니다.
-
데이터 로드 상태를 확인하고 거부된 행을 수정하십시오.
작업 4: 데이터 검증 및 지우기
SQL 프로시저를 사용하여 데이터 집합을 처리하여 불일치를 제거하고 분석할 데이터를 준비합니다.
-
Development로 이동하고 SQL을
OML_USER
로 누릅니다. -
스테이지 처리 테이블(
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;
작업 5: Oracle Machine Learning 노트북 생성
변형 감지 및 사용자 동작 분석을 수행하려면 OML_USER
아래에 OML 노트북을 설정합니다.
-
개발로 이동하고 Oracle Machine Learning을 누릅니다.
-
OML_USER
로 로그인하고 새 노트북을 만듭니다.
작업 6: OML4SQL를 사용하여 데이터베이스 사용자 변형 분석
SQL 및 OML4SQL를 사용하여 세션 기간을 계산하고 비정상적인 패턴을 감지하여 데이터베이스 사용자 이상 징후를 분석합니다.
-
커서를 단락의 맨 아래로 이동하여 OML4SQL에 대한 SQL 및 OML4Py, OML4R 등의 기타 구성요소를 선택합니다. 이 자습서에서는 OML4SQL를 사용합니다.
-
단락의 제목을 추가합니다.
-
세션 데이터를 캡처할 뷰(
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;
-
세션 기간을 계산하고 요약 뷰(
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;
작업 7: 변형 감지 모델 빌드
OML4SQL에서 원클래스 SVM을 사용하여 대상 데이터베이스당 AI 기반 이상 감지 모델을 생성합니다.
-
단락의 맨 아래로 커서를 이동하여 OML4SQL에 대한 스크립트를 선택합니다.
-
일류 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;
-
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;
-
모델 생성을 확인합니다.
%sql SELECT model_name, mining_function, algorithm, creation_date FROM user_mining_models where model_name like 'ANOMALY_DETECTION_MODEL_%';
작업 8: 변형을 감지하기 위해 모델 적용
이상 예측을 실행하여 의심스러운 사용자 작업을 분류하고 결과를 구조화된 테이블에 저장합니다.
-
각 대상 데이터베이스에 대해 비정상적인 유저를 저장할 테이블을 생성합니다. 단락의 맨 아래로 커서를 이동하여 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;
-
비정상적인 사용자 데이터를 검토합니다.
%sql SELECT * FROM ANOMALOUS_USERS_ADBIDCS3 UNION ALL SELECT * FROM ANOMALOUS_USERS_DBAAS23PDB UNION ALL SELECT * FROM ANOMALOUS_USERS_DBAAS23PDB2;
작업 9: Oracle APEX에서 이상 시각화
비정상적인 데이터베이스 활동을 실시간으로 모니터링하고 분석할 수 있는 차트로 대화형 대시보드를 개발합니다.
-
OCI 콘솔에서 Oracle APEX를 실행합니다.
-
OML_USER
로 로그인하여 새 응용 프로그램을 생성합니다. -
네 개의 차트로 대시보드를 작성합니다.
-
차트 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;
-
차트 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;
-
차트 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;
-
차트 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;
-
-
페이지를 실행하고 대시보드 URL을 팀과 공유하십시오.
다음 단계
이 사용지침서에서는 Oracle Database 23ai, Oracle Data Safe 및 Oracle APEX를 사용한 데이터베이스 보안에 대한 AI 기반 접근 방식을 보여주었습니다. 여기서 우리는,
- 세션 기간을 분석하기 위해 로그인 및 로그오프 데이터를 처리했습니다.
- OML4SQL를 사용하여 변형 감지 모델을 구축했습니다.
- 실시간 모니터링을 위해 Oracle APEX 대시보드에서 시각화된 결과를 제공합니다.
보안 팀은 머신 러닝과 대화형 대시보드를 통합하여 의심스러운 활동을 사전에 감지하고 완화할 수 있습니다. 이 확장 가능한 솔루션은 원활한 구현을 위해 Oracle의 내장 AI/ML 기능을 활용하여 사기 감지, 네트워크 보안 등으로 확장됩니다.
관련 링크
확인
-
작성자 - Alex Kovuru(Principal Cloud Architect)
-
제공자 - Indiradarshni Balasundaram(Senior Cloud Engineer)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Implement AI-Powered User Behavior Analytics with Oracle Database 23ai, Oracle Data Safe and Oracle APEX
G28821-01
Copyright ©2025, Oracle and/or its affiliates.