
セキュリティと運用の要『AWS CloudTrail』
こんにちは!新入社員の泉です。このブログではAWSサービスの一つであるCloudTrailについてご紹介します。
目次
- AWSの操作履歴を管理するCloudTrail
- CloudTrailの操作方法
- CloudTrailで作成されたログの確認方法
- JSONログの読み解き方
- CloudTrailの利用料金
- まとめ
AWSの操作履歴を管理するCloudTrail
CloudTrailは、AWSアカウント内で行われた操作(APIの呼び出し)を自動で記録してくれるサービスです。「誰が・いつ・どんな操作をしたか」を確実に記録してくれる、AWSにおけるセキュリティと運用管理の要です。例えば『EC2を起動した』『S3にアクセスした』といった操作はすべてログに残ります。
CloudTrailの基本構成は以下のようになっています。
・トレイル:どのリージョンのログを記録するか、どこにログを保存するかを指定
・S3バケット:ログの保存先
・CloudWatch Logs(オプション):リアルタイムでログ監視をしたいときに使用する
CloudWatchを組み合わせたログイン監視
CloudTrail単体ではアラート機能を持たないため、CloudWatchと連携することで異常検知やアラートが可能になります。また、CloudWatch Logsと連携することで、高度なログフィルタリングと検索を行うことができます。
例)ルートアカウントでのAWSマネジメントコンソールのログイン操作の監視
- ユーザがAWSコンソールにアクセス
- CloudTrailがその操作を記録→CloudWatch Logsにログを配信
- CloudWatchがフィルターで監視(例:ログイン操作)
- 条件一致でCloudWatchアラームが作動→SNSに通知依頼を送信
- 事前に設定していたユーザへ通知が届く(責任者など)
CloudTrailが記録する主な内容
CloudTrailはAWSで行われた操作について、以下のような情報を記録します。
・実行したユーザ:例)IAMユーザ名
・実行したサービス:例)EC2、S3
・実装した操作:例)StartInstances、DeleteBucket
・実行日時
・操作結果:成功/失敗
・実行元のIPアドレス
これらのログ内容はJSON形式であとから確認したり検索したりできます。
CloudTrailの操作方法
AWS CloudTrailを利用するには、まずトレイルというログの保存ルールを作成する必要があります。ここではマネージメントコンソールからの設定手順をご紹介します。
①AWSマネジメントコンソールにログイン
②『CloudTrail』サービスを検索して開く
- 画面上部の検索バーに『CloudTrail』と入力
- 検索結果に出てきた『CloudTrail』をクリック
③トレイルを作成する
- 『証跡の作成』ボタンをクリック
④トレイルの基本情報を入力
- トレイル名の入力:表示名となるのでわかりやすい名前にしておくと、あとで管理しやすくなります。
⑤ログの保存先(S3バケット)を指定:CloudTrailのログはS3に保存されます。
- 既存のS3バケットを使うor新しく作成
- 『新しいS3バケットを作成』を選ぶと、CloudTrailが自動でバケットを作成してくれます。
- バケット名は自動で設定されますが、必要なら自分で名前を付けましょう。
- バケットのアクセス権限に注意
- CloudTrailがログを書き込めるように自動でポリシーが設定されます。
- 特に変更しない限り、デフォルト設定のままで問題ありません。
⑤イベントタイプの選択
- 『管理者イベント』を有効にした状態にします(デフォルトで有効)。
イベントタイプ
|
内容
|
例
|
管理者イベント
|
リソースの管理操作
|
EC2起動、S3作成
|
データイベント
|
S3やLambdaのデータ操作
|
S3 GET/PUT、Lambda invoke
|
Insightイベント
|
API使用の異常を自動検出
|
急増API呼び出しなど
|
ネットワークアクティビティイベント
|
ネットワーク関連のAPI呼び出し
|
サブネット作成、VPC作成
|
⑥『次へ』ボタンをクリックし、設定を確認後、『作成』ボタンをクリックすると、CloudTrailのトレイルが有効になり、以降のAWS操作が記録されていきます。
CloudTrailで作成されたログの確認方法
①AWSマネジメントコンソールで『S3』サービスを開く
②CloudTrailで設定したログ保存先のS3バケットを選択
③ログファイルのダウンロード
- 以下のフォルダ構造から.json.gzの形式のファイルを探します。
- AWSLogs/アカウントID/CloudTrail/リージョン名/年/月/日/ログファイル.json.gz
④.json.gzのログファイルをダウンロードする
- ダウンロードした.json.gzは圧縮ファイルのため、ダウンロード先で展開します。
⑤④で展開された.jsonファイルを好みのエディタ(VS Codeなど)で開く
- ファイルをエディタで開くと、次のような形式で複数のイベントが含まれています。
- 以下は『EC2インスタンスの開始』(StartInstances)操作のログ出力例です。
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サービスと組み合わせることで、「特定操作を感知したら通知を飛ばす」「異常なアクセスパターンを監視する」といった高度な監査や自動対応も可能になります。