・AWS CloudTrail
AWSサービスに対して「いつ」「誰によって」「どのような操作が行われたのか」を記録・保存するサービス。利用登録なしに過去90日間のログを無料で参照可能。
イベントの発生日時と操作したユーザー、対象のリソース名などが表示。また左端の「▶」マークをクリックすることで、詳細情報を参照することもできます。
例えば、操作した覚えがないのにリソースが増減されていたりインスタンスが削除されていたような場合でも、CloudTrailのログを参照することで誰がどのような操作を行ったのかを確認できます。
監視対象となるイベント:
・管理イベント ... ユーザーのログイン、EC2インスタンスの作成 など
・データイベント ... S3上のオブジェクト(データ)の操作、Lambda関数の実行
・インサイトイベント ... 通常と異なる操作(書き込みAPIの呼び出し)
管理イベントとは具体的には管理コンソールからの操作やAWS CLI(コマンド)、APIによる操作です。これらはデフォルトでダッシュボードから参照できます。
データイベントおよびインサイトイベントはデフォルトでは有効になっておらず、「証跡情報」を登録しそれぞれのイベントの記録を有効にするか否かを選択します。
・証跡情報
CloudTrailのログは「証跡情報」を登録することによりS3バケットへ保存することができます。S3バケットへログを保存することにより、90日を超えてもCloudTrailのログを保存しておくことができます。
以下は証跡情報の登録画面です。
S3へ保存するログの内容はJSON形式で出力され、gz形式で圧縮されます。保存する際はAmazon KMS(Key Management Service)を利用して暗号化することも可能。
・複数アカウントのログ保存
企業や組織などにおいて複数のAWSアカウントを管理している場合、それぞれのCloudTrailのログを1つのS3バケットで管理することができます。例えばアカウントA、B、Cの操作ログを監査用のアカウントDに属するバケットに集約することで、監査を容易に行えたり、各アカウントによるログの改ざんを防ぐことができます。
複数アカウントのCloudTrailログを集約する際は、証跡情報の作成時に「ストレージの場所」を既存のS3バケットに指定します。なお指定するS3バケットは、他のアカウントからアクセスが可能になるように事前にバケットポリシーを設定しておく必要があります。
・CloudTrailとCloudWatch Logsの連携
CloudTrailは、AWSサービスのログを一元管理するサービスAmazon CloudWatch Logsと連携することができます。
CloudWatch LogsとCloudTrailを連携することにより、操作ログに特定のキーワードが登場した際に管理者宛に通知を行うことができます。キーワードには例えば、ログインイベント「ConsoleLogin」を指定したり、EC2インスタンスの変更(作成・終了・停止など)イベント「EC2InstanceChanges」などを指定することができます。これにより管理コンソールへ不正なログインが行われたときに検知したり、意図しないインスタンスの変更が行われていないかをアクティブに監視することができるようになります。