はじめに
Oracle Databaseには「監査」と呼ばれる機能があり、この機能を用いることでデータベース・アクティビティの監視を行うことが可能です。
この監査機能を利用して、Oracle Databae上の特定のテーブルに対するアクションを記録し、その情報をOCIのLogging Analyticsで表示する検証を行ったため、備忘として記録します。
Logging Analytics
OCI Logging Analyticsには、様々なリソースから取得したログ情報を表示分析する機能が有ります。加えてラベルやログ・データに応じたアラート通知を行い、通知サービスであるNotificationと連携させることで、メールやSMSを送ることも可能です。そのため、リソースの利用状況が逼迫した場合に自動で通知を受け取るといった運用監視にも利用可能です。
Oracle Database監査ポリシーを作成
はじめにOracle Database監査ポリシーを作成します。今回の検証では、GUIでSQLを実行できるAutonomous Databaseを利用しました。Autonomous DatabaseとLogging Analyticsを連携させる場合、別途Computeを用意してAgentを設定する必要があります(本投稿では省略)。
監査対象とする検証用のテーブルとしてTEST_AUDITテーブルを作成し、そのテーブルに対する全てのアクションを監査するポリシーを作成します。実利用の場合はログが膨大になることが想定されるため、SELECTやUPDATEなどの特定アクションや特定ユーザーからの操作等に絞って設定することが望ましいと考えられます。
CREATE AUDIT POLICY all_actions_on_test_audit ACTIONS ALL ONLY TOPLEVEL;
CREATE AUDITだけでは作成した監査ポリシーは有効化されないため、CREATE AUDIT後に以下を実行します。
AUDIT POLICY all_actions_on_test_audit;
この状態でデータベース内に作成されたすべての監査ポリシー情報を取得してみると、先ほど作成したポリシーが登録されていることが確認できます。
ポリシーが有効化されているかどうかも確認してみます。結果に先ほど作成したポリシーが含まれていることが確認できます。
これでTEST_AUDITテーブルにDML操作を行うとアクションが記録される状態になっていることがわかりました。作成したTEST_AUDITテーブルに対してSELECTを実行した後に、UNIFIED_AUDIT_TRAILの情報を取得してみると、SELECTを行ったことが記録されています。
Logging Analyticsの設定
次にLogging Analyticsの設定を行います。Logging Analyticsは、OCIコンソール上でログを分析できるログ・エクスプローラー機能を有したサービスです。
初めに、ロググループを作成します。Logging Analyticsの「管理」からログ・グループの作成が可能です。任意の名前を設定して、ロググループを作成します。
次にエンティティを作成します。ロググループ作成時と同様にLogging Analyticsの「管理」から作成可能です。管理エージェントには、Computeで設定したAgentを登録します。プロパティにあるプロパティ値は、Autonomous Database DB接続情報に記載の内容を登録します。
次にLogging Analyticsのソースを設定します。同様に、Logging Analyticsの「管理」から「ソースの作成」が可能です。作成画面でデータベースの問い合わせとして、UNIFIED_AUDIT_TRAILから情報を取得するようSQL問い合わせ定義をします。
最後にエンティティとソースの関連付けを行います。
Logging AnalyticsでUNIFIED_AUDIT_TRAILからの情報を表示させる準備は完了したので、実際にLogging Analyticsで確認してみます。
画面イメージの通り、Autonomous Database上に記録されたUNIFIED_AUDIT_TRAILの情報が取得できていることが確認できました。検索画面では取得対象の時間幅も指定可能であるため、より広い範囲や狭い範囲で状況を確認することも可能です。
本投稿に記載はしていませんが、Logging Analyticsではしきい値、時間範囲を指定してアラーム作成が可能です。そのため、アラームを用いてNotificationへ連携させることで、条件に応じてメール等による通知を得ることが可能です。