[OCI]監査(Audit)ログの確認方法について調べてみた

## はじめに
システムの安全性を担保するため、監査証跡を残しておくことは非常に重要です。
今回は、下記構成を例にOCIにおける監査ログの表示、また、その確認方法についてみていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762549/56e2b679-1e78-c4e9-6872-698725b28af5.png)

## 前提条件
* Compute Instanceが作成されていること
* 管理者権限([administratosグループ所属](https://docs.oracle.com/ja-jp/iaas/Content/Identity/conversion/groups.htm#default-group-names)) or [必要なIAMポリシーがあること](https://docs.oracle.com/ja-jp/iaas/Content/Audit/Tasks/viewinglogevents.htm#policy)

## 監査(Audit)ログ
OCIコンソールにログイン後のイベント(いつ、だれが、どのサービスで、何をしたか(作成、削除等)が一部を除いた※1全てが監査(Audit)ログに残ります。保存期間は365日※2となっています。
※1 [オブジェクト・ストレージ・サービスのオブジェクト関連イベント](https://docs.oracle.com/ja-jp/iaas/Content/Audit/Concepts/auditoverview.htm)
※2 [長期保存の場合はこちらの仕組みを使います](https://speakerdeck.com/oracle4engineer/sch-overview?slide=8)

## 監査(Audit)ログの保存場所

ハンバーガーメニュー(画面左上)>監視および管理>ロギング>ログ・グループ>_Audit
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762549/cdb90d17-fc03-df93-8aa3-0bfec330fb58.png)

:::note 
補足
ログ・グループ(_Audit)は、**仕様として削除ボタン表示がないため、誤って削除される心配はありません。**(その他のログ・グループは任意作成・削除が可能)
:::

## 監査ログ画面
実際の監査ログ確認画面です。
ハンバーガーメニュー(画面左上)>監視および管理>ロギング>監査
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762549/ebb2c121-7fa5-8aef-e0d4-6bda59cd20d1.png)




* 赤枠：発生したイベント(Compute作成・削除等)を時系列的に表示
* 青枠：対象絞り込みフィルタ(いつ、だれが、どのサービスで、どのコンパートメント＆リージョンで、何をしたかがフィルタ項目)

 
## 監査ログ画面(詳細)
イベント探索の右端を押下すると詳細な情報が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762549/42e722df-cf6f-091f-a616-b4b5554abec2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762549/18312fe6-a5c9-f98a-f566-90e662045bc4.png)

※フォーマットはCNCFのCloudEvents業界標準形式に準拠しています。

## 例：インスタンス(Compute)起動した場合
実際の例として、インスタンス(Compute)起動した場合、どのようなログが表示されるか確認していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762549/64fbdc3d-d5df-5c5f-bf72-6bf4519e9f82.png)

#### インスタンス(Compute)起動時のイベント
タイプに下記表示されましたが、InstanceActionからはインスタンス(Compute)に対するどのような操作が開始・終了したかわかりません。
* com.oraclecloud.ComputeApi.InstanceAction.end
* com.oraclecloud.ComputeApi.InstanceAction.begin
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762549/a2f97e6c-3094-1526-a64b-5a8a0a636b88.png)

#### イベント詳細の"additionalDetails"で確認
イベントの右端を押下し、詳細を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762549/a3de6701-9dfa-1a0f-8fe1-2bfe0f1df2e4.png)
その後、additionalDetailsの“+”を押下すると、**instanceActionType: start**があるので、**インスタンスを起動した**※1ことがわかります※2。
※1[マニュアルのAPIタブ参照](https://docs.oracle.com/ja-jp/iaas/Content/Compute/Tasks/restartinginstance.htm#start-instance)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762549/0cbdbaae-4c98-3fb1-6c72-7133aeafc7a9.png)

:::note warn
補足 ※2 [こちら](https://docs.oracle.com/ja-jp/iaas/Content/Audit/Reference/logeventreference.htm#payload)に記載あるように、data配下部分はサービスによって異なるようです。例えば、Base Databaseのnode起動時のイベントのタイプは下記になり、具体的なアクションは**lifecycleState:STARTING**になっています。
:::

* com.oraclecloud.DatabaseService.DbNodeAction.begin
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762549/726ea479-9f92-3c01-a9d7-6e45be600f88.png)


#### 最終的に確認できること
下記イベントからは、以下のことが読み取れます。
ユーザーXXXによって、ComputeInstance01という名前のインスタンスに対して、「起動」の操作が行われ、起動までに6秒かかった(beginとend※のイベントの時間の差分)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762549/8bc816e2-a7e9-31ab-43a6-8856037758cd.png)

## まとめ
いかがだったでしょうか。サービスによって多少表現は異なりますが、どのあたりをみたらよいかわかるようになったかと思います。