

# 为无法使用 IAM 角色的工作负载创建 IAM 用户
<a name="getting-started-workloads"></a>

**重要**  
作为[最佳实践](best-practices.md#lock-away-credentials)，建议您要求您的人类用户在访问 AWS 时使用[临时凭证](id_credentials_temp.md)。  
或者，您可以使用 [AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/getting-started.html) 管理自己的用户身份，包括您的管理用户。建议使用 IAM Identity Center 来管理对您账户的访问以及这些账户中的权限。如果您使用的是外部身份提供商，则还可以在 IAM Identity Center 中配置用户身份的访问权限。

如果您的使用案例需要具有编程访问权限和长期凭证的 IAM 用户，我们建议您确立程序以在需要时更新访问密钥。有关更多信息，请参阅 [更新访问密钥](id-credentials-access-keys-update.md)。

要执行一些账户和服务管理任务，您必须使用根用户凭证登录。要查看需要您以根用户身份登录的任务，请参阅[需要根用户凭证的任务](id_root-user.md#root-user-tasks)。

## 为无法使用 IAM 角色的工作负载创建 IAM 用户
<a name="getting-started-workloads-section-1"></a>

**最小权限**  
要执行下列步骤，您必须至少具有以下 IAM 权限：  
`iam:AddUserToGroup`
`iam:AttachGroupPolicy`
`iam:CreateAccessKey`
`iam:CreateGroup`
`iam:CreateServiceSpecificCredential`
`iam:CreateUser`
`iam:GetAccessKeyLastUsed`
`iam:GetAccountPasswordPolicy`
`iam:GetAccountSummary`
`iam:GetGroup`
`iam:GetLoginProfile`
`iam:GetPolicy`
`iam:GetRole`
`iam:GetUser`
`iam:ListAccessKeys`
`iam:ListAttachedGroupPolicies`
`iam:ListAttachedUserPolicies`
`iam:ListGroupPolicies`
`iam:ListGroups`
`iam:ListGroupsForUser`
`iam:ListInstanceProfilesForRole`
`iam:ListMFADevices`
`iam:ListPolicies`
`iam:ListRoles`
`iam:ListRoleTags`
`iam:ListSSHPublicKeys`
`iam:ListServiceSpecificCredentials`
`iam:ListSigningCertificates`
`iam:ListUserPolicies`
`iam:ListUserTags`
`iam:ListUsers`
`iam:UploadSSHPublicKey`
`iam:UploadSigningCertificate`

------
#### [ Console ]

1. 按照 *AWS 登录用户指南*中的[如何登录 AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)所述，根据用户类型选择相应的登录过程。

1. 在 **IAM 控制台主页**左侧的导航窗格中，在**搜索 IAM** 文本框中输入查询语句。

1. 在导航窗格中，选择**用户**，然后选择**创建用户**。

1. 在**指定用户详细信息**页面中，执行以下操作：

   1. 对于 **User name**，键入 ***WorkloadName***。将 ***WorkloadName*** 替换为要使用该账户的工作负载的名称。

   1. 选择**下一步**。

1. （可选）在**设置权限**页面上，执行以下操作：

   1. 选择 **Add user to group**。

   1. 选择**创建群组**。

   1. 在**创建用户组**对话框中，对于**用户组名称**，键入代表组中工作负载使用情况的名称。在本示例中，使用名称 **Automation**。

   1. 在**权限策略**下，选中 **PowerUserAccess** 托管策略对应的复选框。
**提示**  
在**权限策略**搜索框中输入 *Power* 以快速找到此托管策略。

   1. 选择**创建用户组**。

   1. 返回到带有 IAM 组列表的页面，选中新用户组所对应的复选框。如果列表中未显示新组，请选择 **Refresh**（刷新）。

   1. 选择**下一步**。

1. （可选）在**标签**部分中，通过以键值对的形式附加标签来向用户添加元数据。有关更多信息，请参阅 [AWS Identity and Access Management 资源的标签](id_tags.md)。

1. 验证新用户的用户组成员资格。如果您已准备好继续，请选择 **Create user**（创建用户）。

1. 此时将显示一条状态通知，告知您已成功创建用户。选择**查看用户**，进入用户详细信息页面

1. 选择**安全凭证**选项卡。然后，创建工作负载所需的凭证。
   + **访问密钥** - 选择**创建访问密钥**，为用户生成和下载访问密钥。
**重要**  
这是您查看或下载秘密访问密钥的唯一机会，您必须向用户提供此信息，他们才能使用 AWS API。将用户的新访问密钥 ID 和秘密访问密钥保存在安全的地方。**完成此步骤后，您再也无法访问这些秘密访问密钥。**
   + **用于 AWS CodeCommit 的 SSH 公有密钥** – 选择**上传 SSH 公有密钥**上传 SSH 公有密钥，这样用户就可以通过 SSH 与 CodeCommit 存储库进行通信。
   + **用于 AWS CodeCommit 的 HTTPS Git 凭证** – 选择**生成凭证**以生成一组与 Git 存储库配合使用的唯一用户凭证。选择**下载凭证**，将用户名和密码保存到 .csv 文件中。这是该信息可用的唯一时间。如果您忘记或丢失密码，则需要重置密码。
   + **用于 Amazon Keyspaces（Apache Cassandra 兼容）的凭证** - 选择**生成凭证**以生成用于 Amazon Keyspaces 的特定服务用户凭证。选择**下载凭证**，将用户名和密码保存到 .csv 文件中。这是该信息可用的唯一时间。如果您忘记或丢失密码，则需要重置密码。
**重要**  
服务特定凭证是与特定 IAM 用户相关联的长期凭证，只能用于所针对的服务。要向 IAM 角色或联合身份授予使用临时凭证访问所有 AWS 资源的权限，应将 AWS 身份验证与适用于 Amazon Keyspaces 的 SigV4 身份验证插件搭配使用。有关更多信息，请参阅 *Amazon Keyspaces（Apache Cassandra 兼容）开发人员指南*中的[使用临时凭证连接到使用 IAM 角色和 SigV4 插件的 Amazon Keyspaces（Apache Cassandra 兼容）](https://docs.aws.amazon.com/keyspaces/latest/devguide/access.credentials.html#temporary.credentials.IAM)。
   + **X.509 签名证书** - 如果您需要发出安全的 SOAP 协议请求且位于 AWS Certificate Manager 不支持的区域，请选择**创建 X.509 证书**。ACM 是预置、管理和部署您的服务器证书的首选工具。有关使用 ACM 的更多信息，请参阅 [https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html)。

您已经创建具有编程访问权限的用户，并且使用 **PowerUserAccess** 任务函数对其进行配置。该用户的权限策略授予对除 IAM 和 AWS Organizations 之外的所有服务的完全访问权限。

如果工作负载无法担任 IAM 角色，则可以使用此相同的流程向其他工作负载授予对您 AWS 账户 资源的编程访问权限。此过程使用 **PowerUserAccess** 托管策略来分配权限。要遵循最低权限的最佳实践，可以考虑使用限制性更强的策略或创建自定义策略，将访问权限限制为仅访问该计划所需的资源。要了解有关使用限制用户对特定 AWS 资源的权限的策略的信息，请参阅[适用于 AWS 资源的 Access Management](access.md)和[IAM 基于身份的策略示例](access_policies_examples.md)。要在创建用户组之后向其中添加其他用户，请参阅 [编辑 IAM 组中的用户](id_groups_manage_add-remove-users.md)。

------
#### [ AWS CLI ]

1. 创建一个名为 **Automation** 的用户。
   + [aws iam create-user](https://docs.aws.amazon.com/cli/latest/reference/iam/create-user.html)

   ```
                 aws iam create-user \
                     --user-name Automation
   ```

1. 创建一个名为 **AutomationGroup** 的 IAM 用户组，将 AWS 托管策略 `PowerUserAccess` 附加到该组，然后将 **Automation** 用户添加到该组。
**注意**  
*AWS 托管策略* 是由 AWS 创建和管理的独立策略。每个策略都有自己的 Amazon 资源名称（ARN），其中包含策略名称。例如，`arn:aws:iam::aws:policy/IAMReadOnlyAccess` 是一个 AWS 托管策略。有关 ARN 的更多信息，请参阅 [IAM ARN](reference_identifiers.md#identifiers-arns)。有关适用于 AWS 服务 的 AWS 托管式策略的列表，请参阅 [AWS 托管式策略](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/policy-list.html)。
   + [aws iam create-group](https://docs.aws.amazon.com/cli/latest/reference/iam/create-group.html) 

     ```
                       aws iam create-group \
                           --group-name AutomationGroup
     ```
   + [aws iam attach-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-group-policy.html)

     ```
                       aws iam attach-group-policy \
                           --policy-arn arn:aws:iam::aws:policy/PowerUserAccess \
                           --group-name AutomationGroup
     ```
   + [aws iam add-user-to-group](https://docs.aws.amazon.com/cli/latest/reference/iam/add-user-to-group.html) 

     ```
                      aws iam add-user-to-group \
                          --user-name Automation \
                          --group-name AutomationGroup
     ```
   + 运行 [aws iam get-group](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html) 命令列出 **AutomationGroup** 及其成员。

     ```
                     aws iam get-group \
                          --group-name AutomationGroup
     ```

1. 创建工作负载所需的安全凭证。
   + **创建用于测试的访问密钥**：[aws iam create-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)

     ```
                            aws iam create-access-key \
                                --user-name Automation
     ```

     此命令的输出显示秘密访问密钥和访问密钥 ID。将此信息记录并存储在安全的位置。如果这些凭证丢失，将无法恢复，则必须创建一个新的访问密钥。
**重要**  
这些 IAM 用户访问密钥是长期凭证，会给您的账户带来安全风险。完成测试后，建议您删除这些访问密钥。如果您有考虑访问密钥的场景，则请调查是否可以为工作负载 IAM 用户启用 MFA，并使用 [aws sts get-session-token](https://docs.aws.amazon.com/cli/latest/reference/sts/get-session-token.html) 获取会话的临时凭证，而不是使用 IAM 访问密钥。
   + **上传 AWS CodeCommit 的 SSH 公有密钥**：[aws iam upload-ssh-public-key](https://docs.aws.amazon.com/cli/latest/reference/iam/upload-ssh-public-key.html)

     以下示例假设您的 SSH 公有密钥存储在文件 `sshkey.pub` 中。

     ```
                            aws upload-ssh-public-key \
                                --user-name Automation \
                                --ssh-public-key-body file://sshkey.pub
     ```
   + **上传 X.509 签名证书**：[aws iam upload-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/upload-signing-certificate.html)

     如果您需要发出安全 SOAP 协议请求且位于 AWS Certificate Manager 不支持的区域，则请上传 X.509 证书。ACM 是预置、管理和部署您的服务器证书的首选工具。有关使用 ACM 的更多信息，请参阅 [https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html)。

     以下示例假设您的 X.509 签名证书存储在文件 `certificate.pem` 中。

     ```
                           aws iam upload-signing-certificate \
                           --user-name Automation \
                           --certificate-body file://certificate.pem
     ```

如果工作负载无法担任 IAM 角色，则可以使用此相同的流程向其他工作负载授予对您 AWS 账户 资源的编程访问权限。此过程使用 **PowerUserAccess** 托管策略来分配权限。要遵循最低权限的最佳实践，可以考虑使用限制性更强的策略或创建自定义策略，将访问权限限制为仅访问该计划所需的资源。要了解有关使用限制用户对特定 AWS 资源的权限的策略的信息，请参阅[适用于 AWS 资源的 Access Management](access.md)和[IAM 基于身份的策略示例](access_policies_examples.md)。要在创建用户组之后向其中添加其他用户，请参阅 [编辑 IAM 组中的用户](id_groups_manage_add-remove-users.md)。

------