对aws策略进行版本控制



当前我登录IAM并手动编辑S3存储桶的策略。当我在编辑器中更改某些内容时,我不知道以前的策略是什么,除非我通过取消退出编辑器,然后返回并查看它。因此,无法确切说明我更改了什么。因此,编辑有点痛苦,尤其是考虑到我有时发现自己在更改某些内容,然后测试更改,而没有任何琐碎的方法可以回到我开始的地方。

缺乏版本控制造成的另一个问题是,没有关于特定权限被修改的原因或时间的日志。例如,我真的很想知道,我们在bucket上需要ListBucket权限的原因是,这是上传文件所必需的。你知道,你可能会把这种东西放在git提交消息中。

既然你对我的动机有了深刻的理解和关心,我想知道如何最好地将我的政策转化为git。在可能的范围内,我希望更改权限的唯一方法是通过我编写的代码,假设您在任何时候进行更改,都会提交给存储库。当然,这并不是一个完美的安全性,但它确实提供了一个关于什么时候发生了变化的会计,并给了我们一个做出改变的地方。

这是我的建议:

  • 创建名为policy_editor的IAM用户
  • 吊销所有用户的策略编辑权限
  • 授予policy_editor策略编辑权限
  • 不要给policy_editor密码(因此必须使用api凭据来更改策略)

我的问题是:

  1. 这可能吗?(理想情况下,即使是根用户也没有编辑策略的权限,这样就不会意外发生)
  2. 这是个好主意吗
  3. 有更好的解决方案吗
  4. 有没有一个工具可以做到这一点

谢谢!

这可能吗?

是的,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)

相关内容

  • 没有找到相关文章

最新更新