説明
CreateRoute、ReplaceRoute、DeleteRoute などのルートテーブル変更を監視するログフィルターとアラームがないと、通信経路の変化に気付くのが遅れる場合があります。ルーティングの変更は、サービスの接続性やセキュリティ上の経路に影響することがあります。
誤ったルーティングは迂回経路や通信障害を生む可能性があります。実際の到達可能性はゲートウェイやセキュリティグループなどにも依存するため、変更イベントと併せて確認してください。
想定される影響
- 通信経路の変更の把握が遅れる場合があります。
- 誤ったルーティングによるサービス障害の原因調査が遅れる場合があります。
- ネットワークのセキュリティ経路の変化への対応が遅れるおそれがあります。
対処方法
- 重要な CloudTrail ルートテーブル変更イベントを CloudWatch Logs に配信し、ログメトリクスフィルターを設定してください。
- 生成されるメトリクス名と名前空間をアラームに接続し、評価条件と SNS 配信経路を設定してください。
- 運用で必要な作成、置換、削除、関連付けの変更が対象に含まれることを確認してください。アラーム条件を満たすテストイベントで通知を検証してください。
例
フィルターとメトリクスの接続を示す抜粋です。比較演算子、評価期間、統計と集計期間、通知アクション、CloudTrail 配信、SNS のサブスクリプションは別途補う必要があります。ここではフィルター名とメトリクス名が同じため、フィルターの id を参照しています。
変更前
hcl
resource "aws_cloudwatch_metric_alarm" "example" {
alarm_name = "CIS-3.13-RouteTableChanges"
metric_name = "XXXX NOT YOUR FILTER XXXX"
namespace = "CIS_Metric_Alarm_Namespace"
threshold = "1"
}
変更後
hcl
resource "aws_cloudwatch_log_metric_filter" "example" {
name = "CIS-RouteTableChanges"
pattern = "{ ($.eventName = CreateRoute) || ($.eventName = CreateRouteTable) || ($.eventName = ReplaceRoute) || ($.eventName = ReplaceRouteTableAssociation) || ($.eventName = DeleteRouteTable) || ($.eventName = DeleteRoute) || ($.eventName = DisassociateRouteTable) }"
log_group_name = aws_cloudwatch_log_group.CIS_CloudWatch_LogsGroup.name
metric_transformation {
name = "CIS-RouteTableChanges"
namespace = "CIS_Metric_Alarm_Namespace"
value = "1"
}
}
resource "aws_cloudwatch_metric_alarm" "example" {
alarm_name = "CIS-3.13-RouteTableChanges"
metric_name = aws_cloudwatch_log_metric_filter.example.id
namespace = "CIS_Metric_Alarm_Namespace"
threshold = "1"
}
補足:
- 変更前: アラームのメトリクス名がルート変更のメトリクスに接続されていません。
- 変更後: 列挙したルーティングイベントをメトリクスに変換し、アラームに接続します。必要なイベント範囲と省略された設定を確認してください。通知によって経路変更が阻止されるわけではありません。