AWS CloudTrailによるAPI操作の記録と監査

CloudTrailの管理イベント・データイベント・Insights、イベント履歴とTrailの違い、長期保存、暗号化、改ざん検知を整理し、AWS API操作の監査設計を学びます。

学習順Step 44 / 101サービスSecurity試験ドメインセキュリティ

CloudTrailが記録するもの

AWS CloudTrailは、AWSアカウント内で発生する操作をイベントとして記録する監査サービスです。AWS Management Console、AWS CLI、AWS SDK/API、他のAWSサービスから実行された操作を後から調べることで、「いつ」「どのIDが」「どの操作を」「どの対象に対して行ったか」を追跡できます。障害調査だけでなく、セキュリティインシデントの分析、変更管理、監査要件への対応にも使います。

イベントレコードには、イベント時刻、イベント名、呼び出し元のID情報、対象サービスやリソースなどが含まれます。調査では必要に応じて、AWSリージョン、送信元IPアドレス、ユーザーエージェント、リクエストや応答に関する情報も確認します。たとえば、画像処理サービスの実行ロールに新しいIAMポリシーが付与された場合、該当する管理操作の実行主体・時刻・リクエスト詳細を調べ、変更経路を追跡できます。

CloudTrailのログは、アプリケーション処理の完全な時系列トレースではありません。イベントの並び順だけから処理順序を断定せず、イベント内の時刻やリクエストIDなどを使って関連情報を照合します。

CloudTrailのイベント記録から検索・保管・調査へつなぐ流れ

管理イベントとデータイベント

CloudTrailのイベントは、何を操作したかによって大きく分類されます。試験では「リソースや設定を管理する操作」か、「リソース内のデータを扱う操作」かを見分けます。

イベント種別 操作の対象・目的 記録設定の基本 別の具体例
管理イベント(Management events) AWSリソースやアカウント設定を作成・変更・削除する操作。コントロールプレーンの操作とも呼ばれる Trailやイベントデータストアでは通常、既定で記録対象となる。読み取り系・書き込み系の選択を設定できる Amazon SQSキューの作成、Lambda関数の設定変更、IAMロールへの権限付与
データイベント(Data events) 特定のリソースに対するデータレベルの操作。対象サービスやリソースを絞って記録する 既定では記録されず、対象のリソースやイベントセレクターを指定して有効化する DynamoDBテーブルの項目読み取り・書き込み、Lambda関数の呼び出し、S3オブジェクトの取得
ネットワークアクティビティイベント(Network activity events) VPCエンドポイントを通過したAWSサービスAPIアクティビティなど、ネットワーク経路に関係する操作 既定では記録されず、対象イベントソースを明示する。追加料金が発生する プライベートVPCからVPCエンドポイント経由でAWSサービスAPIを呼び出す通信
Insightsイベント(Insights events) 管理イベントまたは対応するデータイベントのAPI呼び出し率・エラー率における異常な変化 Insightsを明示的に有効にする。追加料金が発生する 通常の処理量から大きく外れた管理API呼び出しの増加を検知

リソースを作成・設定する操作と、そのリソース内にあるデータを読み書きする操作は別の記録対象です。たとえば、DynamoDBテーブルを作成したり設定を変更したりする操作は管理イベント、テーブル内の項目を読み書きするAPI操作はデータイベントに分類されます。S3でも、バケットの設定変更と、オブジェクトのアップロード・ダウンロードではイベント種別が異なります。

管理イベントは記録対象として設定されていることが標準ですが、読み取りのみ・書き込みのみ・両方という選択を確認します。データイベントは、対象リソースを指定して有効化する必要があります。すべてのデータイベントを無制限に記録するのではなく、監査対象のデータ操作、対象リソース、記録量とコストを考慮して範囲を決めます。

イベント履歴とTrailによる継続記録

CloudTrailには、コンソールやAPIから最近のイベントを確認できる**イベント履歴(Event history)**があります。イベント履歴はAWSアカウントで利用でき、リージョンごとに直近90日間の管理イベントを検索・確認できます。イベント履歴の表示自体にCloudTrail料金はかかりませんが、データイベント、Insightsイベント、ネットワークアクティビティイベントを一覧表示する機能ではありません。また、イベント履歴は長期間にわたる継続的な監査保管の代替ではありません。

90日を超えてイベントを保管したり、対象リソースのデータイベントを継続記録したりするには、**Trail(証跡)**を作成し、ログの配信先を設定します。典型的な保存先はAmazon S3です。Trailの対象リージョン、管理イベントの読み取り・書き込み範囲、必要なデータイベント、ログファイルの検証、暗号化などを設計します。S3で長期保管する場合、CloudTrailのイベント履歴とは異なり、S3ストレージや選択した暗号化キー等に応じた料金が発生します。

CloudTrailの料金は、イベントの種類、Trailや保存先の構成、記録量などで変わります。イベント履歴が無料であることを「CloudTrailのログをS3へ無期限に無料保存できる」という意味に取り違えないようにします。管理イベントの配信、データイベント、Insights、CloudTrail Lake、S3、KMSなどはそれぞれの料金条件を確認し、必要なイベントだけを選択します。

CloudTrail Insightsによる異常検知

CloudTrail Insightsは、CloudTrailが記録するイベントを継続的に分析し、API呼び出し率やAPIエラー率の通常パターンからの逸脱をInsightsイベントとして記録する機能です。Insightsイベントを利用するには、対象となるTrailまたはイベントデータストアでInsightsを有効にする必要があり、追加料金が発生します。Insightをオンにしただけで、記録対象に含まれていないイベント種別まで分析されるわけではありません。

CloudTrailは過去のアクティビティから通常の水準(ベースライン)を学習し、現在の活動を比較します。ベースラインの把握には過去7日間のアクティビティが使われ、学習の土台となるイベントが継続して記録されている必要があります。Insightsは固定しきい値を手動設定するのではなく、過去の通常パターンと現在の活動を比較して逸脱を記録します。必要なデータ量や対象イベントの要件を満たさない状態では、すぐに有用な検出が始まるとは限りません。

Insightsの分析対象 検出する変化 記録条件の要点
API呼び出し率 単位時間あたりのAPI呼び出し数が通常の水準から逸脱する 管理イベントでは書き込みAPIが対象。書き込み管理イベントを記録し、Insightsを有効にする
APIエラー率 エラーとなるAPI呼び出しの割合が通常の水準から逸脱する 管理イベントでは読み取り・書き込みのいずれか、または両方の管理イベントを記録してInsightsを有効にする

データイベントのInsightsを利用するには、Trailで対象のデータイベントを記録したうえでInsightsを有効にします。データイベントのInsightsはTrailでサポートされますが、イベントデータストアではサポートされません。API呼び出し率の分析には書き込み操作、エラー率の分析には読み取り・書き込み操作が関係します。管理イベントのInsightsと同じ前提で一律に適用できるとは限らないため、対象サービスとTrailの対応範囲を確認します。

試験では、「普段よりAPI呼び出しが急増した」「APIエラーが通常より多くなった」といった異常パターンを特定する要件ならCloudTrail Insightsを検討します。単に過去のAPI呼び出しを個別検索する要件ならイベント履歴やTrailログ、メトリクス・アプリケーションログの監視ならCloudWatchなど、問いの目的に合う機能を選びます。

Trailログの保存・暗号化

TrailをS3に配信すると、イベントログをイベント履歴の期間を超えて保持し、必要なときに検索・分析できます。CloudTrailがS3へ配信するログは暗号化して保存されます。S3管理の暗号化キーを使うSSE-S3が標準の選択肢であり、暗号化キーをより細かく管理・監査したい場合はAWS Key Management Service(AWS KMS)を使うSSE-KMSを構成できます。KMSキーを利用する際は、KMSキーポリシーとIAM権限の両方がログの暗号化・復号要件を満たすようにします。KMSの利用には別途料金がかかる場合があります。

保管期間は監査要件や調査要件に合わせて定めます。S3のライフサイクルルールを使い、一定期間後に低コストのストレージクラスへ移行したり、要件を満たした時点で削除したりできます。長期保管では、復元に要する時間や料金も含めてストレージクラスを選びます。

保存したログを保護するには、暗号化だけでなく、誰がログにアクセスし、削除や上書きを行えるかも制御します。監査専用の保存先を用意し、次の統制を組み合わせます。

  • S3バケットポリシーとIAMポリシーで、書き込み・読み取り・削除の権限を最小限にする。
  • ログの管理担当者と、アカウントやセキュリティ統制を管理する担当者を分離する。
  • 可能であれば証跡保管用の専用AWSアカウントにログを集約し、ワークロード運用者が保管先まで変更できない境界を作る。
  • S3のMFA Deleteなど、削除操作に追加の統制を設ける。バージョニングや保持要件を合わせて検討する。
  • 暗号化キーの利用権限と管理権限を分離し、キーの無効化・削除で過去ログが読めなくならない運用を行う。

ログファイルの整合性を検証する

ログの機密性やアクセス制御と、「配信されたログが後から変更・削除されていないこと」の確認は別の要件です。CloudTrailの**ログファイル整合性検証(log file integrity validation)**を有効にすると、CloudTrailはログファイルのハッシュを含むダイジェストファイルを作成し、ダイジェストにデジタル署名を付けます。ダイジェストファイルには直前のダイジェストとの連鎖も含まれ、AWS CLIなどの検証手段でログの改変・削除や、特定期間に配信ログが存在しないことを検出できます。

この機能は、ログを自動的に不変化したり、誤操作を防いだりするものではありません。改ざんの有無を後から検証するための仕組みです。実際に保管ログを削除しにくくするには、S3権限、バケットポリシー、MFA Delete、専用保管アカウントなどを別途設計します。整合性検証を有効にすることと、検証コマンドを使ってログを検証することも区別します。

試験での選択基準

要件 選ぶ機能・設計 見落としやすい点
直近のユーザー操作やリソース設定変更を確認したい リージョン別のイベント履歴、またはTrailの管理イベント イベント履歴は直近90日の管理イベントであり、データイベントや長期保存を満たさない
オブジェクトやデータベース項目などのアクセスまで記録したい 対象リソースのデータイベントをTrailで明示的に有効化 管理イベントを有効にしただけではデータイベントは記録されない
90日を超える監査記録を保持したい TrailのログをS3へ配信し、保持期間・ライフサイクル・権限を設計 S3ストレージやKMSなどの料金、削除権限、保存要件を考慮する
通常と異なるAPI利用量やエラー増加を検出したい 対応イベントを記録したうえでCloudTrail Insightsを有効化 有料機能であり、分析対象となるイベントの種類・読み書き区分の条件がある
監査ログの変更や削除を検知したい ログファイル整合性検証を有効化して、ダイジェストを検証 ハッシュ検証は削除を防止する機能ではない。保管権限の制御も必要
保存したログの復号権限を細かく管理したい SSE-KMSとKMSキーポリシー・IAMポリシーを組み合わせる SSE-KMSの利用権限や費用を含めた運用設計が必要

CloudTrailは「誰が、いつ、どのAPI操作を行ったか」を明らかにする操作証跡です。データイベントの明示的な選択、90日を超える保存先、Insightsの追加料金、ログの保護と整合性検証を分けて考えると、要件に合う監査構成を選びやすくなります。

重要ポイント

  • ▸CloudTrailはAWSアカウントで発生した操作のイベント記録を提供し、主体・時刻・API操作・対象リソースなどを調査できる
  • ▸管理イベントはリソースや設定を管理する操作、データイベントは特定リソース内のデータ操作であり、データイベントは対象を選んで明示的に有効化する
  • ▸イベント履歴はリージョン単位の直近90日間の管理イベントを無料で確認する機能で、継続的な記録や長期保存にはTrailと保存先が必要
  • ▸CloudTrail InsightsはAPI呼び出し率やエラー率の通常パターンからの逸脱を検知する有料機能で、記録対象のイベント種別に応じた有効化が必要
  • ▸S3への長期保存では暗号化、IAM・バケットポリシー、MFA Delete、専用アカウント、ログファイル整合性検証を組み合わせて証跡を保護する

このトピックの学習を完了しますか?

完了状態はいつでも切り替えられます