
## AWS IAM 非活跃用户自动化警报工作流
> 每周任务,查找 **超过90天无活动** 的IAM用户,并向Slack频道发送通知。
> ⚠️ **重要提示:** AWS SigV4 for IAM必须限定在 **`us-east-1`** 区域。在n8n中创建AWS凭证时,请将区域设置为 **us-east-1**(即使您的其他服务运行在其他区域)。
## **适用对象**
– 需要自动化IAM健康检查的SRE/DevOps团队
– 需要定期非活跃报告的安全/合规负责人
– 管理多个AWS账户并需要轻量级警报的MSP
## **工作原理 / 功能**
1. **每周调度器** – 触发工作流(例如,每周一09:00)
2. **获取多个用户** – 列出IAM用户
3. **获取用户详情** – 为每个用户补充详细信息(密码状态、MFA等)
4. **过滤无效数据** – 删除服务关联用户或没有可用日期的项目
5. **IAM用户是否超过90天非活跃?** – 保留**最后活动**时间超过90天的用户
– 最后活动时间来源于:
– `PasswordLastUsed`(控制台登录)
– `AccessKeyLastUsed.LastUsedDate`(如果添加了`GetAccessKeyLastUsed`)
– 如果没有使用数据,则回退到`CreateDate`(可选)
6. **发送消息(Slack)** – 为每个非活跃用户发布警报
7. **无操作** – 不匹配用户的路径(不执行任何操作)
## **如何设置**
1. **凭证**
– **AWS(预定义 → AWS)**
– 服务:`iam`
– 区域:`us-east-1` ← **IAM必需**
– 具有只读IAM权限的访问密钥/密钥(或Assume Role)
– **Slack** OAuth(目标频道中的机器人)
## **要求**
– n8n(当前版本)
– **AWS IAM权限**(最低要求):
– `iam:ListUsers`, `iam:GetUser`
– *(可选,提高准确性)* `iam:ListAccessKeys`, `iam:GetAccessKeyLastUsed`
– 具有在目标频道发布消息权限的Slack机器人
– 到`iam.amazonaws.com`的网络出口
## **如何自定义工作流**
– **更改时间窗口:** 通过调整`minus(N, ‘days’)`设置60/120/180天
– **审计日志:** 将结果附加到Google Sheets/数据库,包含`UserName`, `Arn`, `LastActivity`, `CheckedAt`
– **升级处理:** 如果用户在另一个周期仍然非活跃,提及`@security`或创建工单
– **自动修复(高级):** 在单独的批准路径上,禁用访问密钥或分离策略
– **多账户/多区域:** 迭代AWS凭证列表(每个账户一个;IAM保持在`us-east-1`)
– **排除列表:** 添加静态列表或基于标签的过滤器以跳过已知的服务用户
## **注意事项**
– 许多用户从不登录;如果不拉取`GetAccessKeyLastUsed`,它们可能看起来”非活跃”。添加该调用以提高准确性
– 如果从未发生控制台登录,`PasswordLastUsed`为null
– IAM返回ISO或epoch时间戳—在比较之前使用`toDate`/`toDateTime`

评论(0)