SAA 補足 ログのまとめ(種類・保存先・分析)

更新日:

← AWS SAA / 関連 → SAA_補足_監視と監査(CloudTrail・CloudWatch・Config)

まず一言で

ログは「何の記録か」で選ぶ。 操作なら CloudTrail、通信なら VPC フローログ、リクエストなら ELB・CloudFront・S3 のアクセスログ、攻撃なら WAF のログ。
保存は S3、すぐ見る・通知するなら CloudWatch Logs、分析は Athena が基本の組み合わせ。

ログの種類の早見表

知りたいこと使うログ送れる先既定で有効
誰が AWS を操作したか(API 呼び出し)CloudTrailS3、CloudWatch Logs、EventBridge直近90日の管理イベントのみ
どの IP からどの IP へ通信したか、許可・拒否 されたかVPC フローログCloudWatch Logs、S3、Firehose✕
ALB へのリクエスト(URL・ステータス・処理時間)ELB アクセスログS3 のみ✕
CloudFront へのリクエストCloudFront 標準ログS3、CloudWatch Logs、Firehose✕
CloudFront へのリクエストを 数秒で 見たいCloudFront リアルタイムログKinesis Data Streams✕
S3 バケットへのリクエストS3 サーバーアクセスログ または CloudTrail データイベントS3✕
WAF がどのリクエストを止めたかWAF ログCloudWatch Logs、S3、Firehose✕
VPC 内からの DNS 問い合わせRoute 53 Resolver クエリログCloudWatch Logs、S3、Firehose✕
アプリ・OS のログ(EC2)CloudWatch エージェントCloudWatch Logs✕(エージェントを入れる)
Lambda の出力自動で CloudWatch LogsCloudWatch Logs○
RDS のエラーログ・スロークエリログRDS のログのエクスポートCloudWatch Logs✕
サーバーで打ったコマンドSession Manager のセッションログS3、CloudWatch Logs✕
リソースの設定の変更履歴ConfigS3(設定のスナップショット・履歴)✕

→ ほとんどのログは 自分で有効にしないと残らない。「ログが無くて原因がわからない」という問題文なら、まず有効化が答え。

よく出るログの中身

VPC フローログ

  • VPC・サブネット・ネットワークインターフェイス(ENI) の単位で作れる
  • 1行に 送信元 / 送信先の IP・ポート、プロトコル、バイト数、ACCEPT / REJECT が入る
  • パケットの中身は記録しない(中身まで見たいなら トラフィックミラーリング)
  • 記録されない通信もある:Amazon の DNS サーバーへの問い合わせ、インスタンスメタデータ(169.254.169.254)、DHCP、ARP など
  • 通信の速度には影響しない。作った後に設定は変えられない(作り直す)

→ 「セキュリティグループや NACL で拒否された通信を調べたい」なら VPC フローログ(REJECT の行を見る)。

ELB のログ

  • アクセスログ:リクエストごとの時刻、クライアント IP、URL、ステータスコード、処理時間。S3 にだけ 保存できる
  • ALB には 接続ログ(TLS の情報、クライアント証明書)と ヘルスチェックログ もある(どれも S3)
  • ALB の後ろの EC2 から見ると送信元 IP は ALB になる。元のクライアント IP は X-Forwarded-For ヘッダー か ALB のアクセスログで確認する

S3 のアクセス記録は2通り

S3 サーバーアクセスログCloudTrail データイベント
料金ログを置く S3 の保管料だけデータイベントの料金がかかる
届き方ベストエフォート(遅れる・抜けることがある)確実、数分で届く
向いている用途アクセス傾向の分析、安く残したいセキュリティ監査、EventBridge で即時に反応

CloudFront のログ

  • 標準ログ:数分おきにまとめて届く。v2 では S3 に加えて CloudWatch Logs・Firehose にも送れ、Parquet 形式も選べる
  • リアルタイムログ:Kinesis Data Streams に数秒で届く。追加料金がかかる

ログの集め方・保存のしかた

CloudWatch Logs

  • ロググループ(保存期間やアクセス権をまとめる単位)の中に、ログストリーム(送り元ごとの流れ)がある
  • 保存期間は既定で「無期限」。放っておくと料金が増え続けるので、ロググループごとに期間を決める ← コスト最適化で出る
  • ログクラスは 標準 と、安いかわりに機能が少ない 低頻度アクセス(Infrequent Access) の2つ
  • メトリクスフィルター:「ERROR という文字が5分で10回」のように数を数えてメトリクスにし、アラームにつなぐ
  • サブスクリプションフィルター:届いたログをすぐに Lambda・Kinesis Data Streams・Firehose へ流す
  • S3 へのエクスポート:長期保存は S3 に移すと安い
  • ロググループの削除防止の設定もある

長期保存は S3

各種ログ ─▶ S3(ログ専用バケット)
              ├ ライフサイクルで Glacier 系へ移す → 安く長く残す
              ├ Object Lock(WORM)→ 消せない・書き換えられない(監査・法令対応)
              └ 別のログ専用アカウントに置く(Organizations)→ 本番アカウントが乗っ取られても残る

たくさんのアカウントのログを1か所に

  • CloudTrail の組織の証跡:全アカウントの操作ログを1つのバケットへ
  • Amazon Security Lake:CloudTrail・VPC フローログ・Route 53 のログなどのセキュリティ関連ログを、共通の形式(OCSF)に変えて、組織全体から1か所の S3 に集める
  • Firehose:ログを受け取って S3・OpenSearch・Redshift などへ自動で届ける(届ける前に形式も変えられる)

ログを分析する

道具向いている使い方試験でのキーワード
CloudWatch Logs InsightsCloudWatch Logs のログをその場で検索・集計「CloudWatch Logs のログをすぐに調べたい」
AthenaS3 のログに SQL をかける。サーバー不要、読んだ量だけ課金「S3 のログを 運用負荷少なく 分析」← 定番
OpenSearch Service全文検索とダッシュボード。ほぼリアルタイム「ログを可視化・全文検索」
GuardDutyCloudTrail・VPC フローログ・DNS ログを 自動で分析して脅威を検知「不審な通信・操作を自動で見つける」(自分でログを有効にしなくてよい)

定番パターン

やりたいこと答え
誰が EC2 を削除したか調べたいCloudTrail
90日より前の操作を調べたいCloudTrail の証跡を S3 に保存しておき、Athena で検索
SG で拒否された通信を調べたいVPC フローログ(REJECT)
ALB のログを安く長期保存して、たまに分析ALB アクセスログ → S3 → Athena
アプリのエラーが増えたら通知CloudWatch Logs のメトリクスフィルター → アラーム → SNS
ログを改ざんできないように残したいS3 Object Lock、CloudTrail のログファイルの整合性検証
全アカウントのログを1か所に組織の証跡、Security Lake、ログ専用アカウントの S3
ログをリアルタイムで別システムに流したいサブスクリプションフィルター → Kinesis / Firehose
CloudWatch Logs の料金が増え続けている保存期間を設定する、古いログは S3 へ

確認ポイント

  • 「操作」「通信」「リクエスト」「攻撃」のログがそれぞれ何か言える
  • VPC フローログはパケットの中身を記録しないと言える
  • ELB のアクセスログの保存先は S3 だけと言える
  • S3 サーバーアクセスログと CloudTrail データイベントの違いを説明できる
  • CloudWatch Logs の保存期間は既定で無期限と言える
  • S3 のログを分析するなら Athena、とすぐ判断できる

関連ノート