当前我登录IAM并手动编辑S3存储桶的策略。当我在编辑器中更改某些内容时,我不知道以前的策略是什么,除非我通过取消退出编辑器,然后返回并查看它。因此,无法确切说明我更改了什么。因此,编辑有点痛苦,尤其是考虑到我有时发现自己在更改某些内容,然后测试更改,而没有任何琐碎的方法可以回到我开始的地方。
缺乏版本控制造成的另一个问题是,没有关于特定权限被修改的原因或时间的日志。例如,我真的很想知道,我们在bucket上需要ListBucket权限的原因是,这是上传文件所必需的。你知道,你可能会把这种东西放在git提交消息中。
既然你对我的动机有了深刻的理解和关心,我想知道如何最好地将我的政策转化为git。在可能的范围内,我希望更改权限的唯一方法是通过我编写的代码,假设您在任何时候进行更改,都会提交给存储库。当然,这并不是一个完美的安全性,但它确实提供了一个关于什么时候发生了变化的会计,并给了我们一个做出改变的地方。
这是我的建议:
- 创建名为policy_editor的IAM用户
- 吊销所有用户的策略编辑权限
- 授予policy_editor策略编辑权限
- 不要给policy_editor密码(因此必须使用api凭据来更改策略)
我的问题是:
- 这可能吗?(理想情况下,即使是根用户也没有编辑策略的权限,这样就不会意外发生)
- 这是个好主意吗
- 有更好的解决方案吗
- 有没有一个工具可以做到这一点
谢谢!
这可能吗?
是的,API足够灵活。围绕IAM编写自动化程序是有回报的。
你所说的"root用户"是指直接在账户上的AWS访问密钥吗?步骤1是删除这些信用(直接在帐户上),并只使用IAM用户进行所有操作。
http://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPractices.html
这是个好主意吗?
是的,自动化很好。
有更好的解决方案吗?
好吧,这里有一些相关的想法:
-
使用CloudTrail记录所有IAM更改。
-
如果您禁用IAM更改权限,请创建第二个用户(启用MFA)以备不时之需。
-
对于某些"危险"命令,请改用自动化。(即,给他们一个网络表单,他们可以在其中删除一个bucket,但你的代码会验证是否可以提前删除。)
-
避免直接向用户添加权限。始终使用组来组织权限。不要害怕花一些时间弄清楚什么是逻辑权限组。例如,您可以有一个"调试生产"组。
-
不要太精细(至少一开始不要)。这里存在着安全和官僚主义之间的权衡。如果人们每得到一点许可都要打电话给你,他们就会开始请求隐私"以防万一"。
-
使用条件语句:您可以说"您可以删除任何名称中没有"production"的bucket"。或者"您可以终止实例,但需要MFA"。
-
定期审查您的政策。人们在团队之间流动,因此人们最终往往会获得不需要的权限。如果你的团队名称很好,你可以让经理审查下属所需的权限。
有没有一个工具可以做到这一点?
据我所知并非如此。这很容易通过API调用,所以有人会写它
(这家伙开始了一个项目:https://github.com/percolate/iamer)