Skip to main content

セキュリティと運用の要『AWS CloudTrail』

こんにちは!新入社員の泉です。このブログではAWSサービスの一つであるCloudTrailについてご紹介します。 

 


目次 

  1. AWSの操作履歴を管理するCloudTrail 
  2. CloudTrailの操作方法 
  3. CloudTrailで作成されたログの確認方法 
  4. JSONログの読み解き方 
  5. CloudTrailの利用料金 
  6. まとめ 

AWSの操作履歴を管理するCloudTrail

CloudTrailは、AWSアカウント内で行われた操作(APIの呼び出し)を自動で記録してくれるサービスです。「誰が・いつ・どんな操作をしたか」を確実に記録してくれる、AWSにおけるセキュリティと運用管理の要です。例えば『EC2を起動した』『S3にアクセスした』といった操作はすべてログに残ります。 

CloudTrailの基本構成は以下のようになっています。 

 ・トレイル:どのリージョンのログを記録するか、どこにログを保存するかを指定 

 ・S3バケット:ログの保存先 

 ・CloudWatch Logs(オプション)リアルタイムログ監視をしたいときに使用する 

CloudWatchを組み合わせたログイン監視

CloudTrail単体ではアラート機能を持たないため、CloudWatchと連携することで異常検知やアラートが可能になります。また、CloudWatch Logsと連携することで、高度なログフィルタリングと検索を行うことができます。 

例)ルートアカウントでのAWSマネジメントコンソールのログイン操作の監視 

  1. ユーザがAWSコンソールにアクセス 
  2. CloudTrailがその操作を記録→CloudWatch Logsにログを配信 
  3. CloudWatchがフィルターで監視(例:ログイン操作) 
  4. 条件一致でCloudWatchアラームが作動→SNSに通知依頼を送信 
  5. 事前に設定していたユーザへ通知が届く(責任者など) 

ログイン監視

CloudTrailが記録する主な内容 

 CloudTrailはAWSで行われた操作について、以下のような情報を記録します。 

 ・実行したユーザ:例)IAMユーザ名 

 ・実行したサービス:例)EC2、S3 

 ・実装した操作:例)StartInstances、DeleteBucket 

 ・実行日時 

 ・操作結果:成功/失敗 

 ・実行元のIPアドレス 

これらのログ内容はJSON形式であとから確認したり検索したりできます。 

 


CloudTrailの操作方法 

AWS CloudTrailを利用するには、まずトレイルというログの保存ルールを作成する必要があります。ここではマネージメントコンソールからの設定手順をご紹介します。 

①AWSマネジメントコンソールにログイン 

②『CloudTrail』サービスを検索して開く 

  1. 画面上部の検索バーに『CloudTrail』と入力 
  2. 検索結果に出てきた『CloudTrail』をクリック 

CloudTrail

トレイルを作成する 

  1. 『証跡の作成』ボタンをクリック 

証跡の作成

④トレイルの基本情報を入力 

  1. トレイル名の入力:表示名となるのでわかりやすい名前にしておくと、あとで管理しやすくなります。 

⑤ログの保存先(S3バケット)を指定:CloudTrailのログはS3に保存されます。 

  1. 既存のS3バケットを使うor新しく作成 
    • 『新しいS3バケットを作成』を選ぶと、CloudTrailが自動でバケットを作成してくれます。 
    • バケット名は自動で設定されますが、必要なら自分で名前を付けましょう。 
  2. バケットのアクセス権限に注意 
    • CloudTrailがログを書き込めるように自動でポリシーが設定されます。 
    • 特に変更しない限り、デフォルト設定のままで問題ありません。 

ログの保存先

⑤イベントタイプの選択 

  1. 『管理者イベント』を有効にした状態にします(デフォルトで有効)。 
イベントタイプ 
内容 
 
管理者イベント 
リソースの管理操作 
EC2起動、S3作成 
データイベント 
S3やLambdaのデータ操作 
S3 GET/PUT、Lambda invoke 
Insightイベント 
API使用の異常を自動検出 
急増API呼び出しなど 
ネットワークアクティビティイベント 
ネットワーク関連のAPI呼び出し 
サブネット作成、VPC作成 
2.APIアクティビティでは『読み取り』『書き込み』のなどのログ種別を選択できるので、自分が記録したいアクティビティに合わせてチェックを入れてください。 

APIアクティビティ

⑥『次へ』ボタンをクリックし、設定を確認後、『作成』ボタンをクリックすると、CloudTrailのトレイルが有効になり、以降のAWS操作が記録されていきます。 

次へ

 


CloudTrailで作成されたログの確認方法

①AWSマネジメントコンソールで『S3』サービスを開く 

②CloudTrailで設定したログ保存先のS3バケットを選択 

S3バケットを選択

③ログファイルのダウンロード 

  1. 以下のフォルダ構造から.json.gzの形式のファイルを探します。 
    • AWSLogs/アカウントID/CloudTrail/リージョン名/年/月/日/ログファイル.json.gz 

json.gzの形式

json.gzの形式ファイル

④.json.gzのログファイルをダウンロードする 

  1. ダウンロードした.json.gzは圧縮ファイルのため、ダウンロード先で展開します。 

ダウンロード先で展開

⑤④で展開された.jsonファイルを好みのエディタ(VS Codeなど)で開く 

  1. ファイルをエディタで開くと、次のような形式で複数のイベントが含まれています。 
  2. 以下は『EC2インスタンスの開始』(StartInstances)操作のログ出力例です。 

EC2インスタンスの開始

 


JSONログの読み解き方(例:StartInstancesイベント 

ここでは先ほどダウンロードしたJSONログを読み解いていきます。そもそもJSONとは軽量なデータ交換フォーマットであり、人間にも読みやすく、プログラムでも扱いやすい構造になっています。基本構造として、データはキーと値のペアで表現されます。ここではEC2インスタンスの開始を意味するStartInstancesイベントのログについて読み解いていきます。 

UserIdentity誰がその操作を行ったのかを示す情報源 

type:アクションを実行したユーザの種類(IAMUser、Rootなど) 
principalId:AWS内部で一意に割り当てられたユーザまたはロールのID 
arn:実行者のARN(Amazonリソースネーム)形式の識別子 
accountId:操作を行ったユーザが属するAWSアカウントのID 
accessKeyId:操作に使われたアクセスキーID(APIリクエストの追跡に便利)
userName:IAMユーザ名 
sessionContext:セッション情報やMFA使用状況 

eventTime:操作が行われた日時(UTC)*UTCとは協定世界時のことで、このUTCに9時間を足すと日 本での時間となります。 

  • ここでは2025年5月21日15時40分(日本時間) 

eventSource:操作されたAWSサービス 

  • ここではEC2 

eventName実行された操作名 

  • ここではStartInstancesであり、EC2インスタンスの開始を意味する 

awsRegion:操作が行われたリージョン 

  • ここではap-northeast-3であり、大阪リージョンを意味する 

sourceIPAddress:操作を実行したユーザのIPアドレス 

このようにCloudTrailログを確認すると、AWSアカウント内での操作を確認することができます。 

 


CloudTrailの利用料金 

 CloudTrailの利用料金は、S3に配信されたイベント数に応じた従量課金となります。S3バケットに保存されたログは自動では削除されないため、必要に応じてライフサイクルルールを設定し、削除またはアーカイブするのがおすすめです。 

 


まとめ

今回は、AWS CloudTrailの基本的な使い方から、実際のログの読み方、StartInstancesイベントの確認方法までを紹介しました。

CloudTrailは、「誰が・いつ・どんな操作をしたか」を確実に記録してくれる、AWSにおけるセキュリティと運用管理の要です。設定もシンプルで、S3バケットさえあればすぐに始められるため、すべてのAWSアカウントで有効化しておくサービスとも言えます。 

また、CloudTrailはCloudWatch LogやSNSなど、ほかのAWSサービスと組み合わせることで、「特定操作を感知したら通知を飛ばす」「異常なアクセスパターンを監視する」といった高度な監査や自動対応も可能になります。