为无法使用 IAM 角色的工作负载创建 IAM 用户
重要
作为最佳实践,我们建议您要求您的人类用户在访问 Amazon 时使用临时凭证。您可以使用身份提供程序来以代入角色的方式,为人类用户提供对 Amazon Web Services 账户 的联合访问权限,这样将提供临时凭证。对于集中式访问权限管理,我们建议使用 Amazon IAM Identity Center(IAM Identity Center)来管理对您账户的访问权限以及这些账户中的其他权限。您可以使用 IAM Identity Center 创建和管理自己的用户身份,包括您的管理用户。如果您使用的是外部身份提供商,则还可以在 IAM Identity Center 中配置用户身份的访问权限。有关更多信息,请参阅《Amazon IAM Identity Center 用户指南》中的什么是 Amazon IAM Identity Center。
在 Amazon 中,有一些特定的使用场景需要带有 IAM 用户的长期凭证。您可以使用 IAM 在您 Amazon 账户的伞形结构下创建这些 IAM 用户,并使用 IAM 管理他们的权限。部分使用场景包括:
-
无法使用 IAM 角色的工作负载
-
第三方 Amazon 客户端
-
Amazon CodeCommit 访问
-
Amazon Keyspaces(Apache Cassandra 兼容)访问
-
Amazon IAM Identity Center 不适用于您的账户,而且您没有其他身份提供商
根据最佳实践,对于需要具有编程访问权限和长期凭证的 IAM 用户的场景,我们建议您确立程序以在需要时更新访问密钥。有关更多信息,请参阅 更新访问密钥。
要执行一些账户和服务管理任务,您必须使用根用户凭证登录。要查看需要您以根用户身份登录的任务,请参阅需要根用户凭证的任务。
此过程描述如何使用 Amazon Web Services Management Console 为无法使用 IAM 角色的工作负载创建 IAM 用户,以及将其添加到用户组。在执行此过程之前,请使用具有管理员权限的账户登录。
为工作负载创建 IAM 用户(控制台)
-
要使用您的 IAM Identity Center 用户身份登录,请使用您在创建 IAM Identity Center 用户时发送到您的电子邮件地址的登录网址。
要获取使用 IAM Identity Center 用户登录方面的帮助,请参阅《Amazon 登录 用户指南》中的登录 Amazon 访问门户。
或者,使用具有管理员权限的账户登录 IAM 控制台。在下一页上,输入您的密码。
-
在导航窗格中,选择用户,然后选择创建用户。
-
在指定用户详细信息页面中,执行以下操作:
-
对于 User name,键入
WorkloadName
。将WorkloadName
替换为要使用该账户的工作负载的名称。 -
选择下一步。
-
-
(可选)在设置权限页面上,执行以下操作:
-
选择 Add user to group。
-
选择创建组。
-
在创建用户组对话框中,对于用户组名称,键入代表组中工作负载使用情况的名称。在本示例中,使用名称
Automation
。 -
在权限策略下,选中 PowerUserAccess 托管策略对应的复选框。
提示
在权限策略搜索框中输入 Power 以快速找到此托管策略。
-
选择创建用户组。
-
返回到带有用户组列表的页面,选中您的新用户组所对应的复选框。如果列表中未显示新组,请选择 Refresh(刷新)。
-
选择下一步。
-
-
(可选)在标签部分中,通过以键值对的形式附加标签来向用户添加元数据。有关更多信息,请参阅 标记 IAM 资源。
-
验证新用户的用户组成员资格。如果您已准备好继续,请选择 Create user(创建用户)。
-
此时将显示一条状态通知,告知您已成功创建用户。选择查看用户,进入用户详细信息页面
-
选择安全凭证选项卡。然后,创建工作负载所需的凭证。
-
访问密钥 - 选择创建访问密钥,为用户生成和下载访问密钥。
重要
这是您查看或下载秘密访问密钥的唯一机会,您必须向用户提供此信息,他们才能使用 Amazon API。将用户的新访问密钥 ID 和秘密访问密钥保存在安全的地方。完成此步骤后,您再也无法访问这些秘密访问密钥。
-
用于 Amazon CodeCommit 的 SSH 公有密钥 – 选择上传 SSH 公有密钥上传 SSH 公有密钥,这样用户就可以通过 SSH 与 CodeCommit 存储库进行通信。
-
用于 Amazon CodeCommit 的 HTTPS Git 凭证 – 选择生成凭证以生成一组与 Git 存储库配合使用的唯一用户凭证。选择下载凭证,将用户名和密码保存到 .csv 文件中。这是该信息可用的唯一时间。如果您忘记或丢失密码,则需要重置密码。
-
用于 Amazon Keyspaces(Apache Cassandra 兼容)的凭证 - 选择生成凭证以生成用于 Amazon Keyspaces 的特定服务用户凭证。选择下载凭证,将用户名和密码保存到 .csv 文件中。这是该信息可用的唯一时间。如果您忘记或丢失密码,则需要重置密码。
重要
服务特定凭证是与特定 IAM 用户相关联的长期凭证,只能用于所针对的服务。要向 IAM 角色或联合身份授予使用临时凭证访问所有 Amazon 资源的权限,应将 Amazon 身份验证与适用于 Amazon Keyspaces 的 SigV4 身份验证插件搭配使用。有关更多信息,请参阅 Amazon Keyspaces(Apache Cassandra 兼容)开发人员指南中的使用临时凭证连接到使用 IAM 角色和 SigV4 插件的 Amazon Keyspaces(Apache Cassandra 兼容)。
-
X.509 签名证书 - 如果您需要发出安全的 SOAP 协议请求且位于 Amazon Certificate Manager 不支持的区域,请选择创建 X.509 证书。ACM 是预置、管理和部署您的服务器证书的首选工具。有关使用 ACM 的更多信息,请参阅 Amazon Certificate Manager 用户指南。
-
您已经创建具有编程访问权限的用户,并且使用 PowerUserAccess 任务函数对其进行配置。该用户的权限策略授予对除 IAM 和 Amazon Organizations 之外的所有服务的完全访问权限。
如果工作负载无法担任 IAM 角色,则可以使用此相同的流程向其他工作负载授予对您 Amazon Web Services 账户 资源的编程访问权限。此过程使用 PowerUserAccess 托管策略来分配权限。要遵循最低权限的最佳实践,可以考虑使用限制性更强的策略或创建自定义策略,将访问权限限制为仅访问该计划所需的资源。要了解有关使用限制用户对特定 Amazon 资源的权限的策略的信息,请参阅适用于 Amazon 资源的 Access Management和IAM 基于身份的策略示例。要在创建用户组之后向其中添加其他用户,请参阅 在 IAM 用户组中添加和删除用户。
创建 IAM 组和用户组(Amazon CLI)
如果执行了上一节中的步骤,则您已使用 Amazon Web Services Management Console 设置了一个自动化用户组,同时在您的 Amazon Web Services 账户 中创建了 IAM 用户。此过程显示创建用户组和将现有用户添加到该组的替代方法。
概述:设置自动化用户组
-
创建一个用户组并为其提供名称(例如 Automation)。有关更多信息,请参阅 创建用户组(Amazon CLI)。
-
附加向用户组授予 Power User 权限的策略 — 这会授予其对除 IAM 和 Amazon Organizations 以外的所有服务的完全访问权限。有关更多信息,请参阅 将策略附加到用户组(Amazon CLI)。
-
向用户组至少添加一个用户。有关更多信息,请参阅 在您的 Amazon Web Services 账户 中创建 IAM 用户。
创建用户组(Amazon CLI)
本部分将介绍如何在 IAM 系统中创建一个群组。
要求
安装 Amazon Command Line Interface (Amazon CLI)。有关更多信息,请参阅Amazon Command Line Interface《用户指南》中的安装 Amazon CLI。
创建自动化用户组(Amazon CLI)
-
键入
aws iam create-group
命令,并使用您为用户组选择的名称。(可选)您可以包含路径作为该用户组名的一部分。有关路径的更多信息,请参阅 易记名称和路径。名称可包含字母、数字以及以下字符:加号 (+)、等号 (=)、逗号 (,)、句点 (.)、at 符号 (@)、下划线 (_) 和连字符 (-)。名称不区分大小写,且最大长度可为 128 个字符。在此示例中,您创建名为 Automation 的用户组。
aws iam create-group --group-name Admins
{ "Group": { "Path": "/", "CreateDate": "2014-06-05T20:29:53.622Z", "GroupId":"ABCDEFGHABCDEFGHABCDE", "Arn": "arn:aws:iam::123456789012:group/Admins", "GroupName": "Automation" } }
-
键入
aws iam list-groups
命令以列出 Amazon Web Services 账户 中的用户组并确认该用户组已创建。aws iam list-groups
{ "Groups": [ { "Path": "/", "CreateDate": "2014-06-05T20:29:53.622Z", "GroupId":"ABCDEFGHABCDEFGHABCDE", "Arn": "arn:aws:iam::123456789012:group/Admins", "GroupName": "Automation" } ] }
响应中包括您的新用户组的 Amazon Resource Name (ARN)。ARN 是 Amazon 用于识别资源的标准格式。ARN 中的 12 位数字是您的 Amazon Web Services 账户 ID。您分配至用户组(Automation)的易记名称将在用户组 ARN 的末尾显示。
将策略附加到用户组(Amazon CLI)
在控制台教程中,在创建组时附加托管策略。但是,如果您使用 CLI 或 SDK 创建组,则该组尚未被授予任何权限。本节介绍如何使用 CLI 将名为 PowerUserAccess 的 Amazon 托管策略附加到 Automation 用户组。有关策略的更多信息,请参阅适用于 Amazon 资源的 Access Management。
添加提供 PowerUserAccess 权限的策略(Amazon CLI)
-
键入
aws iam attach-group-policy
命令以将名为 AdministratorAccess 的策略附加到 Automation 用户组。该命令使用名为 PowerUserAccess 的 Amazon 托管策略的 ARN。aws iam attach-group-policy --group-name Automation --policy-arn arn:aws:iam::aws:policy/PowerUserAccess
如果命令执行成功,则没有应答。
-
键入
aws iam list-attached-group-policies
命令以确认该策略已附加到 Automation 用户组。aws iam list-attached-group-policies --group-name Automation
该响应列出附加到 Automation 用户组的策略名称。类似如下的响应告诉您名为 PowerUserAccess 的策略已附加到 Automation 用户组:
{ "AttachedPolicies": [ { "PolicyName": "PowerUserAccess", "PolicyArn": "arn:aws:iam::aws:policy/PowerUserAccess" } ], "IsTruncated": false }
您可使用 aws iam get-policy
命令来确认特定策略的内容。
将用户添加到现有组(Amazon CLI)
完成组的设置后,您必须在该组中至少添加一位用户。
将用户添加到 IAM 组(CLI)
-
键入包含
group-name
和user-name
选项的aws iam add-user-to-group
命 令,如以下示例所示:aws iam add-user-to-group \ --user-name Workload1 \ --group-name Automation
-
该命令不产生任何输出,要确认用户已添加到该组,请键入包含
user-name
选项的aws iam list-groups-for-user
命令,如以下示例所示:aws iam list-groups-for-user \ --user-name Workload1 \
该命令将输出用户所属的组,类似于如下示例:
{ "Groups": [ { "Path": "/", "CreateDate": "2024-06-06T01:18:08Z", "GroupId": "AKIAIOSFODNN7EXAMPLE", "Arn": "arn:aws:iam::123456789012:group/Automation", "GroupName": "Admin" } ] }
减少用户组权限
Automation
用户组的成员可以完全访问除提供用户管理操作的服务之外的所有服务(如 IAM 和 Organizations)。经过预定义的示例活动时段(如 90 天)后,您可以查看用户组成员已访问的服务。然后,您可以创建新的客户管理型策略,该策略的权限有所减少以替换 PowerUserAccess
策略。新策略应仅包括采样周期内访问的服务。更新组以移除 PowerUserAccess
托管策略并附加您创建的新客户管理型策略。以下过程使用本教程前面部分创建的 Automation
组逐步完成该过程。
有关上次访问的信息的更多信息,请参阅使用上次访问的信息优化 Amazon 中的权限。
查看上次访问的信息
等待预定义的活动时段(如 90 天)经过。然后,查看您的用户或用户组上次访问的信息,以了解用户上次尝试访问您的 PowerUserAccess
策略允许的服务的时间。
登录 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,请选择用户组,然后选择 Automation 组名称。
-
在用户组摘要页面上,请选择 Access Advisor(访问顾问)选项卡。
上次访问的信息表显示用户组成员上次尝试访问每个服务的时间(按时间顺序,从最近的尝试开始)。该表仅包含策略允许的服务。在此情况下,
PowerUserAccess
策略允许访问所有 Amazon 服务。 -
查看此表并生成您的用户组成员最近访问过的服务的列表。
例如,假设在上个月内,您的自动化团队仅访问了 Amazon EC2 和 Amazon S3 服务。但六个月前,他们访问了 Amazon EC2 Auto Scaling 和 IAM。您知道他们正在调查 EC2 Auto Scaling,但您认定不需要这样做。您还知道他们使用 IAM 创建角色以允许 Amazon EC2 访问 S3 存储桶中的数据。因此,您决定减少自动化用户的权限,以仅允许访问上个月中使用的服务。
生成具有减少权限的策略
您可以使用用户或角色的访问活动生成客户管理型策略,以便仅允许访问您的用户所需的服务。在本示例中,我们将使用 Workload1
用户作为新权限策略的基础
生成策略以仅允许访问必要的服务
-
在导航窗格中,选择用户,然后选择 Workload1 用户名进入用户详细信息页面。
-
在(权限选项卡的“基于 CloudTrail 事件生成策略”部分下,选择生成策略。
-
在生成策略页面上,配置以下项目:
-
在选择时间段中,选择过去 30 天。
-
对于待分析的 CloudTrail 跟踪,请选择记录该用户活动的区域和跟踪。
-
选择创建和使用新服务角色。
-
-
选择生成策略,然后等到角色创建完毕。在出现正在生成策略通知消息之前,请勿刷新或离开控制台页面。
-
策略已生成,但您必须根据需要对其进行审查和自定义,因为自动生成的策略可能不包含完成策略所需的操作级信息。有关更多信息,请参阅 IAM Acess Analyzer 策略生成。
例如,您可能编辑第一个包括
Allow
效果和NotAction
元素的语句以仅允许 Amazon EC2 和 Amazon S3 操作。为此,请将其替换为具有FullAccessToSomeServices
ID 的语句。您的新策略可能类似于以下示例策略。{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccessToSomeServices", "Effect": "Allow", "Action": [ "ec2:*", "s3:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:DeleteServiceLinkedRole", "iam:ListRoles", "organizations:DescribeOrganization" ], "Resource": "*" } ] }
-
要进一步减少策略对特定操作和资源的权限,请在 CloudTrail Event history(事件历史记录)中查看您的事件。在此处,您可以查看有关用户已访问的特定操作和资源的详细信息。有关更多信息,请参阅 Amazon CloudTrail 用户指南中的在 CloudTrail 控制台中查看 CloudTrail 事件。
-
查看并验证您的策略后,将其另存为
AutomationPolicy
。 -
导航到组页面,然后选择您之前创建的
Automation
组。 -
选择权限选项卡,然后依次选择添加权限和附加策略。
-
在附加权限策略页面的其他权限策略列表中,选择您之前创建的
AutomationPolicy
,然后选择附加策略。 -
您将返回到组详细信息页面。其中有两个策略附加到该组,即 PowerUserAccess 和
AutomationPolicy
。选中 PowerUserAccess 的复选框,然后选择移除。当系统要求确认移除时,选择移除。
根据您创建的新策略,该 Automation
组的成员现在可以减少访问权限。
更多信息
有关需要 IAM 用户的其他使用案例的说明,请参阅: