OCI DataSafeでBaseDB/ExaDB-Dの監査ログを取り込んで分析する

Oracle Cloud Databaseの監査ログ(Unified Audit)は、OCIのログ・サービスと連携して、統合的に分析させるということが可能です。方式としては、Logging AnalyticsとData Safeの２種類のサービスがあり、用途に合わせて選択することができます。

<b>Logging Analytics</b>
 - Oracle Databaseの監査表に限らず、アラート、トレースなどのログファイルなど様々なログを取得可能
 - Unified Auditの取り込みは低速
 - 多機能なログ分析、アラート通知などOCIの他サービスと連携
 - 保管期間の制限なし
 - Activeの場合、300GB/月ごとに5万くらい。Archiveだと2000円/月ほど 

<b>Data Safe</b>
 - AUD、FGA_LOG、Unified AuditのPDBのDB監査表のみが対象
 - Unified Auditの取り込みは高速
 - DB監査に特化した分析ダッシュボード
 - 最大 7年保管 (Active 1年、Archive 6年)
 - 100万/月レコードまで無料、以降1万レコード/月 14円くらい

Data Safeの場合、ADBの監査ログの長期保管、BaseDB/ExaDB-Dを複数管理しているDB監査ログの集約としてなどの使い方が考えられるかと思います。

ここでは、BaseDBをData Safeと連携する手順について説明します。
※ Logging Analyticsを使う場合は[こちら](https://qiita.com/western24/items/409d93b911c7094f5137)の記事を参照下さい。

## BaseDBをデータセーフに登録
- Data Safeを有効化する手順は[こちら](https://qiita.com/western24/items/b772d95148b8855b8bb0#data-safe%E3%81%AE%E6%9C%89%E5%8A%B9%E5%8C%96)を参考に
- OCIメニューから、Oracle Database -> データセーフのOracle Cloud データベースのウィザートを開始
- BaseDBのPDBの接続情報を登録。構成スクリプトを(datasafe_privileges.sql)ダウンロードし、BaseDBのPDBでユーザー作成とスクリプトを実行する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/93aab4df-f010-8b56-2b0e-94e822481050.png)


- PDBに管理者でログインし、Data Safeが接続に使用するユーザーと権限を付与する
```
#Data Safe用ユーザーの作成
SQL> create user DATASAFE$ADMIN identified by WelCome12345##;
#Data Safe用の権限を付与
SQL> @datasafe_privileges
Enter value for USERNAME -> DATASAFE$ADMIN
Enter value for TYPE (grant/revoke) -> grant
Enter value for MODE -> all
```
- プライベート・エンドポイントとセキュリティ・ルールを指定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/936d7d0b-29ea-318a-820a-67d77d6fc805.png)

- 登録後、正常に完了すればAcitveでターゲット・データベースに表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/a009bfa5-38e9-0e02-19d0-98ec8b7b4e1d.png)

## Unified Auditの収集を有効にする
- データセーフ -> アクティビティ監査 -> Audit Trailsには、作成したターゲット・データベースに対応した3つの監査表が検出されている。Unified Auditを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/5c6b8841-e6af-5209-798e-17049d2b19f6.png)

- AuditをStartする。Start後に監査ログを取得する先頭の日付を求められるのでお好みの値に
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/3eaa1dc6-2fb6-8d23-0cfb-31c2fd6eb9c1.png)

- アクティビティ監査 -> Audit ReportsにUnified Auditの監査ログが表示される 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/3a440ba7-944d-e74b-6e0d-cf0d3043e3cb.png)


## 監査ポリシーを変更する
- Data Safeは、コンソールからプリセットされた監査ポリシーを直接DBに実行することも可能
- データセーフ -> アクティビティ監査 -> Audit policiesからターゲットを選択し、Retrieveを実行。これで既存の監査ポリシーの設定が読み込まれる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/1e5ef7c5-a130-ed34-38e6-355111320fa4.png)
- 変更する場合は、Update and Provisionを選択する。BaseDBはORA_SECURECONFIGとORA_LOGON_FAILURESがデフォルトで有効化されている。主な監査ポリシーの内容は[こちら](https://docs.oracle.com/cd/F19136_01/dbseg/configuring-audit-policies.html#GUID-C43651C6-A35C-4EEF-BEA7-EADA408BFF67)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/dbe3b2fe-5959-4ee7-5bb6-fbebbb667ebe.png)
※User Activity Auditingは、DMLを含むユーザーのすべてのSQLが対象になり、ログが膨大になるので注意。DMLに対しては、基本的にはDB側で条件を絞った監査ポリシーを実行するほうが良い。ポリシーの設定方法は、[こちら](https://docs.oracle.com/cd/F19136_01/dbseg/configuring-audit-policies.html#GUID-12B6375C-25F7-46A9-BA03-4714BFAC6056)

Oracle Databaseのセキュリティ・ベストプラクティスでは、監査ログの対象を出来るだけ絞ることが推奨されています。Unified Auditには、条件のポリシーを細かく設定できるので、特定のIPアドレスやアプリケーション、重要な表に対する更新DMLのみ等のポリシー設計が重要です
DBパフォーマンス劣化やインスタンスダウンなど予期せぬトラブルを起こさないためにも、監査ログの定期的なモニタリングに、ログ・サービスも活用頂ければと思います