原文:AWS IAM – Policy, Access Roles, Resources Explained, and Why They're Useful,作者:Periklis Gkolias
IAM,即身份和访问管理,是你在云原生环境中最常听到的术语之一。
但它是做什么的?如果你已经熟悉了 IAM,你花了多长时间才完全理解它?
我将解释这个庞大的软件家族背后的主要概念,并考虑到你是个忙碌的工程师。
这里描述的基本原理与供应商无关,尽管我的大部分经验是在 AWS 的使用。
什么是 IAM?
IAM 是一个由请求访问系统的实体(人类、应用程序等)组成的复杂系统。它也是一套分层的规则,用于授予或拒绝所请求的访问。
在我们进一步讨论之前,这里是你会遇到的主要术语:
- Resource,任何值得保护的东西,一个存储服务、虚拟机等
- Policy,一组规则,规定谁可以和谁不可以在单个资源或资源组上做什么
- Action,人可以在云环境中可以做事情,例如,创建一个虚拟机
- User,嗯,一个用户:)
- Group,一个具有相同权限的用户组
- Principal,一个请求访问的用户或应用程序
- Role,分配给一个委托人的一组权力,通常在有限的时间内
为什么 IAM 是有用的
IAM 主要用于认证、授权、细化访问和治理。
让我们看看这些都是什么意思:
- Authentication,证实你是谁的行为
- Authorization,识别某人是否可以执行他们所请求的行动,这通常与认证相结合,但不一定
- Granular access,控制一个资源上可能发生的每个动作的权限,例如,一个用户可能有权限查看防火墙规则,但没有权限修改它们,这是用基于角色的访问控制实现的
- Governance,你为了解环境中发生的事情而采取的行动,主要是出于预算、合规性和适当的访问范围等原因
如果你是一个只有 1-3 人的公司,那么建立一个完整的 IAM 解决方案可能是多余的。但是,如果你的团队规模大于这个数字,或者你打算扩大规模,那么你应该开始考虑这个问题。
你不使用 IAM 的常见问题
我相信你可以看到 IAM 解决方案的好处。
现在让我们来看看企业在没有 IAM 的情况下面临的一些常见问题。
很难对访问进行审计和管理
你是否听说过某个员工的权限超过了他们应该有的权限的情况?此外,没有人知道?
这可以通过正确设置的 IAM 解决方案来防止。
为新员工设置账户是件麻烦事
有了 IAM 解决方案,这将只是一个点击几下的问题。也就是说,设置用户并将他们添加到他们团队使用的 IAM 组。就这样了。
但如果没有 IAM 解决方案呢?你将需要手动设置每个账户的所有权限。
你可能有一个参考用户来复制,但每个新账户是否需要参考用户的所有权限?你对少于 6 个月的用户账户有特殊处理吗?参考用户是否有超级用户的权限,避免意外地分配给新雇员账户?
处理离职人员很费时间
在这里,你将遇到与上述新员工案例类似的问题。但是当同事离开时,你需要更改他们可能使用的所有帐户的密码。
这会很快变得麻烦,更不用说这对其他团队成员产生的副作用了。
每当有离职时,你都必须为每个脚本、应用程序和其他资源执行此操作。如果你每个月有 2-3 次团队变动怎么办?你和你的团队将很难高效工作。
简单的事情需要人去处理
如果没有 IAM 解决方案,重设密码或重新启用被锁定的账户等任务就需要手动完成。
顶级的 IAM 解决方案有办法快速解决此类问题,而不需要太多的麻烦。
最佳实践
如果你已经决定建立 IAM,这里有一些最佳实践。这远远不是一个完整的清单,而且是基于我的个人经验。但我在不止一个团队中看到过这些做法,所以它们应该也适用于你。
永远不要授予完全访问权
在现实世界中,你不会希望每个用户都对一个账户有无限的访问权。理想情况下,没有人应该完全访问任何东西(除了账户所有者之外)。
例如,如果一个员工的职责是监控日志,他们应该对该工具只有阅读权限。他们不应该能够重新启动一项服务,或查看账单信息。
首选组而不是多个用户
当你有选择时,最好使用组而不是多个用户。组使管理成倍地容易。
例如,如果一个新的人作为开发人员加入你的组织,他们可以被添加到一个开发人员的 IAM 组。然后,这个新人将继承该 IAM 组的所有权力。
另一种方法,即为每个组创建一个用户(reader_susan, admin_susan)被认为是过时的。
首选现有用户的角色而不是创建新用户
如果有选择的话,最好是给现有的用户分配一个角色,而不是创建一个新的用户。
例如,不要创建一个管理员用户并在 10 个人之间分享密码。创建一个管理员角色,并在有限的时间内将其分配给需要它的人。
经常审计权限
这很容易犯错或进行恶意操作。至少,公司应该定期审计权限,并确保只有适当的人拥有其角色所需的最低级别的访问权限。
你也可以在可疑的行动发生时向某个团队发送电子邮件。例如,将管理员角色分配给一个新雇员。
预先设置边界
如果 IAM 解决方案允许,请将边界添加到你的生态系统中。
根据亚马逊的文档:
权限边界(permissions boundary)是一种高级功能,用于使用管理策略来设置基于身份的策略可以授予 IAM 实体的最大权限。一个实体的权限边界允许它只执行其基于身份的策略和其权限边界所允许的行动。
(我知道,我知道——我答应过要与供应商无关的🙂 )
用通俗的话说,你可以定义可以分配给任何人的 最大
权限。
例如,一个用户最多只能从相关工具中查看日志,并重新启动一项服务。如果有人试图让一个角色创建一个新的虚拟机,他们将被禁止。
结论
谢谢你读到这里。我希望你喜欢这个关于 IAM 的介绍。
如果你有任何问题,请在 Twitter 上与我联系。