IAM ポリシー変更を監視するアラームの未設定

IAM ポリシー変更を監視する CloudWatch ログフィルターとアラームがないと、権限変更の把握が遅れる場合があります。

説明

IAM ポリシーの作成、削除、関連付け、変更を監視するログフィルターと CloudWatch アラームがないと、権限変更に気付くのが遅れる場合があります。権限ポリシーの変更は、セキュリティインシデントに関係し得る重要なイベントです。

CloudTrail ログを保存するだけでは担当チームに通知されません。必要なポリシー変更を監視し、運用で使用する通知先に接続してください。

想定される影響

  • IAM 権限の変更に気付くのが遅れる場合があります。
  • 過剰な権限付与や予期しないポリシー変更を見逃すおそれがあります。
  • インシデントへの対応や調査が遅れる場合があります。

対処方法

  • CloudTrail イベントを CloudWatch Logs に配信し、重要な IAM ポリシー変更のログメトリクスフィルターを設定してください。
  • 生成されるメトリクス名と名前空間をアラームに接続し、評価期間、しきい値、SNS の配信経路を設定してください。
  • 必要なポリシー変更イベントが対象に含まれることを確認し、アラーム条件を満たすイベントで実際の通知をテストしてください。通知によってポリシー変更自体を防ぐことはできません。

例

フィルターとメトリクスの接続を示す抜粋です。アラームに必要な評価期間、統計と集計期間、しきい値、通知アクションは別途補う必要があります。CloudTrail のログ配信と SNS のサブスクリプションも必要です。ここではフィルター名と生成されるメトリクス名が同じため、フィルターの id をメトリクス名として参照しています。

変更前

hcl
resource "aws_cloudwatch_metric_alarm" "example" {
  alarm_name          = "CIS-4.4-IAM-Policy-Change"
  metric_name         = "XXXX NOT YOUR FILTER XXXX"
  namespace           = "CIS_Metric_Alarm_Namespace"
  comparison_operator = "GreaterThanOrEqualToThreshold"
}

変更後

hcl
resource "aws_cloudwatch_log_metric_filter" "example" {
  name           = "CIS-4.4-IAM-Policy-Change"
  pattern        = "{($.eventName=DeleteGroupPolicy)||($.eventName=DeleteRolePolicy)||($.eventName=DeleteUserPolicy)||($.eventName=PutGroupPolicy)||($.eventName=PutRolePolicy)||($.eventName=PutUserPolicy)||($.eventName=CreatePolicy)||($.eventName=DeletePolicy)||($.eventName=CreatePolicyVersion)||($.eventName=DeletePolicyVersion)||($.eventName=AttachRolePolicy)||($.eventName=DetachRolePolicy)||($.eventName=AttachUserPolicy)||($.eventName=DetachUserPolicy)||($.eventName=AttachGroupPolicy)||($.eventName=DetachGroupPolicy)}"
  log_group_name = aws_cloudwatch_log_group.CIS_CloudWatch_LogsGroup.name

  metric_transformation {
    name      = "CIS-4.4-IAM-Policy-Change"
    namespace = "CIS_Metric_Alarm_Namespace"
    value     = "1"
  }
}

resource "aws_cloudwatch_metric_alarm" "example" {
  alarm_name          = "CIS-4.4-IAM-Policy-Change"
  metric_name         = aws_cloudwatch_log_metric_filter.example.id
  namespace           = "CIS_Metric_Alarm_Namespace"
  comparison_operator = "GreaterThanOrEqualToThreshold"
}

補足:

  • 変更前: アラームのメトリクス名が、ポリシー変更フィルターのメトリクスに接続されていません。
  • 変更後: 選択したポリシー変更イベントをメトリクスに変換し、アラームに接続します。省略されたアラーム設定と配信経路を完成させ、動作を確認してください。

参考資料