AWS Organizations の変更を監視するアラームの未設定

AWS Organizations の変更を監視する CloudWatch フィルターとアラームがないと、組織内の権限変更に気付くのが遅れる場合があります。

説明

AWS Organizations では、アカウントの招待、ポリシーの関連付け、組織単位の作成、アカウントの移動など、重要な管理操作が行われます。該当する CloudTrail イベントを CloudWatch アラームに接続していないと、組織構造や権限の変更に気付くのが遅れる場合があります。

複数のアカウントや組織単位を運用する環境では、Organizations の変更が権限の範囲に影響することがあります。必要な変更イベントを監視し、担当チームに通知してください。

想定される影響

  • 組織のポリシー変更やアカウント移動など、重要な管理操作の把握が遅れる場合があります。
  • アカウント構造の変更後に影響範囲を調べるための時間が増える場合があります。
  • 権限の悪用や設定ミスへの初動対応が遅れるおそれがあります。

対処方法

  • 必要な Organizations イベントを CloudTrail から CloudWatch Logs に配信し、ログメトリクスフィルターを設定してください。
  • 生成されるメトリクス名と名前空間をアラームに接続し、評価期間としきい値を設定してください。SNS などの運用通知先と受信側のサブスクリプションも構成してください。
  • アラーム条件を満たすテストイベントで、メトリクスの生成と通知の受信を確認してください。ログ配信やアラーム評価には遅延が生じる場合があります。

例

参照するロググループと SNS トピック、CloudTrail の配信権限、通知のサブスクリプションは別途設定する必要があります。下のフィルターは一部の Organizations イベントを例示しているため、組織の監視要件に合わせて補ってください。

変更前

hcl
resource "aws_cloudwatch_log_metric_filter" "organizations_changes" {
  name           = "organizations-changes"
  log_group_name = aws_cloudwatch_log_group.cloudtrail.name
  pattern        = "{ ($.eventSource = \"ec2.amazonaws.com\") }"

  metric_transformation {
    name      = "organizations-changes"
    namespace = "Security"
    value     = "1"
  }
}

変更後

hcl
resource "aws_cloudwatch_log_metric_filter" "organizations_changes" {
  name           = "organizations-changes"
  log_group_name = aws_cloudwatch_log_group.cloudtrail.name
  pattern        = "{ ($.eventSource = \"organizations.amazonaws.com\") && (($.eventName = AcceptHandshake) || ($.eventName = AttachPolicy) || ($.eventName = CreateAccount) || ($.eventName = MoveAccount) || ($.eventName = RemoveAccountFromOrganization)) }"

  metric_transformation {
    name      = "organizations-changes"
    namespace = "Security"
    value     = "1"
  }
}

resource "aws_cloudwatch_metric_alarm" "organizations_changes" {
  alarm_name          = "organizations-changes"
  comparison_operator = "GreaterThanOrEqualToThreshold"
  evaluation_periods  = 1
  metric_name         = "organizations-changes"
  namespace           = "Security"
  period              = 300
  statistic           = "Sum"
  threshold           = 1
  alarm_actions       = [aws_sns_topic.security_alerts.arn]
}

補足:

  • 変更前: EC2 イベントを対象とし、Organizations 用のアラームも接続していません。
  • 変更後: 選択した Organizations イベントをメトリクスに変換し、5 分間の合計が 1 以上になるとアラームを発生させる構成です。実際の通知はログ配信、アラームの状態、SNS の配信経路に依存します。

参考資料