在AWS中,IAM可能对于使用和理解都是一个挑战,特别是对于新用户来说。不过别担心!如果你对于如何在AWS中使用IAM来管理用户权限感到困惑,那么你来对地方了,我们将帮助你了解IAM的可能性。
在本教程中,我们将通过一系列示例逐步介绍IAM的基本概念。
准备好了吗?深吸一口气,开始吧!
先决条件
本教程将进行实践演示。如果你想跟着做,请确保你有一台个人电脑和一个AWS账户。如果你没有AWS账户,可以注册一个免费层的账户。
在AWS中创建IAM用户
在深入了解IAM的工作原理之前,首先让我们通过创建用户开始本教程。用户可以用于各种用途。但是在本教程中,你将创建一些没有任何权限、不属于任何组的用户,并且完全没有访问权限。
1. 登录到AWS控制台。本演示使用一个名为cloud_user的用户名,但你的用户名会不同。

2. 在AWS控制台中,输入IAM并点击弹出的IAM服务,如下所示。您的浏览器将重定向到IAM仪表板。

IAM是一个全球服务,这意味着用户及其权限适用于您的整个AWS账户/区域。如果多人共享一个AWS账户(这在公司范围的开发团队中非常普遍),您需要确保适当的IAM工作人员轮换。
此外,您可以在us-east区域内创建一个EC实例。实例是区域性的。但是,AWS身份和访问管理控制不是区域性的。分配给用户的权限将适用于用户连接到的EC实例的任何区域。

4. 在IAM仪表板上,点击左侧窗格中的用户,然后点击页面右上角的添加用户以初始化添加用户。

现在,使用以下方式配置用户详细信息:
- 在下面显示的用户名字段中提供用户名。在此示例中,用户名设置为user-1。
- 启用密码 – AWS管理控制台访问选项,以允许用户登录到AWS管理控制台。
- 选择自定义密码选项以设置控制台密码,并在文本字段中提供安全密码。
- 取消选中要求密码重置选项,以便用户在下次登录时不会收到创建新密码的提示,然后点击下一步:权限。

5. 跳过设置权限,点击下一步:标签,因为您正在创建一个没有权限的用户。

6. 也跳过添加标签,点击下一步:审核。

7. 审核用户详细信息,然后点击创建用户完成用户创建。

创建用户后,您将看到成功的屏幕,如下所示。

8. 现在返回到IAM仪表板的用户页面,点击新创建的用户(user-1)以查看用户信息。
打开您的user-1

在权限和组选项卡下,您可以看到user-1没有与其关联的任何权限,也不是任何组的成员。


在安全凭证选项卡中,您将看到user-1可能拥有的不同访问密钥。您可以在此选项卡上上传SSH公钥,这对于AWS EC2实例非常有用。

访问建议选项卡显示user-1直接或通过其他服务访问的服务,以及user-1上次访问该服务的时间。

9. 最后,重复步骤三到七创建另外两个用户(user-2和user-3)。返回IAM仪表板的用户页面,您将看到一个类似下面的列表。

创建用户组
现在您已经创建了用户,是时候创建组了。您将使用AWS托管策略和一个JSON文件来创建组。
在本教程中,您将创建三个组:
- EC2-Admin:提供查看、启动和停止EC2实例的权限
- EC2-Support:提供对EC2的只读访问权限
- S3-Support:提供对S3的只读访问权限
开始创建用户组:
1. 在IAM仪表板中,点击左侧窗格上的用户组,然后点击创建组。
2. 在创建用户组页面上提供一个用户组名称(EC2-Admin),如下所示。

保留默认权限,然后点击创建组以完成创建EC2-Admin组。

创建新组后,您将在页面顶部收到已创建EC2-Admin用户组的消息,如下所示。然后您的浏览器会自动重定向到用户组页面(第三步)。

3. 点击EC2-Admin组,在组名称列下查看组的摘要信息,您可以在此处添加内联策略(第四步)。

4. 现在点击权限选项卡 -> 添加权限 -> 创建内联策略以创建内联策略。内联策略通常与用户直接关联,通常用于一次性情况下申请权限。
例如,您的团队正在将旧的EC2环境迁移到新的环境。您希望确保旧EC2实例的管理员能够启动/停止并将安全组设置复制到新的EC2实例。

5. 在创建策略页面,单击下面显示的JSON选项卡以打开JSON编辑器,在这里您将创建一个策略。

6. 将下面的代码(策略)粘贴到编辑字段中,然后单击审查策略以创建内联策略。此内联策略是由AWS或您AWS帐户内的管理员预先构建的,您可以使用、定制或编辑以满足您的确切需求。
有了此策略,EC2-Admin组的成员被允许启动("ec2:StartInstances"
)、停止("ec2:StopInstances"
)和查看("ec2:Describe*"
)EC2实例。他们被允许("Effect": "Allow"
)在所有资源上执行操作("Resource": "*"
)。这些操作本质上与AWS的编程或API调用相关联。
EC2-Admin组成员还有权限查看所有弹性负载均衡(Action": "elasticloadbalancing:Describe
)、列出指标(cloudwatch:ListMetrics
)、获取指标统计信息cloudwatch:GetMetricStatistics
和描述指标(cloudwatch:Describe
)。
CloudWatch指标会自动配置到您的EC实例中,同样适用于Auto Scaling服务。

7. 查看策略摘要,然后单击保存更改以保存策略。

8. 现在,再次转到您的 IAM 仪表板,并像在第二步中那样初始化创建一个组。但这次,将用户组名称命名为 EC2-Support。
向下滚动,在附加权限策略搜索框中搜索AmazonEC2ReadOnlyAccess以将该策略附加到组(EC2-Support):
AmazonEC2ReadOnlyAccess是一种受管理的策略,类似于内联策略,因为它也可以附加到多个用户或用户组。但与内联策略不同,由管理员创建的此类型策略可重用,并且可以在您的组织内或与您帐户中的所有 AWS 帐户共享。
A managed policy is a shared policy. As a result, all users or groups of users who use the shared policy will have updated permissions automatically when the policy is updated.
此自动更新功能使受管理策略比内联策略更具吸引力。对于内联策略,如果策略发生更改,则管理员必须更新每个权限。
选中AmazonEC2ReadOnlyAccess选项,然后单击创建组以完成组的创建。

10. 现在,重复第八至第九步,使用 AmazonS3ReadOnlyAccess 受管理策略创建 S3-Support 组。创建了 S3-Support 组后,您将拥有一个类似以下显示每个组都定义了权限的组列表。

将用户添加到其适当的组中
您已创建了具有定义权限的用户和组。现在,是时候将用户添加到他们适当的组中了。您将打开每个组的摘要页面,并手动将用户添加到该组。
下表显示了您将将每个用户添加到的适当组:
Users | In-group | Permissions |
---|---|---|
user-1 | S3-Support | Read-only access to S3 Bucket |
user-2 | EC2-Support | Read-only access to EC2 Instance |
user-3 | EC2-Admin | Full EC2 Access (View/Start/Stop) |
1. 在您的 IAM 仪表板中,导航到用户组页面,然后单击下面显示的 S3-Support 组,以访问该组的摘要页面。

2. 接下来,单击用户选项卡 -> 添加用户以初始化将用户添加到组中。您的浏览器将重定向到一个页面,您将在该页面看到尚未属于任何组的用户列表(第三步)。

3. 勾选用户-1前面的复选框,然后单击添加用户将用户添加到 S3-Support 组中。然后,您的浏览器将自动重定向到 S3-Support 组的摘要页面。

如下图所示,您可以看到用户-1现在是 S3-Support 组的一部分。

4. 重复步骤一至步骤三,将用户-2和用户-3添加到其相应的组中。
5. 最后,导航到用户组页面,您将看到各组现在都有一个用户,就像下面的屏幕截图中所示。

测试用户权限是否正常工作
您已完全在其自己的组中创建了用户,并定义了权限。但是,您如何知道是否有效?现在是时候验证权限是否按预期工作了,有各种方法可以这样做。其中一种最常见的方法是使用基于 Web 的 AWS 管理控制台。
1. 导航到您的 IAM 仪表板,并在右侧面板复制 IAM 用户登录 URL,如下图所示。

2. 在您的 Web 浏览器中,导航到您之前记下的登录 URL(第一步),并使用用户-1的凭据登录。Google Chrome 和 Firefox 是执行此任务的最常推荐的浏览器。

3. 在搜索框中键入S3,然后点击下面显示的S3链接,即可访问Amazon S3 存储桶页面。

4. 现在,点击创建存储桶以初始化创建一个S3 存储桶。

5. 在常规配置部分输入存储桶名称,然后点击创建存储桶尝试创建一个S3存储桶。


如果您记得,您已将AmazonS3ReadOnlyAccess策略附加给了user-1,该策略仅允许user-1只读访问S3存储桶。因此,如果user-1尝试创建、删除或更新S3存储桶,则会弹出下面显示的错误消息。
下面的错误消息表明您对user-1设置的权限正常工作。

请注意,user-1也没有任何EC2权限。因此,为了进行双重检查,请导航到您的EC2仪表板,您将收到许多API错误,就像下面的屏幕截图中显示的一样。
您之所以遇到这些错误是因为最小权限原则(PoLP)。PoLP是这样一个概念,即任何给定的操作系统用户账户或进程应该具有完成工作所需的绝对最低权限。

6. 现在,请注销用户-1,然后登录为用户-2,并导航到您的EC2仪表板。

7. 单击任何正在运行的EC2实例以查看用户-2的权限。如下所示,您将获得有关实例的信息,例如 实例ID, 公共IPv4地址 等。

8. 单击页面最右侧的实例状态,并选择停止实例、重启实例或终止实例选项,以测试用户-2的权限是否正常工作。

请记住,用户-2仅对EC2实例具有只读访问权限(AmazonEC2ReadOnlyAccess)。因此,如果用户尝试操作EC2实例,将弹出下面的错误消息。
如果出现下面的错误消息,则表示用户-2的权限设置正确。

9. 最后,注销用户-2,然后登录为用户-3,尝试操作您帐户中正在运行的任何EC2实例。由于用户-3具有完全的EC2权限,您可以启动、停止或终止实例而不会收到错误消息。
结论
在整个教程中,您已经学习了如何创建具有定义策略的 IAM 用户和用户组。您还了解了如何通过尝试更改 EC2 实例状态和尝试创建 S3 存储桶来验证权限是否按预期工作。
在此时,您现在已经拥有了管理用户权限的 IAM 用户和组的基本设置。当然,您可以随时向您的账户添加更多用户,并根据需要应用更多策略。
现在,下一步是如何建立在您新获得的知识基础上?也许可以考虑设置您的 EC2 服务以与 IAM 一起工作,实现自动扩展。