CloudTrailでデフォルト設定で検出できないイベントの確認方法

# はじめに
AWSサービスに対して不審な通信があった場合、「CloudWatch」「Config」「CloudTrail」を使用して調査を行うかと思います。
私はその一つである「CloudTrail」では、**デフォルト**でAWSに関連する全てのAPIコールを記録し、
Cloudtrailコンソール上の「イベント履歴」から確認できると誤認していました。
今回、「CloudTrail」をデフォルト有効化をしただけではコンソール上で確認できないイベントをどのように確認すればよいかをまとめた記事となります。

# 結論
CloudTrailにて証跡を作成する必要がある


# 目次
1.CloudTrailとは
2.デフォルトでは検出しないAPIコールについて
3.データイベントの検出方法
4.格納されたイベントの確認
5.最後に

# 1.CloudTrailとは
①AWSのAPIエンドポイントを通して実行されたAWSサービスの4W1Hを記録するサービス(「いつ」「どこで」「だれが」「何を」「どのように」)でありログとして記録される。
※IAMユーザへのログインなど一部イベントが保存されません。

②ユーザ操作で発行されるアクティビティログは15分以内出力される
　⇒GUI上の操作やCLIによるAPIも含みます。

②別途S3にログファイル出力設定が可能であり、ログファイルは約5分間隔で発行

# 2.デフォルトでは検出しないAPIコールについて
CloudTrailにて検出するイベントには3種類(管理イベント、データイベント、インサイトイベント)存在しており、それぞれの説明は以下の通りです。
題目にもなっている「オブジェクトレベルのログ」は「データイベント」に該当します。

#### 管理イベント(デフォルトで検出可能)
- コンソール上「イベント履歴」にて確認可能
- リソース自体に関する管理イベントを記録
    - リソース自体の作成/構成変更(例：CreateBucket)
    - コンフィグの参照/ロール変更(例：Assumerole)
    - 新規デバイス登録
    - +α

#### データイベント(デフォルトで検出不可能)
- 検出設定後もコンソール上「イベント履歴」にて確認不可能
- リソース内部で行われたイベントを記録
    - S3内オブジェクトレベルのイベント(例：GetObject)
    - Dynamoテーブルレベルのイベント(例：DeleteItem)
    - Lambda関数呼び出しアクティビティ(例：InvokeFunction API)

#### インサイトイベント(デフォルトで検出不可能)
- 検出設定後もコンソール上「イベント履歴」にて確認不可能
- AWS側で「管理イベント」の傾向をパターン分析しており、パターンから外れた異常値をAWS側で検出した場合イベントとして記録
    - 普段はインスタンスを起動しないのに、突如大量リソース展開

# 3.データイベントの検出方法
①：[CloudTrailコンソール](https://ap-northeast-1.console.aws.amazon.com/cloudtrail/home?region=ap-northeast-1#/)を表示
②：証跡の作成を選択
![2022-08-07_10h40_58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1764568/0b9312d9-c91a-b12b-4122-1ad03d181f93.png)

③：証跡の作成を選択
![2022-08-07_10h44_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1764568/977f9819-0a34-7f1b-bb0d-4393bf418cfe.png)

④：各種設定値を入力し「次へ」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1764568/bc1aa148-e783-e67b-40fa-523111ff0ea1.png)

⑤：各種設定値を入力し「次へ」を選択
※本手順では「データイベント」を有効化し、S3の全アクションを取得できるようにする。
![2022-08-07_11h06_34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1764568/8a769134-92e9-6b44-f9d3-fd39f588666f.png)

⑥：「証跡の作成」を選択
以上で出力設定は完了


# 4.格納されたイベントの確認
①：証跡作成時に作成されたS3バケットにCloudTrailログが出力されていることを確認
　※事前に検証のため、
　「aws s3api get-object --bucket <bucketname> --key <objectname> outputfile.txt」を実施
![s3evi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1764568/4277ddc6-e11d-fe99-ce3c-6ccc4ed4b67d.png)

②：ログにデータイベントである「get-object」アクションが出力されていることを確認
```json:CloudTraillog
      "eventTime": "2022-08-07T02:48:16Z"
      "eventSource": "s3.amazonaws.com"
      "eventName": "GetObject"
      "awsRegion": "ap-northeast-1"
      "sourceIPAddress": "xxx.xxx.xxx.xxx"
      "userAgent": "[aws-cli/2.7.20 Python/3.9.11 Linux/4.14.281-212.502.amzn2.x86_64 exec-env/CloudShell exe/x86_64.amzn.2 prompt/off command/s3api.get-object]"
      "requestParameters": {
        "bucketName": "s3-trail-test-08"
        "Host": "s3-trail-test-08.s3.ap-northeast-1.amazonaws.com"
        "key": "test.txt"
   
```





# 5.最後に
管理イベントと一緒にCloudTrailコンソール画面上で確認することは困難な模様でした。

# 参考元
[・証跡のデータイベントの記録](https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html)
[・AWS Black Belt Online SeminarAWS CloudTrail 資料及び QA 公開](https://aws.amazon.com/jp/blogs/news/webinar-bb-awscloudtrail-2021/)
[・CloudTrail のデータイベントと管理イベントの違いは何ですか](https://aws.amazon.com/jp/premiumsupport/knowledge-center/cloudtrail-data-management-events/)