📝

CloudTrail起点のイベント駆動を考える

2023/12/11に公開

はじめに

この記事はDevOps on AWS大全の一部です。
DevOps on AWS大全の一覧はこちら

この記事ではCloudTrailに関連する内容を超詳細にまとめています。

具体的には以下流れで説明します。

  • CloudTrailとは
  • CloudTrailの仕組み
  • CloudTrail for Advance
  • CloudTrailのベストプラクティス

AWSの区分でいう「Level 200:トピックの入門知識を持っていることを前提に、ベストプラクティス、サービス機能を解説するレベル」の内容です。

この記事を読んでほしい人

  • CloudTrailがどういうサービスか説明できるようになりたい人
  • CloudTrailを採用するときのベストプラクティスを説明できるようになりたい人
  • AWS Certified DevOps Engineer Professionalを目指している人

CloudTrailとは

AWS CloudTrailは、AWSアカウントのアクティビティを記録、監視、保持するサービスです。
AWSリソースへのアクセスやアクションを追跡できるので、セキュリティ分析、リソース変更追跡、コンプライアンス監査などに利用できます。

AWS CloudTrailは、AWSマネージメントコンソール、AWS SDK、AWS CLI、AWS APIを通じて行われるアクションを記録します。
これには、EC2インスタンスの起動や終了、S3バケットの作成や削除などが含まれます。
これらのアクションはイベントとして記録され、S3バケットやCloudWatch Logsに保存されます

CloudTrailの仕組み

AWS CloudTrailは、AWSアカウントの作成時から証跡(Trail)と呼ばれるログ収集設定を使って、アカウント内で実行されるアクションを自動で記録できます。
AWSアカウントでアクティビティが発生した場合、そのアクティビティはCloudTrailイベントに記録されます。

なお、CloudTrailイベントには3つの種類があります。

1つは管理イベントと呼ばれるイベントでAWSアカウントのリソースで実行される管理オペレーションです。
具体的にはネットワーク構成変更やログ記録の設定などです。

2つめがデータイベントと呼ばれるイベントでAWSアカウントのリソース上またはリソース内で実行されたリソースオペレーションです。
具体的にはS3のオブジェクトレベルのAPIアクティビティやLambda関数の実行アクティビティです。

最後がインサイトイベントと呼ばれるイベントで、管理イベントのAPIコールボリュームが通常のパターンから外れた場合に生成されます。
具体的にはIAMアクションのバーストやリソースプロビジョニングの急上昇です。

普段CloudTrailを使う上でこのイベント種別を意識することはあまりありませんが、どういった操作が記録されるかを把握しておくとインシデント調査や監査で役に立ちます。

CloudTrail for Advance

イベント記録の保持

CloudTrailが記録されたイベントを保持できるのは90日までです。
そのため、それ以上の期間イベントを保持したければS3にログとして出力し、解析にはAthenaを利用する必要があります。

一般に、CloudTrailは監査目的でも使うのでS3への出力は設定しておくことがベストプラクティスです。
また、S3に出力した際にはコスト最適化のためにライフサイクルを設定し、より安いTierに移行できるようにしておくとよいでしょう。

CloudTrailイベント駆動

CloudTrailは基本的にAWS内のAPI CALLをすべて記録しているので、このイベントを利用するとイベント駆動のアーキテクチャを組みやすくなります。

特に、実プロジェクトではインシデント検知のための通知機構として利用します。

例えばDynamoDBのテーブル削除をしたときや、EC2のセキュリティグループを変更したとき、特権を付与しているIAMロールが使用された時などインシデントにつながりかねないイベントを全員が見えるところに通知することで意図しない操作に対する抑止力あるいは早期発見につなげることができます。

CloudTrailのベストプラクティス

AWS CloudTrailのベストプラクティスは以下の通りです。

ベストプラクティス 説明
すべてのリージョンに適用される証跡の作成 AWSアカウントでIAM ID、またはサービスが実行したイベントの完全な記録を取得するには、すべてのAWSリージョンでイベントをログに記録するように各証跡を設定する必要があります。
Amazon S3バケットへのログ連携 CloudTrailログファイルはS3に連携して監査用途で長期間保存することが推奨です。
CloudTrailログファイルの整合性を有効にする 検証されたログファイルは、セキュリティおよびフォレンシック調査で特に重要です。
Amazon CloudWatch Logsとの統合 CloudWatch Logsを使用すると、CloudTrailによってキャプチャされた特定のイベントに関するアラートを監視および受信できます。
AWS Security Hubの使用 AWS Security Hubを使用して、セキュリティのベストプラクティスに関連するCloudTrailの使用状況をモニタリングします。

この中で、実プロジェクトでも大切かつ試験によく出るのはログファイルの整合性です。
ログファイルの整合性を有効にしていない場合、監査ログの改ざんが可能になってしまいます。

AWSでインシデントが起きた時、よりどころになるのはCloudTrailログなので、このログが改ざんされてしまうと調査がお手上げになります。
そのため、整合性は必ず有効にしておくことが必要です。

まとめ

この記事ではCloudTrailに関連する内容を超詳細にまとめました。

  • CloudTrailとは
  • CloudTrailの仕組み
  • CloudTrail for Advance
  • CloudTrailのベストプラクティス

次回はAmazon SQSについて超詳細解説します。

Discussion