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

如何编写基于Guard策略的AWS Config自定义规则检查访问密钥年龄?

解决IAM用户访问密钥年龄检查的AWS Config Guard规则

要实现检查IAM用户访问密钥是否超过60天的自定义Config规则,核心问题在于AWS Config的IAM User资源主schema不包含访问密钥的创建时间数据,这些信息需要从supplementaryConfiguration(补充配置)中获取。以下是正确的Guard规则编写方法:

完整Guard规则代码

let MAX_KEY_AGE_DAYS = 60
let MAX_KEY_AGE_MILLIS = MAX_KEY_AGE_DAYS * 24 * 60 * 60 * 1000

rule iam_user_access_keys_not_over_60_days when
    resourceType == "AWS::IAM::User" {
        # 存在访问密钥时检查每个密钥的创建时间
        supplementaryConfiguration.IamUserAccessKeys exists {
            # 确保密钥创建时间字段存在且有效
            supplementaryConfiguration.IamUserAccessKeys[*].CreateDate is_not_null
            # 验证创建时间距当前时间不超过60天(转换为毫秒计算)
            supplementaryConfiguration.IamUserAccessKeys[*].CreateDate > (current_time() - MAX_KEY_AGE_MILLIS)
        }
        # 无访问密钥时默认合规(可根据需求调整)
        else {
            true
        }
    }

关键说明

  1. 数据来源:IAM用户的访问密钥元数据(包括创建时间)存储在supplementaryConfiguration.IamUserAccessKeys数组中,而非主configuration字段,这是你之前代码失效的核心原因。
  2. 时间计算:Guard的current_time()返回毫秒级时间戳,因此需要将60天转换成毫秒(602460601000),再与密钥的CreateDate(同样是毫秒时间戳)做差值比较。
  3. 逻辑覆盖:
    • 当用户存在访问密钥时,遍历所有密钥确保没有超过60天的;
    • 当用户没有访问密钥时,规则返回true(即合规),如果需要强制用户必须有密钥,可以删除else块并调整逻辑。

验证注意事项

  • 确保AWS Config已启用对IAM用户资源的补充配置收集(默认开启,可在Config控制台的资源类型设置中确认);
  • 测试时可以创建一个超过60天的访问密钥,验证规则是否正确标记为不合规。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:57:14