概要
CloudTrail からイベントを CloudWatch Logs に転送し、メトリクスフィルターで作成したメトリクスに対してアラームを設定することで監視を行います。
サインイン失敗を監視する方法として、EventBridge を使った即時通知もありますが、「5 分間に 3 回以上」のような時間ベースの集計や閾値監視が必要な場合は、CloudWatch メトリクスとアラームを使用する方法が適しています。
AWSのマネジメントコンソールサインイン次にイベントが発行されるリージョンについては注意が必要なので詳しくは以下の記事を参照してください。
CloudWatch で監視するメリットと EventBridge との使い分け
時間ベースの集計が可能
CloudWatch メトリクスフィルターとアラームを使用することで、「5 分間に 3 回以上」のように、一定期間内でのイベント発生回数を集計し、閾値を超えた場合にアラートを送信することができます。
EventBridge は各イベントを即座に処理しますが、時間ベースの集計は行えません。CloudWatch では、メトリクスの統計期間(例:5 分間)を設定し、その期間内でのイベント発生回数をカウントしてアラームを発火させることができます。
メトリクスの履歴を保持
CloudWatch メトリクスは、設定した保持期間(デフォルトで 15 か月)にわたって履歴を保持します。これにより、過去のサインイン失敗の傾向を分析したり、ダッシュボードで可視化したりすることができます。
柔軟なアラーム設定
CloudWatch アラームでは、以下のような柔軟な設定が可能です:
- 統計期間: メトリクスを集計する期間(1 分、5 分、15 分など)
- 評価期間: アラームを評価する期間(1 回、2 回、3 回など)
- 閾値: アラームを発火させる条件(3 回以上、5 回以上など)
- データポイント: アラームを発火させるために必要なデータポイント数
EventBridge との使い分け
| 要件 | 推奨方法 | 理由 |
|---|---|---|
| 即時通知が必要 | EventBridge | 各イベントを即座に処理し、遅延なく通知可能 |
| 時間ベースの集計が必要(例:5 分間に 3 回以上) | CloudWatch | メトリクスフィルターで集計し、アラームで閾値監視が可能 |
| メトリクスの履歴を保持したい | CloudWatch | 長期間のメトリクス履歴を保持できる |
| シンプルな設定で済ませたい | EventBridge | イベントルールとターゲットの設定のみで完了 |
問題文の要件を確認することが重要です。「5 分間に 3 回以上」のような時間ベースの集計が必要な場合は、CloudWatch メトリクスとアラームを使用する方法が正解になります。
CloudTrail の設定
CloudWatch Logs にイベントを転送するためには、CloudTrail の設定で CloudWatch Logs へのログ配信を有効にする必要があります。
CloudTrail 証跡の作成
CloudTrail のコンソールから、新しい証跡を作成します。
作成時にCloudWatch Logs へのログ配信を有効にします。

管理イベントの読み取りと書き込みを対象にします。

作成完了。

CloudWatch メトリクスフィルターの設定
メトリクスフィルターの作成
CloudWatch Logs のロググループに対して、メトリクスフィルターを作成します。

サインイン失敗を検知するため、以下のようなフィルターパターンを設定します。
{ ($.eventName = "ConsoleLogin") && ($.responseElements.ConsoleLogin = "Failure") }

このフィルターパターンは、eventName が ConsoleLogin かつ responseElements.ConsoleLogin が Failure のイベントに一致します。
メトリクスの設定
メトリクスフィルターで、以下の設定を行います:
- メトリクス名前空間: カスタムメトリクスの名前空間(例:
ConsoleSignIn) - メトリクス名: メトリクスの名前(例:
SignInFailure) - メトリクス値: デフォルトでは
1(各イベントを 1 としてカウント)


作成後の状態は以下の通り。

CloudWatch アラームの設定
アラームの作成
CloudWatch アラームを作成し、先ほど作成したメトリクスを監視対象に設定します。
メトリクス作成直後は、データがないため作成後のリンクから遷移しても以下のような画面になりますので、一度サインインを試行し失敗します。

施行後はメトリクスの詳細が閲覧できるようになるため、ここからアラームを作成します。

アラームの設定項目
メトリクスと条件:
- メトリクス: 先ほど作成したメトリクス(例:
ConsoleSignIn/SignInFailure) - 統計:
Sum(期間内の合計値) - 期間:
5分(5 分間で集計) - 条件:
>= 3(3 回以上)

アクション:
- アラーム状態:
ALARMの場合に SNS トピックに通知を送信

トピックは以下の記事で作成したものを流用しています。
アラーム名を決めて作成完了です。

確認
メトリクスの確認
CloudWatch のメトリクス画面で、作成したメトリクスが正しく記録されているか確認します。サインイン失敗が発生した際に、メトリクスの値が増加していることを確認できます。

アラームの動作確認
意図的にサインイン失敗を発生させ、5 分間に 3 回以上発生した場合にアラームが ALARM 状態になり、SNS トピックに通知が送信されることを確認します。
施行前は以下のようになっています。

サインインを試行し3回失敗します。

アラームに状態になっていることを確認できます。

Slackに通知された内容はこちらです。

試験での出題ポイント
サインイン失敗の監視方法に関する問題では、以下の点が問われることが多いです:
- 「5 分間に 3 回以上」のような時間ベースの集計が必要 → CloudWatch メトリクスフィルターとアラームを使用
- 「即時通知が必要」 → EventBridge を使用
- 「CloudTrail から CloudWatch Logs に転送」 → メトリクスフィルターとアラームの組み合わせが正解
- 「複数リージョンでの監視が必要」 → 各リージョンで CloudTrail、メトリクスフィルター、アラームを設定
「5 分間に 3 回以上」のような要件がある場合は、CloudWatch メトリクスフィルターでイベントを集計し、アラームで閾値を超えた場合に通知を送信する方法が正解になります。
また、CloudTrail → CloudWatch Logs → メトリクスフィルター → アラーム → SNS という一連の流れを理解しているかも重要なポイントです。
まとめ
CloudWatch メトリクスとアラームを使用した監視方法は、時間ベースの集計や閾値監視が必要な場合に適しています。
冒頭にも記載した通り、コンソールサインインのイベントは複数リージョンで発生します。
しっかりと監視する場合は少なくともus-east-1、us-east-2、eu-north-1、ap-southeast-2で監視の仕組みを入れておくことをお勧めします。

