IAM 的商用案例 - AWS Identity and Access Management

IAM 的商用案例

IAM 的简单商用案例可帮助您了解使用该服务来控制您的用户所拥有的 AWS 访问权限的基本方法。此使用案例只是粗略介绍,并未涵盖您使用 IAM API 来实现所需结果的技术性细节。

此使用案例将探讨一家名为 Example Corp 的虚构公司可能使用 IAM 的两种典型方式。第一种场景考虑 Amazon Elastic Compute Cloud (Amazon EC2)。第二种场景考虑 Amazon Simple Storage Service (Amazon S3)。

有关通过 AWS 的其他服务使用 IAM 的更多信息,请参阅 使用 IAM 的AWS服务

Example Corp 的初始设置

Nikki Wolf 和 Mateo Jackson 是 Example Corp 的创始人。公司成立时,他们创建了一个 AWS 账户 并建立了 AWS IAM Identity Center(IAM Identity Center)来创建管理账户以使用他们的 AWS 资源。当您为管理用户设置账户访问权限时,IAM Identity Center 会创建相应的 IAM 角色。该角色由 IAM Identity Center 控制,在相关 AWS 账户 中创建,并将在 AdministratorAccess 权限集中指定的策略附加到该角色。

由于他们现在拥有管理员账户,Nikki 和 Mateo 不再需要使用其根用户身份来访问他们的 AWS 账户。他们计划仅将根用户用于完成仅限根用户开展的任务。在查看安全最佳实践之后,他们为根用户凭证配置多重身份验证(MFA),并决定如何保其护根用户凭证。

随着公司的发展,他们雇佣了员工,担任开发人员、管理员、测试人员、管理人员及系统管理员。Nikki 负责运营,而 Mateo 管理工程团队。他们建立了一个 Active Directory 域服务器来管理员工账户以及对公司内部资源的访问。

为了让员工访问 AWS 资源,他们使用 IAM Identity Center 将公司的 Active Directory 连接到他们的 AWS 账户。

由于他们将 Active Directory 连接到 IAM Identity Center,因此用户、组和组成员关系都是已同步和已定义的。他们必须为不同的组分配权限集和角色,以给予用户正确的 AWS 资源访问级别。他们在 AWS Management Console 中使用 工作职能的 AWS 托管策略 来创建以下权限集:

  • 管理员

  • 计费

  • 开发人员

  • 网络管理员

  • 数据库管理员

  • 系统管理员

  • 支持用户

然后,他们会将这些权限集分配给相应的角色,这些角色是分配至其 Active Directory 组的角色。

有关描述 IAM Identity Center 初始配置的分步指南,请参阅《AWS IAM Identity Center 用户指南》中的入门。有关配置 IAM Identity Center 用户访问权限的更多信息,请参阅《AWS IAM Identity Center 用户指南》中的 AWS 账户单点登录访问权限

将 IAM 与 Amazon EC2 结合使用的使用案例

类似 Example Corp 的公司通常使用 IAM 与类似 Amazon EC2 的服务互动。如要理解使用案例的这一部分,您需要对 Amazon EC2 有基本的了解。有关 Amazon EC2 的更多信息,请转至适用于 Linux 实例的 Amazon EC2 用户指南

用户组的 Amazon EC2 权限

为提供“周边”控制,Nikki 对 AllUsers 用户组附加了一个策略。如果来源 IP 地址位于 Example Corp 企业网络外部,则该策略拒绝用户的任何 AWS 请求。

在 Example Corp.,不同的用户组需要不同的权限:

  • System administrators - 需要创建和管理 AMI、实例、快照、卷、安全组等的权限。Nikki 向 SysAdmins 用户组附加了一个 AmazonEC2FullAccess AWS 托管策略,以为该用户组成员授予使用所有 Amazon EC2 操作的权限。

  • Developers(开发人员)- 只需能够使用实例即可。因此,Mateo 创建并向 Developers 用户组附加了策略,以允许开发人员调用 DescribeInstancesRunInstancesStopInstancesStartInstancesTerminateInstances

    注意

    Amazon EC2 使用 SSH 密钥、Windows 密码及安全组来控制哪些人能够访问特定 Amazon EC2 实例的操作系统。在 IAM 系统中,无法允许或拒绝访问特定实例的操作系统。

  • Support 用户 – 无法执行任何 Amazon EC2 操作,但可列出当前可用的 Amazon EC2 资源。因此,Nikki 创建并向 Support 用户组附加了一个策略,以便仅允许该组成员调用 Amazon EC2“Describe”API 操作。

如需有关上述策略具体形式的示例,请参阅 IAM 基于身份的策略示例适用于 Linux 实例的 Amazon EC2 用户指南的和使用 AWS Identity and Access Management

用户的工作职能更改

此时,其中一位开发人员 Paulo Santos 的工作职能发生转变,成为一名管理人员。作为一名管理人员,Paulo 成为 Support 用户组的一员,这样他就可以为开发人员开立支持案例。Mateo 将 Paulo 从 Developers 用户组移至 Support 用户组。因此,他与 Amazon EC2 实例交互的能力受到了限制。他无法启动或启用实例。即使他是启动或启用实例的用户,也无法停止或终止现有实例。他只能列出 Example Corp 用户已启动的实例。

将 IAM 与 Amazon S3 结合使用的使用案例

类似 Example Corp 的公司通常还通过 Amazon S3 使用 IAM。John 已为公司创建一个名为 aws-s3-bucket 的 Amazon S3 存储桶。

创建其他用户和用户组

作为员工,Zhang Wei 和 Mary Major 都需要能够在公司的存储桶中创建自己的数据。他们还需要读取和写入所有开发人员都要处理的共享数据。为做到这一点,Mateo 采用 Amazon S3 键前缀方案,在 aws-s3-bucket 中按照逻辑方式排列数据,如下图所示。

/aws-s3-bucket /home /zhang /major /share /developers /managers

Mateo 针对每位员工将 /aws-s3-bucket 分隔成一系列主目录,并为开发人员和管理人员组留出一个共享区域。

现在,Mateo 创建一组策略,以便向用户和用户组分配权限:

  • Zhang 的主目录访问 – Mateo 向 Wei 附加的策略允许后者读取、写入和列出任何带 Amazon S3 键前缀 /aws-s3-bucket/home/zhang/ 的对象

  • Major 的主目录访问 – Mateo 向 Mary 附加的策略允许后者读取、写入和列出任何带 Amazon S3 键前缀 /aws-s3-bucket/home/major/ 的对象

  • Developers 用户组的共享目录访问 – Mateo 向该用户组附加的策略允许开发人员读取、写入和列出 /aws-s3-bucket/share/developers/ 中的任何对象

  • Managers 用户组的共享目录访问 – Mateo 向该用户组附加的策略允许管理人员读取、写入和列出 /aws-s3-bucket/share/managers/ 中的对象

注意

对于创建存储桶或对象的用户,Amazon S3 不会自动授予其对存储桶或对象执行其他操作的权限。因此,在您的 IAM policy 中,您必须显式授予用户使用他们所创建的 Amazon S3 资源的权限。

有关这些策略具体形式的示例,请参阅 Amazon Simple Storage Service 用户指南中的访问控制。有关如何在运行时对策略进行评估的信息,请参阅策略评估逻辑

用户的工作职能更改

此时,其中一位开发人员 Zhang Wei 的工作职能发生转变,成为一名管理人员。我们假设他不再需要访问 share/developers 目录中的文档。作为管理员,Mateo 将 Wei 从 Developers 用户组移至 Managers 用户组。通过简单的重新分配,Wei 将自动获得所有授予给 Managers 用户组的权限,但将无法再访问 share/developers 目录中的数据。

与第三方企业集成

组织经常与合作公司、顾问及承包商合作。Example Corp 是 Widget Company 的合作伙伴,而 Widget Company 的员工 Shirley Rodriguez 需要将数据放入存储桶中,以供 Example Corp 使用。Nikki 创建了一个名为 WidgetCo 的用户组和名为 Shirley 的用户,并将 Shirley 添加至 WidgetCo 用户组。Nikki 还创建了一个名为 aws-s3-bucket1 的专用存储桶以供 Shirley 使用。

Nikki 更新现有策略或添加新的策略来满足合作伙伴 Widget Company 的需求。例如,Nikki 可新建用于拒绝 WidgetCo 用户组成员使用任何操作(写入操作除外)的策略。除非有一个广泛的策略,授予所有用户访问大量 Amazon S3 操作的许可,否则此策略将非常必要。