附註:
- 此教學課程需要存取 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 功能進行主動式威脅偵測,強化資料庫安全性。
專案的核心是使用一級支援向量機 (SVM) ,這是一種無監督的機器學習演算法,可學習一般使用者行為,並將偏差標記為異常。透過分析登入總數和平均階段作業持續時間等功能,模型可識別不規則的活動,協助偵測潛在的安全威脅和未經授權的存取嘗試。
使用案例:資料庫使用者異常偵測。
此使用案例著重於分析登入和登出事件,以偵測 Oracle 資料庫環境中的異常使用者登入和登出活動。系統會識別可疑模式 (例如異常階段作業持續時間或不定期登入頻率),並透過 Oracle APEX 儀表板將洞察分析視覺化,讓管理員能夠主動保護資料庫。
藉由運用 AI 和安全性分析,此方法會標記異常的登入和登出模式,協助降低潛在的安全威脅。
關鍵重點:
- AI 導向偵測:機器學習模型識別與一般使用者行為的偏差。
- 即時監控:Oracle APEX 儀表板提供持續的安全洞察分析。
- 主動式風險降低:早期異常偵測可強化資料庫安全性並降低潛在風險。
適用對象
-
管理 Oracle 資料庫的資料庫管理員 (DBA)。
-
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、機器學習 (ML) 及 Oracle APEX 的基本知識。
作業 1:從 Oracle Data Safe 下載登入和登出事件資料集
從 Oracle Data Safe 產生並下載已篩選的「登入」和「登出」事件報表,然後將其轉換成 CSV 以進行資料庫匯入。
-
登入 OCI 主控台,瀏覽至 Oracle 資料庫、資料安全、活動稽核、稽核報表,然後按一下所有活動。
-
套用篩選條件以擷取「登入」和「登出」事件。
-
產生報表並以
.xls
格式下載。例如,Datasafe_LOGIN_DatasetJan2024-Feb2025_V2.xls
。 -
將檔案重新命名為
.csv
格式,以載入至 Oracle Autonomous Database。例如,Datasafe_LOGIN_DatasetJan2024-Feb2025_V2.csv
。
作業 2:在 Oracle Database 23ai Autonomous Database 中建立使用者
建立一個名為 OML_USER
的使用者,並在 Oracle Database 23ai 中使用必要的 OML 和 Web 存取。
-
移至 OCI 主控台,瀏覽至 Oracle 資料庫並按一下 Autonomous Database 。
-
按一下資料庫動作和資料庫使用者。
-
使用 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
。 - 刪除沒有對應登入記錄的登出記錄。
- 如果沒有含較晚時間戳記的 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 記事本,以執行異常偵測和使用者行為分析。
-
導覽至開發,然後按一下 Oracle Machine Learning 。
-
以
OML_USER
身分登入並建立新的記事本。
作業 6:使用 OML4SQL 分析資料庫使用者異常
使用 SQL 和 OML4SQL 計算階段作業持續時間及偵測異常樣式,以分析資料庫使用者異常情況。
-
將游標移至段落底端,以選取 OML4SQL 的 SQL 以及 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 段落並放置查詢,然後按一下執行圖示。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 的命令檔。
-
建立 One-Class 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 Help Center 。
Implement AI-Powered User Behavior Analytics with Oracle Database 23ai, Oracle Data Safe and Oracle APEX
G28824-01
Copyright ©2025, Oracle and/or its affiliates.