Introduction to AWS Identity and Access Management (IAM)

什么是IAM

AWS 身份与访问管理(IAM)是亚马逊网络服务(AWS)提供的一项网络服务,能让您安全地管理对 AWS 服务和资源的访问。 它使您可以控制谁能够访问哪些 AWS 资源,以及他们可以对这些资源执行什么操作。

IAM关键概念

  • 用户

IAM 用户代表与 AWS 服务交互的个人或应用程序。每个用户都有一组唯一的凭证(如访问密钥和密码)。

  • 用户组

用户组是 IAM 用户的集合。通过给一个组分配权限,您可以更高效地管理多个用户的访问权限。

  • 角色

角色用于委托对 AWS 资源的访问权限。它们不与特定的用户或组相关联

  • 策略

策略是 IAM 访问控制的核心。策略是一个基于 JSON 的文档,用于定义权限。它详细说明了允许或拒绝用户、组或角色对特定 AWS 资源进行的操作。

IAM应用场景

  • 多用户环境下的权限管理

  • 跨账户访问管理

  • 与第三方应用的集成

IAM的安全最佳实践

  • 最小权限原则 只授予用户、组或角色完成其工作任务所需的最小权限

  • 定期审查权限 企业的业务需求和员工职责可能会随着时间而变化,因此需要定期审查和更新用户、组和角色的权限

  • 启用多因素认证(MFA) 对于重要的用户账户,建议启用多因素认证

目的

此实验将演示:

  • 探索预先创建的 IAM 用户和组

  • 检查应用于预先创建的组的 IAM 策略

  • 按照实际场景,将用户添加到启用了特定功能的组

  • 查找和使用 IAM 登录 URL

  • 试验策略对服务访问的影响

步骤一 浏览用户和组

1.在 AWS Management Console 顶部的搜索栏中,搜索并选择IAM.

2.在左侧的导航窗格中,单击 Users。

3.单击 user-1。

这将带来 user-1 的摘要页面。将显示 Permissions 选项卡。

请注意,user-1 没有任何权限。

注意:您应该会看到 Unexpected 错误消息。这是正常的。

4.单击 Groups 选项卡。 User-1 也不是任何组的成员。

5.单击 Security credentials 选项卡。 user-1 被分配了控制台密码

6.在左侧导航窗格中,单击 User Groups。

已为您创建以下组:

EC2-Administrator

EC2-Support

S3-Support

单击 EC2-Support 组。

这将带您进入 EC2-Support 组的摘要页面。

7.单击 Permissions 选项卡。 此组具有与之关联的托管策略,称为 AmazonEC2ReadOnlyAccess。

托管策略是可以附加到 IAM 用户和组的预构建策略 (由 AWS 或您的管理员构建)。

更新策略后,对策略的更改将立即应用于附加到策略的所有用户和组。

单击 Permissions (权限) 选项卡下的 AmazonEC2ReadOnlyAccess,此时将打开一个新的浏览器窗口。

现在单击 { } JSON。

8.IAM 策略中语句的基本结构为:

Effect 表示是 Allow (允许) 还是 Deny (拒绝) 权限。

Action 指定可对 AWS 服务进行的 API 调用(例如 cloudwatch:ListMetrics)。

Resource 定义策略规则涵盖的实体的范围(例如,特定的 Amazon S3 存储桶或 Amazon EC2 实例,或 *,表示任何资源)。

9.在左侧导航窗格中,单击 User Groups。

单击 S3-Support 组。

S3-Support 组附加了 AmazonS3ReadOnlyAccess 策略。

10.单击 Permissions (权限) 选项卡下的 AmazonS3ReadOnlyAccess,此时将打开一个新的浏览器窗口。

现在单击 { } JSON。

此策略有权获取和列出 Amazon S3 中的资源。

11.在左侧导航窗格中,单击 User Groups。

单击 EC2-Admin 组。

单击 Permissions (权限) 选项卡下的 EC2-Admin-Policy。现在单击 JSON 选项卡。

此策略授予查看 (Describe) 有关 Amazon EC2 的信息的权限,以及启动和停止实例的能力。

12.在屏幕底部,单击 Cancel (取消) 以关闭策略。

业务场景

业务场景 在本实验的其余部分,您将使用这些用户和组来启用支持以下业务场景的权限: 用户---在组中---- 权限

用户 1 - S3 支持-- 对 Amazon S3 的只读访问权限

用户 2 - EC2 支持-- 对 Amazon EC2 的只读访问权限

用户 3 - EC2-管理员-- 查看、启动和停止 Amazon EC2 实例

步骤二 将用户添加到组

1.在左侧导航窗格中,单击 User Groups。

2.单击 S3-Support 组。

3.单击 Users 选项卡。

4.在 Users 选项卡中,单击 Add Users。

5.在 Add Users to Group (将用户添加到组) 窗口中,配置以下内容:

选择 user-1。

在屏幕底部,单击 Add Users。

在 Users 选项卡中,您将看到 user-1 已添加到组中。

6.将 user-2 添加到 EC2-Support Group

您已将 user-2 雇佣到一个角色中,他们将在该角色中为 Amazon EC2 提供支持。

使用与上述步骤类似的步骤,将 user-2 添加到 EC2-Support 组。

user-2 现在应该是 EC2-Support 组的一部分。

7.将 user-3 添加到 EC2-Admin 组

您已聘请用户 3 作为 Amazon EC2 管理员,负责管理您的 EC2 实例。

8.使用与上述步骤类似的步骤,将 user-3 添加到 EC2-Admin 组。

user-3 现在应该是 EC2-Admin 组的一部分。

9.在左侧导航窗格中,单击 User Groups。

每个 Group 的 Users 列中应有一个 1,表示每个 Group 中的用户数。

步骤三 登录和测试用户

1.在左侧导航窗格中,单击 Dashboard。

显示 IAM 用户登录 URL,它看起来类似于:https://123456789012.signin.aws.amazon.com/console 此链接可用于登录您当前使用的 AWS 账户。

2.将 IAM 用户登录 URL 复制到文本编辑器。

3.打开一个无痕窗口。

4.单击 Tools 菜单选项

5.单击 InPrivate 浏览

6.将 IAM 用户登录链接粘贴到您的私有窗口中,然后按 Enter。

您现在将以用户 1 的身份登录,该用户已被聘为您的 Amazon S3 存储支持人员。

7.登录方式:

IAM 用户名: 用户 1

密码:粘贴位于这些说明左侧的 AdministratorPassword 的值。

在 AWS Management Console 顶部的搜索栏中,搜索并选择第 3 页.

8.单击名称中包含 s3bucket 的存储桶。

您的 S3 存储桶的名称也位于这些说明的左侧。名为 awslabs-resources 的存储桶也可能与错误一起存在。

注意:这是正常的。您无权访问此存储桶。

由于您的用户是 IAM 中 S3-Support Group 的成员,因此他们有权查看 Amazon S3 存储桶列表和 s3bucket 的内容。

9.现在,测试他们是否有权访问 Amazon EC2。

在 AWS Management Console 顶部的搜索栏中,搜索并选择EC2.

10.通过以下方式导航到启动实验室的区域:

单击屏幕顶部 Support 左侧的下拉箭头

选择与这些说明左侧的 Region 值匹配的 region 值

在左侧导航窗格中,单击 Instances (实例)。

您看不到任何实例。这是因为尚未为您的用户分配任何使用 Amazon EC2 的权限。

您现在将以用户 2 的身份登录,该用户已被聘为您的 Amazon EC2 支持人员。

11.通过配置以下内容,将用户 1 从 AWS 管理控制台中注销:

在屏幕顶部,单击 user-1

单击 Sign Out

将 IAM 用户登录链接粘贴到您的私有窗口中,然后按 Enter。

此链接应位于文本编辑器中。

12.登录方式:

IAM 用户名: 用户 2

密码:粘贴位于这些说明左侧的 AdministratorPassword 的值。

在 AWS Management Console 顶部的搜索栏中,搜索并选择EC2.

在屏幕右上角,通过切换按钮启用 New EC2 Experience(如果默认情况下未启用)。

13.通过以下方式导航到启动实验室的区域:

单击屏幕顶部 Support 左侧的下拉箭头

选择与这些说明左侧的 Region 值匹配的 region 值

在左侧导航窗格中,单击 Instances (实例)。

您现在可以看到 Amazon EC2 实例,因为您具有 Read Only 权限。但是,您将无法对 Amazon EC2 资源进行任何更改。

14.应选择您的 EC2 实例如果未选择,请选择它。

在 Instance state(实例状态)中,菜单单击 Stop instance(停止实例)。

在 Stop instance (停止实例) 窗口中,单击 Stop (停止)。

您将收到一条错误消息,指出您无权执行此操作。这表明该策略只允许您获取信息,而不进行更改。

关闭显示的错误消息。

15.接下来,检查用户 2 是否可以访问 Amazon S3。

在 AWS Management Console 顶部的搜索栏中,搜索并选择第 3 页.

您将收到错误 Access Denied because user-2 didn't permission to use Amazon S3.

您现在将以用户 3 的身份登录,该用户已被聘为您的 Amazon EC2 管理员。

16.通过配置以下内容,将用户 2 从 AWS 管理控制台中注销:

在屏幕顶部,单击 user-2

单击 Sign Out

将 IAM 用户登录链接粘贴到您的私有窗口中,然后按 Enter。

17.再次将登录链接粘贴到 Web 浏览器地址栏中。如果它不在剪贴板中,请从之前存储它的文本编辑器中检索它。

登录方式:

IAM 用户名: 用户 3

密码:粘贴位于这些说明左侧的 AdministratorPassword 的值。

在 AWS Management Console 顶部的搜索栏中,搜索并选择EC2.

18.通过以下方式导航到启动实验室的区域:

单击屏幕顶部 Support 左侧的下拉箭头

选择与这些说明左侧的 Region 值匹配的 region 值

19.在左侧导航窗格中,单击 Instances (实例)。 作为 EC2 管理员,您现在应该有权停止 Amazon EC2 实例。

应选择您的 EC2 实例。如果不是,请选择它。

20.在 Instance state(实例状态)中,菜单单击 Stop instance(停止实例)。

21.在 Stop Instance (停止实例) 窗口中,单击 Stop (停止)。

22.实例将进入 stopping 状态并关闭。 关闭您的隐私窗口。

结论

  • 探索预先创建的 IAM 用户和组

  • 已检查应用于预先创建的组的 IAM 策略

  • 遵循真实场景,将用户添加到启用了特定功能的组

  • 找到并使用了 IAM 登录 URL

  • 试验了策略对服务访问的影响