InfraAcademy

InfraAcademy Blog

CloudWatchとCloudTrailの違いは?CLF-C02で「監視」と「操作の記録」を取り違えないための整理

著者: ryu | #aws #CloudWatch #資格
Linuxをブラウザで試してみる

Linux・ネットワーク・AWSを、環境構築なしで実践学習できます

この記事を共有

こんにちは、インフラエンジニアのryuです。

この記事は、AWSクラウドプラクティショナー(CLF-C02)の勉強をしていて、CloudWatchとCloudTrailの違いがあいまいな人に向けて書いています。

どちらも名前が「Cloud」で始まり、どちらもログを扱います。問題文に「記録」「ログ」「監視」と出てくると、どちらを選べばいいか迷ってしまいますよね。

この記事では、2つの違いを何を記録するサービスなのかという1点から整理します。あわせて、よく一緒に出てくるAWS Configとの使い分け、CloudShellでの確認、確認問題4問と進めていきます。

CLF-C02全体の勉強の進め方は、CLF-C02の勉強方法の記事にまとめています。

CloudWatchとCloudTrailの違いとは?

まずは、2つの違いを表で並べてみます。

項目 CloudWatch CloudTrail
ひとことで言うと リソースやアプリケーションの監視 AWSアカウントで行われた操作の記録
記録するもの CPU使用率などのメトリクス、アプリケーションのログ 誰が、いつ、どこから、どのAPIを呼んだか
答えてくれる問い 今サーバーは元気か?負荷は高すぎないか? このEC2を停止したのは誰か?
よくある使い方 アラームで通知する、ダッシュボードで見る 不正な操作の調査、監査

いちばん大きな違いは、見ている対象です。CloudWatchはリソースの状態を見ていて、CloudTrailは人やサービスが行った操作を見ています。

CloudWatchは「リソースがどういう状態か」、CloudTrailは「誰が何をしたか」を記録するサービスです。迷ったら、問題文がどちらを知りたがっているかを考えます。

CloudWatchはリソースの状態を見る

CloudWatchは、AWSのリソースやアプリケーションを監視するサービスです。主な機能は次の4つです。

機能 内容
メトリクス CPU使用率やネットワークの通信量などを、時系列の数値として集める
アラーム メトリクスがしきい値を超えたときに通知したり、アクションを実行したりする
ログ(CloudWatch Logs) アプリケーションやOSのログを集めて保存し、検索する
ダッシュボード メトリクスをグラフにして、1つの画面で見られるようにする

たとえばEC2では、何も設定しなくてもCPU使用率などのメトリクスが5分ごとに送られます。これを基本モニタリングと呼びます。詳細モニタリングを有効にすると1分ごとになりますが、こちらは料金がかかります。

1つ気をつけたいのが、メモリの使用率です。EC2の標準のメトリクスにはメモリの使用率が含まれていないので、見たいときはインスタンスにCloudWatchエージェントを入れて送ります。

CloudWatchを使った死活監視はCloudWatchでWebサイトの死活監視をする記事、請求額のアラームはCloudWatchで請求アラームを有効にする記事で手順を紹介しています。

CloudTrailは誰が何をしたかを記録する

CloudTrailは、AWSアカウントの中で行われた操作を記録するサービスです。マネジメントコンソールでの操作も、AWS CLIやSDKからの操作も、AWSのAPIの呼び出しとして記録されます。

記録には、操作した人やロール、日時、送信元のIPアドレス、呼び出したAPIの名前などが含まれます。そのため、誰がいつEC2を停止したのか、誰がセキュリティグループを変更したのか、といったことを後から調べられます。

CloudTrailには、何も設定しなくても使えるイベント履歴があります。ここでは、リージョンごとに過去90日分の管理イベントを、追加の料金なしで見られます。

90日より長く残したいときは、証跡(トレイル)を作ってS3のバケットにログを保存します。この場合は、S3の保存料金がかかります。

コンソールでイベント履歴を見る手順は、CloudTrailでイベントログを確認する記事で紹介しています。

AWS Configも入れた3つの使い分け

CLF-C02では、CloudWatchとCloudTrailに加えて、AWS Configが一緒に出てくることがよくあります。3つを並べると、次のようになります。

サービス 記録するもの 答えてくれる問い
CloudWatch リソースの状態(メトリクス)とログ 今、負荷は高いか?異常はないか?
CloudTrail APIの呼び出し(操作) 誰が、いつ、何をしたか?
AWS Config リソースの設定とその変化 この設定は、いつ・どう変わったか?ルールに合っているか?

AWS Configは、リソースの設定を記録して、その変化を追いかけるサービスです。ルールを決めておくと、ルールに合っていないリソースを見つけることもできます。たとえば、暗号化されていないボリュームや、外部に公開されている設定を見つけるといった使い方です。

CloudTrailとConfigは似ていますが、CloudTrailは「操作」を、Configは「設定の状態」を記録します。同じセキュリティグループの変更でも、誰が変更したかはCloudTrail、変更の前後で設定がどうなったかはConfigで見ます。

問題文のキーワードで見分ける

試験の問題では、問題文の言葉からサービスを選べることが多いです。よく出てくる言葉を表にしておきます。

問題文に出てくる言葉 選ぶサービス
CPU使用率、しきい値、アラーム、通知、ダッシュボード CloudWatch
アプリケーションのログを集めて検索したい CloudWatch(CloudWatch Logs)
誰が操作したか、APIの呼び出し、監査、ユーザーのアクティビティ CloudTrail
設定の変更履歴、設定がルールに準拠しているか、構成の記録 AWS Config

「ログ」という言葉だけで判断しないのがポイントです。アプリケーションやOSのログならCloudWatch Logs、AWSへの操作の記録ならCloudTrailです。

組み合わせて使う例

3つのサービスは、どれか1つを選ぶものではなく、組み合わせて使うこともよくあります。

たとえば、ルートユーザーでログインがあったら通知したいとします。CloudTrailの証跡をCloudWatch Logsに送り、ログの中からルートユーザーの操作を見つけるメトリクスフィルターを作って、CloudWatchのアラームで通知する、という構成がよく使われます。

この場合、操作を記録するのはCloudTrail、記録を見張って通知するのはCloudWatchです。役割が分かれていることを意識すると、組み合わせの問題も解きやすくなります。

ルートユーザーやIAMの考え方は、IAMユーザーとIAMロールの違いの記事でも整理しています。

今日やる練習:CloudShellでCloudTrailのイベント履歴を見る

ここで、実際にAWSで手を動かしてみましょう。使うのは AWS CloudShell と、AWS CLIのコマンドです。

CloudShellは、追加の料金なしで使えるサービスです。ここで打つコマンドは情報を表示するだけで、リソースは作りません。

手順1:直近の操作を5件表示する

マネジメントコンソールにログインして、画面上部のアイコンからCloudShellを開きます。開いたら、次のコマンドを打ちます。

aws cloudtrail lookup-events --max-results 5 \
  --query 'Events[].[EventTime,EventName,Username]' \
  --output table

lookup-events は、CloudTrailのイベント履歴を検索するコマンドです。--query で、日時、APIの名前、操作したユーザーの3つだけを表に出しています。

結果には、このリージョンで最近行われた操作が新しい順に並びます。

EventName の欄を見てみてください。Describe や List で始まるものは情報を見ただけの操作、Create や Delete で始まるものはリソースを変更した操作です。

CloudShellの開き方や、作業用のIAMユーザーの用意がまだの人は、AWS初心者が最初に試したい3つの操作の記事を先にやっておくと安心です。

手順2:イベント名で絞り込む

次は、特定の操作だけを探してみます。たとえば、EC2のインスタンスを起動した記録だけを見たいときは、次のように打ちます。

aws cloudtrail lookup-events \
  --lookup-attributes AttributeKey=EventName,AttributeValue=RunInstances \
  --max-results 5 \
  --query 'Events[].[EventTime,Username]' \
  --output table

EC2を起動したことがなければ、何も表示されません。それで正常です。

イベント履歴はリージョンごとに分かれているので、EC2を起動したリージョンとCloudShellのリージョンがそろっているかも確認してみてください。

これがCloudTrailの「誰が、いつ、何をしたか」です。同じことをCloudWatchのメトリクスで調べることはできない、という点を実際に確かめておくと、試験で迷いにくくなります。

CLF-C02の確認問題

ここからは、この記事の内容をもとに作ったオリジナルの確認問題です。本番の問題ではありません。

問題1:インスタンスを停止したのは誰か

本番環境のEC2インスタンスが、昨日の夜に停止されていました。誰が停止したのかを調べるのに使うサービスはどれでしょうか。

  • A. Amazon CloudWatch
  • B. AWS CloudTrail
  • C. AWS Trusted Advisor

正解:B

誰がどのAPIを呼んだかを記録しているのはCloudTrailです。インスタンスの停止も StopInstances というAPIの呼び出しとして記録されます。CloudWatchはリソースの状態を見るサービスで、操作した人は分かりません。

問題2:CPU使用率が高くなったら通知したい

EC2インスタンスのCPU使用率が80%を超えたら、担当者に通知したいと考えています。使うサービスはどれでしょうか。

  • A. Amazon CloudWatch
  • B. AWS CloudTrail
  • C. AWS Config

正解:A

CPU使用率はCloudWatchのメトリクスです。CloudWatchのアラームでしきい値を決め、超えたときに通知できます。

問題3:設定がルールに合っているか確認したい

セキュリティグループの設定が社内のルールに合っているかを継続的に確認し、変更の履歴も残したいと考えています。もっとも適したサービスはどれでしょうか。

  • A. Amazon CloudWatch
  • B. AWS CloudTrail
  • C. AWS Config

正解:C

リソースの設定と変更の履歴を記録し、ルールに合っているかを評価するのはAWS Configです。CloudTrailでも誰が変更したかは分かりますが、設定がルールに合っているかの評価はしません。

問題4:アプリケーションのログを集めたい

EC2で動くWebアプリケーションのログを1か所に集めて、エラーを検索したいと考えています。使うサービスはどれでしょうか。

  • A. Amazon CloudWatch Logs
  • B. AWS CloudTrail
  • C. AWS Config

正解:A

アプリケーションやOSのログを集めて検索するのはCloudWatch Logsです。CloudTrailが記録するのはAWSのAPIの呼び出しで、アプリケーションが出すログではありません。

4問のうち、迷った問題はあったでしょうか。迷った問題は、正解していても、なぜほかの選択肢が違うのかを説明できるようにしておきましょう。

CLF-C02では、どこで問われる?

CLF-C02の試験ガイドでは、この3つのサービスは「セキュリティとコンプライアンス」の分野に出てきます。この分野は試験全体の30%を占めています。

試験ガイドでは、ガバナンスとコンプライアンスに役立つサービスの例として、CloudWatchによる監視、CloudTrailやAWS Configによる監査が挙げられています。

CLF-C02は、細かい設定の手順よりも、どの場面で何を使うかを問う試験です。この記事の表にある「答えてくれる問い」を説明できれば、この3つのサービスで迷うことはかなり減ります。

サービスが多くて覚えきれないと感じている人は、AWSのサービスを流れで整理する記事もあわせて読んでみてください。暗記だけで解けない問題が気になる人は、CLF-C02は暗記だけで受かるか?の記事もおすすめです。

InfraAcademyで続ける

監視と記録のサービスが整理できたら、ほかの分野の問題でも理解を確かめてみましょう。

InfraAcademyでは、トップページのInfraAcademy の資格模擬問題で「AWS認定 クラウドプラクティショナー模擬試験150問」を解けます。セキュリティとコンプライアンスの分野で間違えた問題があれば、この記事のキーワードの表に戻って、どのサービスの話なのかを確かめてみてください。

AWSの操作を順番に学びたい人は、InfraAcademyのAWSの講座も使えます。講座の中のシミュレーターで、AWSの操作を練習できます。講座の順番はAWSのロードマップにまとめています。

まとめ

CloudWatchとCloudTrailの違いを振り返ります。

  • CloudWatchはリソースの状態を見るサービスで、メトリクス、アラーム、ログ、ダッシュボードの機能がある
  • CloudTrailは、誰が、いつ、どのAPIを呼んだかを記録するサービス
  • CloudTrailのイベント履歴では、過去90日分の管理イベントを追加料金なしで見られる
  • AWS Configは、リソースの設定とその変化を記録し、ルールに合っているかを評価する
  • 「ログ」という言葉だけで選ばず、アプリのログか、AWSへの操作の記録かを見分ける

3つのサービスの役割が分かれば、セキュリティの問題だけでなく、運用や監視の問題も読みやすくなります。

1つずつ手を動かして確かめながら、合格まで進んでいきましょう。応援しています。

参考

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

株式会社InfraAcademy 代表 / エンジニア

大手メーカーでインフラエンジニアとして勤務した後、ベンチャー企業・スタートアップでフルスタックエンジニアを経験。その後、起業し学習サービス「InfraAcademy」を運営しています。
保有資格:ネットワークスペシャリストなど 運営会社:株式会社InfraAcademy

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る