CloudTrail

## 特徴
ドライブレコーダーや監視カメラのようなイメージ
犯罪抑止、定期的な挙動のレコーディング

デフォルトで有効化されている。
ただデフォルトでは後述の整合性チェックや保存期間が90日間だけと制約もある。

## 料金
https://aws.amazon.com/jp/cloudtrail/pricing/
基本的な機能は無料で使用できる。

## New Trail作成について
デフォルトでイベントログは確認できる。
しかし不要なユーザーやイベントも対象にしている。
またイベントを保存できる期間が有限（90日）
新しくトレイルを作成することにより、S3バケットにログを長期保管できるようにしたり、特定のユーザーやログを指定することができる。
CloudWatch logsに出力することもできる。(オプション)
作成したトレイルは全てのリージョンで有効化される。

### event type
トレイルを作成する時に３つのタイプ（管理イベント、データイベント、Insightsイベント）を選択できる。
デフォルトでは管理イベントにチェックが入っている。
https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/cloudtrail-concepts.html#cloudtrail-concepts-events
```
管理イベントとは
管理イベントでは、AWS アカウントのリソースで実行される管理オペレーションについての情報が得られます。これらのイベントは、コントロールプレーンオペレーションとも呼ばれます。管理イベントには、次のようなものがあります。
セキュリティグループの設定 (例: AWS Identity and Access Management AttachRolePolicy API オペレーション)。
デバイスの登録 (例: Amazon EC2 CreateDefaultVpc API オペレーション).
データをルーティングするルールの設定 (例: Amazon EC2 CreateSubnet API オペレーション).
ログ記録の設定 (例: AWS CloudTrail CreateTrail API オペレーション)。
管理イベントは、アカウントで発生する非 API イベントを含む場合もあります。例えば、ユーザーがアカウントにサインインすると、CloudTrail は ConsoleLogin イベントをログに記録します。詳しくは、CloudTrail によってキャプチャされる API 以外のイベント を参照してください。CloudTrail が AWS のサービスについてログに記録する管理イベントの一覧については、「「CloudTrail がサポートされているサービスと統合」」を参照してください。

データイベントとは
データイベントでは、リソース上またはリソース内で実行されたリソースオペレーションについての情報が得られます。これらのイベントは、データプレーンオペレーションとも呼ばれます。データイベントは、多くの場合、高ボリュームのアクティビティです。以下のデータタイプが返されます。
バケットおよびバケット内のオブジェクトの Amazon S3 オブジェクトレベルの API アクティビティ (例: GetObject、DeleteObject、および PutObject API オペレーション)。
AWS Lambda 関数の実行アクティビティ (Invoke API)
テーブルでの Amazon DynamoDB オブジェクトレベルの API アクティビティ (例: PutItem、DeleteItem、および UpdateItem API オペレーション)。
Amazon S3 on Outposts オブジェクトレベル API アクティビティ
eth_getBalance または eth_getBlockByNumber などの Ethereum ノードでの Amazon Managed Blockchain JSON-RPC コール
CompleteMultipartUpload および GetObject へのコールなどの Amazon S3 Object Lambda アクセスポイント API アクティビティ
Amazon EBS スナップショットの PutSnapshotBlock、GetSnapshotBlock、および ListChangedBlocks などの Amazon Elastic Block Store (EBS) ダイレクト API。
アクセスポイントでの Amazon S3 API アクティビティ
ストリームでの Amazon DynamoDB API アクティビティ
テーブル上の AWS Glue API アクティビティ
証跡の作成時、デフォルトでは、データイベントは記録されません。CloudTrail データイベントを記録するには、アクティビティを収集する、サポート対象のリソースまたはリソースタイプを明示的に証跡に追加する必要があります。詳細については、「証跡の作成」および「データイベント」を参照してください。
データイベントのログ記録には追加料金が適用されます。CloudTrail の料金については、「AWS CloudTrail 料金」を参照してください。

Insights イベントとは
CloudTrail Insights イベントは、AWS アカウントの異常な API コールレートまたはエラーレートのアクティビティをキャプチャします。Insights イベントを有効にして、CloudTrail が異常なアクティビティを検出した場合、Insights イベントは証跡の宛先 S3 バケットの異なるフォルダまたはプレフィックスに記録されます。CloudTrail コンソールで Insights イベントを表示すると、インサイトのタイプとインシデント期間も確認できます。Insights イベントは、関連する API、エラーコード、インシデント時間、統計情報などの関連情報を提供し、異常なアクティビティについて理解して対処するのに役立ちます。CloudTrail 追跡でキャプチャされた他のタイプのイベントとは異なり、Insights イベントは CloudTrail がアカウントの API 使用量またはアカウントの通常の使用パターンとは大きく異なるエラーレートのログの変更を検出した場合にだけログ記録されます。Insights イベントを生成する可能性のあるアクティビティの例を次に示します。

通常、アカウントは Amazon S3 deleteBucket API コールを 1 分あたり 20 個までログに記録しますが、アカウントは 1 分あたり平均 100 個の deleteBucket API コールを開始しています。異常なアクティビティの開始時に Insights イベントが記録され、異常なアクティビティの終了を示すために別の Insights イベントが記録されます。
通常、アカウントは Amazon EC2 AuthorizeSecurityGroupIngress API のコールを 1 分あたり 20 個を記録しますが、アカウントは AuthorizeSecurityGroupIngress へのコールをまったく記録し始めていません。異常なアクティビティの開始時に Insights イベントが記録され、10 分後、以上にアクティビティが終了すると、異常なアクティビティの終了を示すために別の Insights イベントが記録されます。
通常は、アカウントで AWS Identity and Access Management API DeleteInstanceProfile に関する AccessDeniedException エラーのログ記録が 7 日間に 1 つもありません。アカウントが DeleteInstanceProfile API コールで 1 分あたり平均 12 AccessDeniedException エラーのログを記録し始めます。異常なエラーレートのアクティビティが発生した時に Insights イベントが記録されますが、この異常アクティビティの終了を示すために別の Insights イベントも記録されます。
これらの例は、説明のみを目的としています。結果はユースケースによって異なる場合があります。
Insights の作成時、デフォルトでは、データイベントは無効になっています。CloudTrail Insights イベントを記録するには、新規または既存の証跡で Insights イベントコレクションを明示的に有効にする必要があります。詳細については、「証跡の作成」および「証跡の Insights イベントの記録」を参照してください。
CloudTrail Insights イベントの記録には追加料金が適用されます。CloudTrail の料金については、「AWS CloudTrail 料金」を参照してください。
```

dataイベントは大量のログが出るため注意が必要

## Log File Validation
整合性について
cloudtrailログファイルが変更、削除、または変更されていないかどうかを判断できる。
SHA-256を使用