ノート:
- このチュートリアルでは、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。
-
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 Databases」、「データ・セーフ」、「アクティビティ監査」、「監査レポート」に移動して、「すべてのアクティビティ」をクリックします。
-
フィルタを適用して、ログオンおよびログオフ・イベントを取得します。
-
レポートを生成し、
.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およびWebアクセスを持つOML_USER
というユーザーを作成します。
-
OCIコンソールに移動し、「Oracle Databases」に移動して「Autonomous Database」をクリックします。
-
「データベース・アクション」および「データベース・ユーザー」をクリックします。
-
OMLおよびWeb Accessを使用して、
OML_USER
というユーザーを作成します。
タスク3: Oracle Database 23ai Autonomous Databaseへのデータセットのロード
データ・ロードを使用してCSVデータセットをアップロードし、データの整合性を検証して、適切なロードを確認します。
-
Webアクセス・リンクを使用して
OML_USER
としてログインします。 -
「Data Studio」にナビゲートし、「データ・ロード」をクリックします。
-
CSVファイルからコメント・セクションを削除し、列ヘッダーで始まることを確認します。
-
「データのロード」をクリックし、CSVファイルを選択して、表名を構成します。
-
「開始および実行」をクリックしてデータをロードします。
-
データ・ロード・ステータスを確認し、拒否された行を修正します。
タスク4: データの検証および消去
SQLプロシージャを使用してデータセットを処理し、不整合を削除して分析のためにデータを準備します。
-
「開発」にナビゲートし、
OML_USER
として「SQL」をクリックします。 -
ステージング表(
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ノートブックを設定して、異常検出およびユーザー動作分析を実行します。
-
「開発」にナビゲートし、「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
)。1つ以上の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で1クラスSVMを使用して、ターゲット・データベースごとにAIベースの異常検出モデルを作成します。
-
OML4SQLのスクリプトを選択するには、段落の下部にカーソルを移動します。
-
1クラス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
としてログインし、新しいアプリケーションを作成します。 -
4つのチャートを含むダッシュボードを作成します。
-
チャート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
G28820-01
Copyright ©2025, Oracle and/or its affiliates.