注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
使用 Oracle Database 23ai、Oracle Data Safe 和 Oracle APEX 实施基于 AI 的用户行为分析
简介
随着数据库环境变得越来越复杂,保护敏感数据和检测异常用户行为至关重要。此项目利用 Oracle Data Safe 日志、Oracle Machine Learning for SQL (OML4SQL) 和 Oracle Database 23ai 增强用户行为分析 (User Behavior Analytics,UBA),识别异常访问模式和潜在的安全威胁。
此分步教程演示如何使用 Oracle Machine Learning (OML) 和 Oracle APEX 实施 AI 驱动的异常检测,从而实现实时安全监视。该解决方案专为 Database Security Admins 、AutoML Admins 、 AI/ML Admins 和 APEX Developers 设计,通过集成 Oracle AI/ML 功能进行主动威胁检测来增强数据库安全性。
项目的核心是使用一类支持向量机 (SVM) ,这是一种无监督机器学习算法,可以学习正常用户行为,并将偏差标记为异常。通过分析总登录数和平均会话持续时间等功能,该模型可识别不规则活动,帮助检测潜在的安全威胁和未经授权的访问尝试。
用例:数据库用户异常检测。
此用例侧重于通过分析登录和注销事件来检测 Oracle 数据库环境中的异常用户登录和注销活动。系统通过 Oracle APEX 仪表盘识别可疑模式,例如异常会话持续时间或不规则的登录频率,并通过可视化洞察,使管理员能够主动保护数据库。
通过利用 AI 和安全分析,该方法可标记异常的登录和注销模式,从而帮助缓解潜在的安全威胁。
主要焦点:
- AI 驱动的检测:机器学习模型可识别与正常用户行为的偏差。
- 实时监视:Oracle APEX 仪表盘提供持续的安全洞察。
- 主动风险缓解:早期异常检测可增强数据库安全性并降低潜在风险。
目标读者
-
数据库管理员 (DBA) 管理 Oracle 数据库。
-
OCI 安全管理员可确保数据库安全合规性。
-
安全分析师利用 Oracle 安全工具进行威胁检测。
目标
通过集成以下功能,在 OCI 环境中实施 AI 驱动的 UBA:
-
Oracle Database 23ai 用于数据处理。
-
Oracle Data Safe ,用于安全审计和日志分析。
-
OML4SQL ,支持 AI 驱动的异常检测。
-
Oracle APEX 可实现实时可视化。
主要目标是通过分析 Oracle Data Safe 登录事件数据集来识别异常用户行为,从而实现主动威胁检测和增强数据库安全性。
先决条件
-
以数据仓库实例作为工作量类型访问 Oracle Database 23ai。
-
在目标数据库中配置和注册的 Oracle Data Safe。
-
具备 SQL、机器学习 (Machine Learning,ML) 和 Oracle APEX 的基本知识。
任务 1:从 Oracle Data Safe 下载登录和注销事件数据集
从 Oracle Data Safe 生成并下载已筛选的登录和注销事件报告,然后将其转换为 CSV 进行数据库导入。
-
登录到 OCI 控制台,导航到 Oracle Databases 、 Data Safe 、 Activity Auditing 、 Audit Reports ,然后单击 All Activity 。
-
应用筛选器以捕获登录和注销事件。
-
生成报表并以
.xls
格式下载。例如,Datasafe_LOGIN_DatasetJan2024-Feb2025_V2.xls
。 -
将文件重命名为
.csv
格式以加载到 Oracle Autonomous Database 中。例如,Datasafe_LOGIN_DatasetJan2024-Feb2025_V2.csv
。
任务 2:在 Oracle Database 23ai Autonomous Database 中创建用户
在 Oracle Database 23ai 中创建具有所需 OML 和 Web 访问权限的名为 OML_USER
的用户。
-
转到 OCI 控制台,导航到 Oracle Databases ,然后单击 Autonomous Database 。
-
单击 Database Actions(数据库操作)和 Database Users(数据库用户)。
-
使用 OML 和 Web Access 创建名为
OML_USER
的用户。
任务 3:将数据集加载到 Oracle Database 23ai Autonomous Database 中
使用“数据加载”上载 CSV 数据集、验证数据完整性并确保正确加载。
-
使用 Web 访问链接以
OML_USER
身份登录。 -
导航到 Data Studio ,然后单击数据加载。
-
从 CSV 文件中删除注释部分,并确保它以列标题开头。
-
单击加载数据,选择 CSV 文件,然后配置表名。
-
单击启动并运行以加载数据。
-
验证数据加载状态并修复任何拒绝的行。
任务 4:验证和清除数据
使用 SQL 过程处理数据集,以消除不一致并准备数据进行分析。
-
导航到开发,然后单击 SQL 作为
OML_USER
。 -
创建中转表 (
datasafe_audit_logs
) 并使用 SQL 过程处理数据。- 将记录从
DATASAFE_LOGIN_RAW_DATASET
插入到datasafe_audit_logs
。 - 删除没有对应 LOGON 记录的 LOGOFF 记录。
- 如果不存在具有较晚时间戳的 LOGOFF 事件,则删除 LOGON 记录。
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 记事本以执行异常检测和用户行为分析。
-
导航到 Development(开发),然后单击 Oracle Machine Learning 。
-
以
OML_USER
身份登录并创建新记事本。
任务 6:使用 OML4SQL 分析数据库用户异常
通过计算会话持续时间并使用 SQL 和 OML4SQL 检测异常模式来分析数据库用户异常。
-
将光标移到段落底部,为 OML4SQL 和其他组件(如 OML4Py、OML4R 等)选择 SQL。在本教程中,我们将使用 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 段落并放置查询,然后单击“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(首席云架构师)
-
贡献者 — Indiradarshni Balasundaram(高级云工程师)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Implement AI-Powered User Behavior Analytics with Oracle Database 23ai, Oracle Data Safe and Oracle APEX
G28823-01
Copyright ©2025, Oracle and/or its affiliates.