在单个 AWS 帐户中,我希望能够向将设置不同应用程序的两组用户授予访问权限。每组都应该能够创建新的 EC2 机器、S3 存储桶、RDS 数据库等以及删除它们,但他们不应该能够删除彼此的或以任何其他方式影响它们。
这可能吗?如何最好地实现这一点?
答案1
方法有很多。
帐户
最高级别的隔离是为它们提供单独的账户。这使它们完全分开,完全没有重叠。这是企业通常的做法——数十个甚至数百个账户并不罕见。
您可以创建一个 AWS 组织,这样您就可以获得一张账单。这还允许您使用服务控制策略,该策略允许您控制可以使用哪些服务、允许和不允许哪些 API 调用,并且您可以根据需要执行基于角色的权限。我建议不要在 SCP 中使用基于角色的权限,因为它很复杂。
您必须拥有高度自动化才能在大量账户中实现这一目标,而且架构师和 devops 工程师的成本很高,但对于少数账户来说,手动完成就很容易了。
AWS 着陆区/控制塔可帮助完成这一设置。它也很复杂。
VPC
下一个隔离级别是为每个应用程序分配一个 VPC。将您的 IAM 用户设置到地面,并确保您的 IAM 策略仅允许用户在自己的 VPC 上操作。这是很好的隔离,但 AWS 速率/资源限制是基于帐户的,因此一个非常繁忙或 DDOS 的应用程序可能会影响另一个。您必须小心您的 IAM 策略。
子网
隔离的下一级是子网。隔离程度较低,管理起来略有困难。
等等
下一个级别可能是资源级别的权限,但这并不实际。
用户管理
如果有的话,您可以从现有的 Active Directory 服务器设置身份联合。这样,您可以让用户根据他们的 AD 组承担 IAM 角色,这确实很有帮助。然后,您可以使用基于角色的权限,这样您就可以定义用户、管理员、安全操作或您真正喜欢的任何组。如果您不使用这样的角色,组可能会类似。
您可以拥有一个中央“用户”帐户,让用户在工作量帐户中承担角色。这很好,但是当您拥有十几个帐户时就会变得混乱。
我发现使用 CloudFormation 创建和发布 IAM 策略是最好的方式,因为这样可以轻松更新策略。SCP 尚不支持 CF,但您可以编写策略,然后使用 API 上传,从而自动分发策略。
选择哪一个
鉴于你的问题,我猜你对 AWS 还不熟悉。为每个应用程序或团队设置单独的帐户更容易实现。我建议你认真考虑这个选项。
答案2
答案3
是的,可以使用 AWS 身份和访问管理 (IAM) 和资源级权限在 AWS 中保护各组免受彼此影响。
您可以采取以下方法:
- 创建两个 IAM 组,每个团队一个。
- 为每个组定义策略,授予其所需 AWS 服务的权限,例如 EC2、S3 和 RDS。
- 使用资源级权限将每个组的访问权限限制为他们创建的资源。例如,您可以使用 IAM 策略指定每个组只能启动带有特定标签的 EC2 实例,该标签将其标识为所有者。
- 设置 AWS CloudTrail 来监控和记录对 AWS 服务的所有 API 调用,并设置 CloudWatch 警报以在检测到任何异常活动时提醒您。
通过这些步骤,您可以确保每个组只能访问和修改他们创建的资源,并且不会影响彼此的资源。此外,通过使用 CloudTrail 和 CloudWatch,您可以监控 AWS 账户中的所有活动并检测任何未经授权的操作。