使用 IAM Access Analyzer 检测过度访问权限 - 外部访问与未使用权限分析
基于 CloudTrail 检测 IAM 角色的未使用权限,并自动生成最小权限策略。本文讲解从外部访问检测到将自定义策略检查集成到 CI/CD 的内容。
Access Analyzer 概述
IAM Access Analyzer 是一项借助分析外部访问、未使用访问等内容的分析器来检测访问权限问题的服务。外部访问分析器会分析 S3 存储桶、IAM 角色等资源的资源策略,识别允许组织外部账户或公共访问的设置。未使用访问分析器会将 CloudTrail 活动日志与 IAM 角色的权限进行比对,检测实际未被使用的权限。此外,它还提供基于 CloudTrail 过去活动自动生成最小权限 IAM 策略的功能,以及集成到 CI/CD 流水线中的自定义策略检查功能。
未使用权限与策略生成
未使用访问分析器会将 IAM 角色和用户的权限与 CloudTrail 活动进行比对,检测在所设置的期间(例如 90 天)内未被使用的操作、未使用的访问密钥以及未使用的角色。90 天这一期间是默认值,为避免对每季度只执行一次的批处理等产生误报,需要在运营中考虑分析期间。策略生成功能基于指定了最长 90 天期间的 CloudTrail 活动,自动生成仅包含实际使用过的操作的最小权限 IAM 策略。生成的策略不是直接应用,而是先审核其中是否包含将来需要的操作,然后再应用。自定义策略检查会集成到 CI/CD 流水线中,自动验证 IAM 策略的变更不会允许特定操作(s3:* 或 iam:*)。有一种模式是在 CodePipeline 的阶段中放置 Lambda 函数,并通过 CheckNoNewAccess API 验证策略变更。
外部访问检测的应用
外部访问分析器会分析 S3 存储桶策略、IAM 角色信任策略、KMS 密钥策略、Lambda 函数策略和 SQS 队列策略,检测可从外部账户或公共访问的资源。检测结果分为已归档(有意共享)或活跃(需要处理),并优先修复非预期的外部公开。借助自定义策略检查,可以在 CI/CD 流水线中自动验证策略变更不会允许新的外部访问。通过与 Organizations 集成,可以集中管理所有账户的外部访问,并将整个组织的安全态势可视化。
Access Analyzer 的费用
外部访问分析器可以免费使用。未使用访问分析器根据分析对象的 IAM 角色和用户数量计费,每个角色/用户每月约 0.20 美元(截至 2026 年 8 月)。自定义策略检查每次检查约 0.002 美元。在 IAM 实体数量较多的大规模环境中,未使用访问分析器的费用会不断累积,因此可以采用从优先账户开始分阶段启用的做法。外部访问分析器可以在所有账户中免费启用,可用作安全基线。
实现最小权限的循环
合理的权限设计不是一次性的工作,而是需要持续打磨的事情。Access Analyzer 会分析实际的访问历史,识别未被使用的权限。以此为依据,可以削减授予过多的权限,只保留实际需要的部分。此外,它还提供基于过去活动生成仅包含必要权限的策略草案的功能。以此为起点进行调整,就可以制作最小权限的策略。定期运行授予 / 分析 / 削减的循环,抑制权限的扩散,逐步接近最小权限的状态。
部署前的策略验证
权限问题可以在应用到生产环境之前的阶段进行确认。Access Analyzer 提供在应用之前验证所创建的策略是否允许违背意图的过度访问的功能。例如,它会检测并警告将资源公开给外部账户的设置以及不推荐的写法。如果将其集成到 CI/CD 流水线中,就可以在策略变更合并到代码仓库之前自动进行检查,可以减少危险的权限设置流入生产环境。将部署前的验证作为机制引入,纳入持续的权限管理之中。
总结
Access Analyzer 是一项通过检测外部访问和未使用权限,用于遵循最小权限原则进行权限管理的服务。通过基于 CloudTrail 活动的策略自动生成来设置权限,并通过自定义策略检查将安全验证集成到 CI/CD 流水线中,从而将权限管理生命周期自动化。
参考资料(AWS 官方)
本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。
如本页内容与官方文档不一致,请以官方文档为准。