目前我登录IAM并手动编辑我的S3存储桶策略。当我在编辑器中更改某些内容时,我不知道之前的策略是什么,除非我通过取消退出编辑器然后返回查看它。所以没有办法确切地说出我改变了什么。所以编辑是一种痛苦,特别是考虑到我有时会发现自己改变某些东西,然后测试变化,没有任何简单的方法可以回滚到我开始的地方。
由于缺少版本控制而产生的另一个问题是没有记录特定权限被修改的原因或时间。例如,我真的想知道我们需要对我们的存储桶使用ListBucket权限的原因是因为需要使文件上传工作。你知道,你可能会把它放在一个git commit消息中。
既然你理解并关心我的动机,我想知道如何最好地将我的政策纳入git。在可能的范围内,我想要通过我编写的代码更改权限的唯一方法,假设您每次进行更改时都会提交到存储库。当然,这不是完美的安全性,但它确实提供了对何时发生变化的说明,并为我们提供了一个我们进行更改的地方。
这是我的建议:
我的问题是:
谢谢!
答案 0 :(得分:1)
这可能吗?
是的,API足够灵活,可以做到这一点。围绕IAM编写自动化是有价值的。
“root用户”是指您直接在帐户上使用AWS访问密钥?第1步是删除那些信用卡(直接在帐户上),只使用IAM用户获取所有信息。
http://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPractices.html
这是个好主意吗?
是的,自动化很好。
有更好的解决方案吗?
嗯,这里有一些相关的想法:
使用CloudTrail记录所有IAM更改。
如果您停用了更改IAM的权限,请为紧急情况创建第二个用户(已启用MFA)。
对于某些“危险”命令,请改用自动化。 (即给他们一个可以删除存储桶的网页表单,但是您的代码会验证可以事先删除。)
避免直接向人们添加权限。始终使用组来组织权限。不要害怕花一些时间来弄清楚什么是逻辑权限组。例如,您可以拥有“调试生产”组。
不要太细粒度(至少不是一开始)。这里有安全和官僚之间的权衡。如果人们不得不为你获得每一个小小的许可,那么他们就会“以防万一”开始请求私人。
使用条件:您可以说“您可以删除名称中没有'生产'的任何存储桶”。或者“你可以终止实例,但它需要MFA”。
定期查看您的政策。人们在团队之间移动,因此人们通常最终获得他们不需要的权限。如果您的群组名称很好,您可以让经理审核其下属所需的权限。
是否有工具可以执行此操作?
不是我知道的。通过API调用很容易,所以有人会写它。
(这家伙创办了一个项目:https://github.com/percolate/iamer)