OCI Logging AnalyticsでLinuxやWindowsのOSログを取り込んで分析する

OCIコンピュートのLinuxやWindowsのログやその上で動作するミドルウェア、アプリケーションのログを取集・分析するサービスとしてOCIでは２つのサービスを使う事ことができます。

 - Loggingのカスタム・ログ
 - Logging Analytics

下記のようにそれぞれ違いがありますが、機能的にはLogging Analyticsのほうが汎用的・高機能のログ管理サービスといえます。また、既にログ管理製品やサービスを使用している場合は、LoggingからService Connector Hubなどを経由しログ連携するなどのケースも良くあるのではないか思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/2650bf60-8740-3778-d977-2f4c3dcb6c0e.png)

今回は、基本的なLogging Analyticsの設定手順をLinux/WindowsのOSログを対象に収集する方法からご紹介します。

Logging Analyticsは、管理エージェントというプログラムが必要ですが、OCIのコンピュートインスタンス(Linux)の場合は、Cloud Agentからプラグインという方法でインストールすることが可能です。
Windowsの場合は、管理エージェントを手動でインストールする必要があります。

オンプレミスの場合など、管理エージェントを直接サーバーにインストールしてクラウドと通信させたくないという場合は、ゲートウェィという方式が利用できます。ゲートウェイは[こちら](https://qiita.com/western24/items/d0e923ba0a9f03956d87)


まず初めに、対象となるVMが管理エージェントの[インストール要件](https://docs.oracle.com/ja-jp/iaas/management-agents/doc/perform-prerequisites-deploying-management-agents.html)を満たしているか確認します。

## IAMポリシーの作成
サービスに必要となるIAMポリシーは[こちら](https://oracle-japan.github.io/ocitutorials/management/audit-log-analytics/#1-iam%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC%E3%81%AE%E4%BD%9C%E6%88%90)を参照

## Linuxの場合の設定手順

- コンピュート・インスタンスの詳細 -> Oracle Cloudエージェントにある管理エージェントを有効にする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/0a77404b-3876-5e58-29b5-27e6afc6f97b.png)

- OCIメニューから、監視及び管理 -> 管理エージェント -> エージェントで、有効にしたインスタンスの管理エージェントが表示されるまで10分ほど待つ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/b8bdc5bc-fb23-5d32-00db-564fe6e81d6e.png)

- プラグインのデプロイ -> Logging Analyticsをチェックして更新
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/01970ff1-a028-066a-9f74-a48c614c60d6.png)

- OCIメニューから、監視及び管理 -> ログ・アナリティクス -> 管理 -> エンティティにタイプ Host(Linux)で有効化したVMインスタンスが作成されていることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/b0ead8bd-17c7-2ae7-8910-28a9d8dd914c.png)

- 管理 -> ソースからLinux Syslog Logsを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/aaa4805f-8214-f2df-0d82-2f4821f434df.png)

- 関連付られていないエンティティから該当のLinuxエンティティを選択し、アソシエーションの追加。ログ・グループがない場合は、新規で作成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/69b5cb7a-8d9d-d291-7ae1-0ba9a33c7698.png)

- 同様の手順でLinux Secure Logsもアソシエーションの追加を行う

- Cloud Agentは、oracle-cloud-agentユーザで動作しているので、対象ファイルのRead権限が必要。VMにログインし、ファイルアクセスするパーミッションをsetfaclで割り当てる
```
sudo setfacl -m u:oracle-cloud-agent:r /var/log/messages*
sudo setfacl -m u:oracle-cloud-agent:r /var/log/secure*

# oracle-cloud-agentユーザでファイルがアクセスできていればOK
sudo -u oracle-cloud-agent head -5 /var/log/messages
sudo -u oracle-cloud-agent head -5 /var/log/secure
```

- ログ・アナリティクス -> ログ・エクスプローラーにLinuxのログが表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/b92b1275-ead4-7baa-5c33-040469b38107.png)

## ログに含まれるIPアドレスからジオロケーション、脅威インテリジェンスを取得する
- Linux Secure LogのHost IP Addressには、以下のようにVMインスタンスにアクセスしたクライアントのIPアドレスが記録されている。このIPアドレスを引用してジオロケーションや脅威分析の情報を取得するようにLinux Secure Logsのソースを拡張する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/4d35347c-17ae-3934-b9a9-fb5315095980.png)

- ソース -> Linux Secure Logsの編集をクリックし、フィールド・エンリッチメントを追加
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/660d0308-5f19-8535-f6fa-61a290d046de.png)


- ファンクションをジオロケーション、IPアドレスをHost IP Address(Client)とマッピング、脅威インテリジェンスをチェックし、追加、変更の保存を行う
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/b6ab063c-e19c-7788-95cb-f071159ec17e.png)

- ソースの変更後に取得されたログ・レコードにはClient Host CountryやCity、Threat IPsという新しいフィールドが追加される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/e29d441f-274b-5e7b-dd35-0fca78fa54bb.png)

※このジオロケーションや脅威インテリジェンスは、他のログのIPアドレスのフィールドでも同様に指定可能


## Windowsの場合の設定手順

- OCIメニューから、監視及び管理 -> 管理エージェント -> ダウンロードとキーからWindowsの管理エージェントをダウンロードする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/d4586d92-f492-83a1-3469-cd117ab14997.png)

- 同ページにあるインストール・キーからキーを新規作成し、キーファイルをダウンロードしておく
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/c4aa0a61-8ba4-ddbe-8d21-c77ab9ce3db6.png)

- エージェントファイルの下記のパラメータに任意の値を記述
AgentDisplayName = XXXXXXXXXXX
CredentialWalletPassword = XXXXXXXXXXX

- エージェントを展開し、ダウンロードしたキーファイルをWindowsにコピーする。管理者としてコマンド・プロンプトを起動しインストール

※インストールには、JDK 8u281が必要
```
# installer.bat エージェントファイル(絶対パス)で実行
installer.bat c:\agent\oracle.mgmt_agent.230427.2233.Windows-x86_64\agentkey.txt
```

- OCIメニューから、監視及び管理 -> 管理エージェント -> エージェントにインストールした管理エージェントが表示されていることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/384cbeb3-521f-b287-2612-b8a5388164ed.png)

- プラグインのデプロイ -> Logging Analyticsをチェックして更新
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/01970ff1-a028-066a-9f74-a48c614c60d6.png)

- OCIメニューから、監視及び管理 -> ログ・アナリティクス -> 管理 -> エンティティにタイプ Host(Windows)で有効化したVMインスタンスが作成されていることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/46987c33-2d6a-5c80-dd3f-e7e4f19be24d.png)

- 管理 -> ソースからWindows Security Eventsを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/41ee0e9e-e303-5316-c0b3-cd713891ac10.png)

- 関連付られていないエンティティから該当のVMエンティティを選択しアソシエーションの追加。ログループがない場合は、新規で作成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/965c2d44-3521-faba-eaf0-762b135204ab.png)

- 同様にWindows System Events, Windows Application Eventsも行う

- ログ・アナリティクス -> ログ・エクスプローラーにログが表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/7729b839-2955-5a49-ec64-5491ed9c8ce2.png)

## OS以外のミドルウェア、アプリケーションの追加
OSログの設定をした後、動作するWEBサーバやデータベースのログを収集する場合の流れは、対象エンティティの追加 -> ログソースのアソシエーションの追加という手順になります。
例えば、Oracle Databaseの場合、[こちら](https://qiita.com/western24/items/409d93b911c7094f5137#logging-analytics%E3%81%ABoracle-database%E3%81%AE%E3%82%A2%E3%83%A9%E3%83%BC%E3%83%88%E3%83%AD%E3%82%B0%E3%82%92%E5%8F%96%E3%82%8A%E3%81%93%E3%82%80)の手順にようにOracle Databaseのエンティティを追加し、そのエンティティに対してアラートログやUnified Auditのソースに割り当てます。

エンティティには、Apache, Node.js, Weblogic等のWebアプリに関連するものや、MySQLやPostgreSQL等のOracle Database以外のデータベース、kubernetesやEBSやSiebel等のアプリケーションのログなど対応しています。

対応していないものは、自身のパーサーとソースを作成できますので、[こちら](https://oracle-japan.github.io/ocitutorials/management/logginganalytics_customparser/)を参照下さい。