您是否在组织扩展过程中苦于管理 AWS 资源访问权限?不用担心!AWS 安全令牌服务(STS)来拯救你。
借助 AWS STS 扮演角色特权,您可以向用户和应用程序临时授予对 AWS 资源的访问权限,而无需长期凭据。在本教程中,您将学会更有效地管理资源,同时保持其安全性。
继续阅读,并轻松获得对 AWS 基础架构和资源的完全控制!
先决条件
本教程将进行实践演示。要跟着进行,请确保您拥有一个启用了活动计费的 AWS 账户,但一个免费层账户就足够了。
创建零访问权限的 IAM 用户
在您可以使用 AWS STS 扮演角色特权之前,必须首先创建一个没有分配任何权限的IAM 用户。这个操作可能看起来有些违反直觉,但这是至关重要的,因为 IAM 用户不能直接扮演角色。他们必须通过 AWS STS 服务首先扮演一个角色,以获取临时安全凭证。
要创建一个零权限的 IAM 用户,请按照以下步骤操作:
1. 打开您喜爱的网络浏览器,并使用您的根 AWS 帐户登录到 AWS 管理控制台。
2. 接下来,从服务列表中搜索并选择 IAM,以访问 IAM 控制台。

3. 在 IAM 控制台上,导航到用户(左侧窗格),然后单击“添加用户”以开始添加新用户。

4. 现在,配置以下用户详细信息。此操作使您的 IAM 用户可以使用其用户名和密码登录到 AWS 管理控制台。
- 用户名 – 为新用户提供名称,并选中下面的复选框以向其提供访问 AWS 管理控制台的权限。
- 选择“我想创建 IAM 用户”选项,因为您正在创建 IAM 用户。
- 控制台密码 – 选择“自动生成的密码”选项以生成稍后可以更改的密码。
配置完成后,单击“下一步”以继续创建 IAM 用户。

5. 在下一页上,保留默认设置,并单击“下一步”以跳过设置用户权限。
无需为此用户分配任何权限,因为您正在创建一个零权限且可以访问 AWS 管理控制台的用户。
没有权限的用户在承担授予他们必要权限的角色之前无法执行任何操作。

6. 接下来,审查您配置的用户详细信息,并单击“创建用户”以完成创建 IAM 用户。

7. 复制并保存 IAM 用户的登录 URL 和密码。您稍后将需要这些信息以 IAM 用户身份登录。

8. 现在,返回到 IAM 控制台,导航到“用户”页面(左侧窗格),然后点击新创建的用户名称以访问其摘要页面。

9. 最后,在摘要页面上,记录用户的 Amazon 资源名称 (ARN),即用户的唯一标识符。在为用户分配角色时,稍后您将需要此 ARN。

准备自定义信任策略
拥有专用 IAM 用户后,您可以准备扮演角色,授予对 AWS 资源的访问权限。但是,要让 IAM 用户扮演角色,角色必须首先信任用户。
通过创建自定义信任策略,您将在 IAM 用户和角色之间建立一个“信任关系”。此信任关系指定了哪些用户或帐户可以扮演角色以及在什么条件下。
要准备自定义信任策略,请按照以下步骤操作:
1. 在 IAM 控制台中导航到“角色”(左侧窗格),然后点击“创建角色”以开始创建新角色。

2. 接下来,点击“自定义信任策略”选项以创建自定义策略。

3. 在文本字段中输入以下策略,如下所示,然后点击“下一步”。将 YOUR_ARN 替换为您在“创建一个零访问权限的 IAM 用户”部分最后一步中记录的 IAM 用户的 ARN。
以下是允许指定IAM用户或角色假定特定IAM角色的自定义信任策略的基本示例,具有以下字段:
Field | Function |
---|---|
Version | Specifies the version of the policy language. |
Statement | Contains the policy statement(s). |
Effect | Specifies whether the statement allows or denies access, with Allow, in this case, granting access. |
Principal | Specifies the entity allowed to assume the role; in this example, it is an empty string. |
Action | Specifies the action the IAM user or role is allowed to perform. The sts:AssumeRole value allows the user to assume the specified IAM role. |

4. 在下一页上,搜索并从出现的策略列表中选择AmazonEC2FullAccess,并点击“下一步”。此策略授予对所有EC2资源的完全访问权限。

5. 接下来,为您的自定义信任策略提供一个名称(即AWSEC2FULLACCESS)。

6. 保持其他设置不变,然后点击“创建角色”以完成角色的创建。
此时,IAM(sts_user)应该能够假定该角色。一旦被假定,用户将能够访问所有EC2资源,如列出、创建和删除EC2实例等。

7. 单击新创建的角色,如下所示,查看其详细信息。

8. 最后,复制在控制台中切换角色并保存的链接。您以后在使用IAM用户(sts_user)登录时切换角色时会需要这个链接。

切换和假定使用IAM用户的角色
创建角色后,您现在可以使用专用IAM用户假定该角色。您将使用IAM用户登录到AWS控制台,并切换到您创建的角色以测试对EC2的访问。
要了解如何使用IAM用户切换和假定角色:
1. 导航到你在“创建零访问权限IAM用户”部分第七步中记下的登录URL,并使用IAM用户的密码登录。
?通过使用不同的浏览器或隐身窗口登录,避免与根账户发生冲突。

2. 登录后,导航到EC2控制台,你会看到许多以红色显示的API错误,如下所示。这些错误表明IAM用户没有权限访问EC2资源。
要解决这些错误,你必须扮演你在下一步中创建的角色,以被授予对所有EC2资源(AWSEC2FULLACCESS)的访问权限。在AWS中扮演角色时,你会暂时获得与该角色关联的权限。

3. 打开一个新的浏览器选项卡,并导航到你在“准备自定义信任策略”部分最后一步记下的“切换角色链接”
。这个链接是一个特殊的URL,直接带你到AWS管理控制台中的“切换角色”页面。切换角色页面允许你扮演不同的角色,一组权限确定你可以访问哪些AWS资源。
4. 现在,为会话提供一个描述性的显示名称,并单击“切换角色”以扮演该角色。显示名称帮助你跟踪你的活动会话。
扮演角色后,你的浏览器会重定向到具有所选角色权限的AWS管理控制台。

5. 再次导航到EC2控制台,确认你的IAM用户已被授予访问EC2资源的权限。
如果一切顺利,您将不再看到之前看到的API错误,因为您现在使用角色的权限已经登录,包括访问EC2资源。

最后,点击您会话的显示名称(右上方),然后选择切换回以切换到原始的IAM用户。
您将从当前会话中注销,并以原始的IAM用户登录,具有其原始的权限集。这种操作是减少意外执行不需要的操作风险的最佳实践。

结论
在AWS中扮演角色是一个强大的功能,使您能够在不共享永久凭据的情况下临时授予对资源的访问权限。在本教程中,您已经学会了如何利用AWS STS扮演角色的特权。
在这一点上,您可以自信地扮演一个权限受限的角色,以确保资源的安全性,并最大程度地减少任何意外或恶意操作的潜在影响。
AWS管理控制台是开始使用AWS服务(如扮演角色)的绝佳方式。但为什么不尝试通过AWS命令行界面(CLI)扮演角色呢?探索并将AWS CLI集成到您的自动化脚本中可以提供更高级的功能和功能。