AWS CloudTrail で実現する API 監査ログ - 証跡の設計とセキュリティ分析

全 API アクティビティを記録し、CloudTrail Lake の SQL クエリで高度な分析を実行する。Insights による異常パターンの自動検出と EventBridge 連携のリアルタイム検出を紹介します。

CloudTrail の概要

CloudTrail は AWS アカウントの API アクティビティを記録するサービスです。EC2 インスタンスの起動、S3 バケットの作成、IAM ポリシーの変更など、あらゆる API コールが記録されます。デフォルトで過去 90 日間のマネジメントイベントが無料で閲覧でき、証跡を作成すると S3 バケットに無期限で保存されます。各イベントには呼び出し元の IAM エンティティ、送信元 IP アドレス、リクエストパラメータ、レスポンス要素が含まれ、「誰が、いつ、何を、どこから」を正確に追跡できます。イベント配信のレイテンシは通常 5〜15 分で、リアルタイム監視には EventBridge との統合が必要です。

証跡設計と CloudTrail Lake

証跡は全リージョンに適用する組織証跡が推奨です。S3 バケットに JSON 形式でイベントが保存され、SSE-KMS で暗号化します。組織証跡は AWS Organizations の管理アカウント (management account)、または管理アカウントが指名した CloudTrail の委任管理者アカウントから作成し、全メンバーアカウントのイベントを 1 つの S3 バケットに集約します。バケットポリシーで CloudTrail サービスプリンシパルからの書き込みのみを許可し、オブジェクトロックで改ざんを防止します。CloudTrail Lake はイベントデータストアにイベントを保持し、SQL クエリで検索・分析できます。保持期間は日数で指定し、その上限は選んだ料金オプションで決まります。延長保持料金 (EXTENDABLE_RETENTION_PRICING) では最大 3,653 日 (10 年)、固定保持料金 (FIXED_RETENTION_PRICING) では最大 2,557 日 (7 年) です (公式ドキュメント記載値・2026 年 8 月時点)。保持するかどうかの判定はイベントの eventTime を基準に行われ、取り込んだ時刻ではない点に注意してください。Athena と異なり事前の Glue テーブル定義やパーティション設計が不要で、イベントデータストアを作成すればそのまま SQL を発行できます。「過去 30 日間に IAM ユーザーを作成したイベント」「特定の IP アドレスからの API コール」などのクエリを即座に実行できます。

データイベントとインサイト

データイベントは S3 オブジェクトレベルの操作 (GetObject、PutObject)、Lambda 関数の呼び出し、DynamoDB のテーブル操作を記録します。管理イベントと比較してイベント量が大幅に多いため、対象リソースを絞り込んで有効化します。CloudTrail Insights は管理イベントの異常パターン (API コール数の急増、エラー率の上昇) を自動検出し、通常とは異なるアクティビティをハイライトします。例えば、通常 1 日 10 回程度の RunInstances が突然 1,000 回呼び出された場合にインサイトイベントが生成されます。EventBridge との統合で、特定の API コール (DeleteBucket、StopLogging) をリアルタイムに検出して Lambda でアラートを発行できます。

設計のベストプラクティスと落とし穴

証跡の S3 バケットは専用アカウント (ログアーカイブアカウント) に配置し、本番アカウントの管理者がログを削除・改ざんできない構成にします。バケットポリシーで PutObject のみを許可し、削除系 API を明示的に Deny します。ログファイルの整合性検証 (ダイジェストファイル) を有効にすると、配信後のログ改ざんを暗号学的に検出できます。よくある落とし穴として、組織証跡を作成したのにメンバーアカウントで個別証跡を残すと二重課金が発生します。また、CloudTrail Lake のイベントデータストアに同一イベントを複数回取り込むとストレージコストが倍増するため、取り込みソース (組織証跡 vs アカウント別証跡) の重複を避ける設計が重要です。S3 バケットへの配信失敗はサイレントに発生するため、CloudWatch メトリクス (InsufficientS3BucketPolicy など) を監視し、ログ欠損を早期に検知する仕組みが不可欠です。

CloudTrail Lake と Athena の比較

(2026 年 8 月時点・バージニア北部と東京は下記の単価が同額) S3 に保存された CloudTrail ログの分析には、CloudTrail Lake と Athena + S3 の 2 つのアプローチがあります。CloudTrail Lake はセットアップが容易で、イベントデータストアを作ればそのままクエリを発行できます。ただし課金の主体はクエリではなく取り込みで、CloudTrail のイベントを 1 年延長保持料金で取り込むと 0.75 USD/GB、7 年固定保持料金では最初の 5 TB/月が 2.5 USD/GB かかります。Lake のクエリ自体はスキャンしたデータ 1 GB あたり 0.005 USD です。一方 Athena は S3 上の生ログを直接スキャンし、スキャンしたデータ 1 TB あたり 5 USD で課金されます (Parquet 変換や日付でのパーティション分割によりスキャン量を削減できます)。管理イベントを 1 つの証跡で S3 へ配信する分は無料なので、総額はクエリの実行回数よりも Lake に何 GB 取り込むかで決まりやすく、比較の際は月あたりの取り込み量を先に見積もる必要があります。Lake の利点は前処理なしで即クエリできる運用性と、長期保持を CloudTrail 側で完結できる点にあり、取り込む対象を重要なイベントに絞り込める場合はその取り込み課金も抑えられます。独自のパーティション戦略を適用したい場合や、既に S3 にある大量の過去ログを横断分析する場合は Athena が柔軟です。両者は排他ではなく、直近の調査は Lake、長期傾向分析は Athena と使い分ける構成が実務的です。Lake のクエリ結果はダッシュボードとして保存でき、繰り返し実行する定型調査に便利です。

CloudTrail の料金最適化

(2026 年 8 月時点・バージニア北部と東京は下記の単価が同額) CloudTrail の課金は記録先ごとに軸が分かれており、軸ごとに単位が違うため合算する前に整理しておく必要があります。証跡による S3 配信では、管理イベントの 1 コピー目が無料で、2 コピー目以降は 100,000 イベントあたり 2.00 USD です。データイベントは 100,000 イベントあたり 0.10 USD、ネットワークアクティビティイベントも 100,000 イベントあたり 0.10 USD で、S3 の読み取り操作が多い環境ではデータイベントのコストが急増します。データイベントの 5 分集計を有効にすると、集計のために分析したイベント 100,000 件あたり 0.03 USD がデータイベントの料金に加算されます。証跡を作らずに CloudWatch Logs へ直接配信する構成では配信量 1 GB あたり 0.25 USD (公式料金ページの単一表示でリージョン別の記載なし) がかかり、これとは別に CloudWatch Logs 側の取り込み料金も発生します (こちらはリージョンで単価が異なります)。CloudTrail Insights は分析したイベント数で課金され、管理イベントがインサイトの種類ごとに 100,000 イベントあたり 0.35 USD、データイベントが同じく 100,000 イベントあたり 0.03 USD です。CloudTrail Lake は取り込み・保持・クエリの 3 軸で、1 年延長保持料金では CloudTrail の管理・データ・ネットワークアクティビティイベントが 0.75 USD/GB、AWS Config の設定項目や S3 からインポートした過去ログ・AWS 以外のソースが 0.50 USD/GB で、最初の 1 年分の保持は取り込み料金に含まれ、それを超える保持は 0.023 USD/GB・月です。7 年固定保持料金では取り込みが段階制で、最初の 5 TB/月が 2.5 USD/GB、次の 20 TB/月が 1 USD/GB、25 TB/月を超える分が 0.50 USD/GB となり、7 年分の保持が取り込み料金に含まれます。Lake のクエリはスキャンしたデータ 1 GB あたり 0.005 USD です。無料で使える範囲は、過去 90 日間のイベント履歴の閲覧、管理イベントを 1 つの証跡で S3 へ配信する分、そして新規利用者向けの Lake 30 日間トライアル (取り込み 5 GB・スキャン 5 GB まで) で、最低利用料はありません。取り込み料金は非圧縮のデータ量、保持とクエリは最適化・圧縮後のデータ量で計算されるため、同じイベント量でも軸ごとに課金される GB 数が異なります。コスト管理の実務では、データイベントの対象を機密性の高いバケットや重要な Lambda 関数に限定し、全リソースへの一律適用を避けます。S3 に保存されたログはライフサイクルルールで管理し、古いログを S3 Glacier のストレージクラスへ移行してストレージコストを削減します。Lake のイベントデータストアは保持期間を日数で指定できるので、コンプライアンス要件に必要な日数だけを設定し、料金オプションは月あたりの取り込み量が 25 TB を超えるかどうかで選び分けます (公式には 25 TB 未満なら 1 年延長保持、超えるなら 7 年固定保持が推奨されています)。

まとめ

CloudTrail は AWS アカウントの全 API アクティビティを記録する監査ログサービスです。CloudTrail Lake で SQL クエリによる高度な分析を実行し、Insights で異常な API コールパターンを自動検出します。組織証跡で全アカウントのログを一元管理し、EventBridge 連携でセキュリティイベントのリアルタイム検出を実現します。

参考資料 (AWS 公式)

本ページの一次情報は AWS 公式サイトおよび公式ドキュメントです。最新の仕様 / 料金は次の公式ページで確認できます。

本ページと公式ドキュメントの記述が食い違う場合は、公式ドキュメントを正としてください。