You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询AWS中IAM用户连续3次登录失败告警邮件的最佳实现方案

实现IAM用户连续3次登录失败告警的简便方案

方案一:CloudWatch 指标告警(适合短时间累计失败场景)

如果你的需求是短时间窗口内累计3次登录失败即可告警(无需严格区分是否有成功登录穿插),可以直接用CloudWatch原生能力实现,无需额外代码:

  • 确保CloudTrail已开启,且将日志投递到CloudWatch Logs
  • 创建CloudWatch Logs Metric Filter,匹配ConsoleLogin事件中包含认证失败的日志(过滤规则:{$.eventName = "ConsoleLogin" && $.errorMessage != ""}),并按userIdentity.userName维度生成自定义指标(比如命名为ConsoleLoginFailureCount)
  • 基于该指标创建CloudWatch告警:设置统计周期为5分钟,阈值为3,当指标值达到3时触发SNS主题发送告警邮件
  • 创建SNS主题并订阅目标邮箱,完成邮箱验证即可

方案二:Lambda + DynamoDB + SNS(精准追踪连续失败)

如果需要严格判断连续3次登录失败(中间有成功登录则重置计数),这个方案操作并不复杂,且精准度更高:

  • 创建DynamoDB表:主键设为username(字符串类型),添加failureCount(数字)、lastFailureTime(数字,存储时间戳)两个属性,开启TTL功能(设置15分钟自动过期,自动清理长时间无失败的用户记录)
  • 配置CloudWatch Event规则:创建规则匹配CloudTrail的ConsoleLogin失败事件,触发Lambda函数
  • 编写Lambda逻辑:
    1. 从触发事件中提取IAM用户名
    2. 查询DynamoDB中该用户的记录:
      • 若存在记录,检查当前时间与lastFailureTime的间隔(比如设为10分钟,可按需调整),如果在间隔内则failureCount +=1,否则重置为1并更新lastFailureTime
      • 若不存在记录,创建新条目,failureCount=1,lastFailureTime设为当前时间戳
    3. 当failureCount等于3时,调用SNS主题发送告警邮件,同时可选择重置该用户的失败计数或保留记录
  • 配置SNS主题:创建主题并订阅告警邮箱,完成验证

注意事项

  • CloudTrail事件可能有几分钟延迟,需合理设置时间窗口
  • Lambda的执行角色需要具备DynamoDB读写权限、SNS发布权限,以及读取CloudTrail事件的权限
  • DynamoDB的TTL功能可自动清理过期记录,无需手动维护

内容的提问来源于stack exchange,提问作者Missak Boyajian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 19:18:19