对于小型CloudFormation和CodePipeline模板,我们可以"尝试-测试"以获得所需角色的最低权限IAM策略。
这通常涉及:
- 从最小策略开始
- 创建堆栈
- 它失败了-stack没有访问someService:someAction的权限
- 将服务操作添加到策略
- 更新堆栈并重试
对于较大的CloudFormation模板来说,这种方法过于耗时
您是如何制定最低特权IAM政策的?
想法:
-
允许"*",然后为事件刮取cloudtrail,并为列出的事件构建与其等效角色的映射,然后将角色减少到仅在cloudtrail日志中列出的角色。
-
如果您可以将操作隔离到用户名,这将有助于
-
https://github.com/byu-oit-appdev/aws-cloudwatch-parse
-
-
Access Advisor
Grant least privilege是一个记录充分的IAM最佳实践。文档建议增量添加特定权限,使用Access Advisor选项卡来确定应用程序实际使用的服务(可能在测试阶段使用更广泛的权限集):
从最低权限集开始并根据需要授予额外权限更安全,而不是从过于宽松的权限开始,然后试图收紧权限。
定义正确的权限集需要进行一些研究,以确定特定任务需要什么,特定服务支持什么操作,以及执行这些操作需要什么权限。
有一项功能可以帮助您做到这一点,那就是Access Advisor选项卡,每当您检查用户、组、角色或策略时,该选项卡都可以在IAM控制台摘要页面上使用。此选项卡包括有关用户、组、角色或任何使用策略的人实际使用的服务的信息。您可以使用这些信息来识别不必要的权限,以便完善IAM策略,更好地遵守最低权限原则。有关详细信息,请参阅服务上次访问的数据。
此方法类似于为特定IAM角色/应用程序生成的API事件抓取CloudTrail,尽管后者可能更难在整个事件流中进行筛选以查找相关事件,而Access Advisor列表已经为您进行了筛选。