

# 在 AWS CLI 中使用 IAM 用户凭证进行身份验证
<a name="cli-authentication-user"></a>

**警告**  
为了避免安全风险，在开发专用软件或处理真实数据时，请勿使用 IAM 用户进行身份验证，而是使用与身份提供者的联合身份验证，例如 [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。

此部分介绍如何使用 IAM 用户配置基本设置。其中包括使用 `config` 和 `credentials` 文件的安全凭证。如需改为查看 AWS IAM Identity Center 的配置说明，请参阅 [使用 AWS CLI 配置 IAM Identity Center 身份验证](cli-configure-sso.md)。

**Contents**
+ [

## 步骤 1：创建您的 IAM 用户
](#cli-authentication-user-create)
+ [

## 步骤 2：获取您的访问密钥
](#cli-authentication-user-get)
+ [

## 步骤 3：配置 AWS CLI
](#cli-authentication-user-configure.title)
  + [

### 使用 `aws configure`
](#cli-authentication-user-configure-wizard)
  + [

### 通过 .CSV 文件导入访问密钥
](#cli-authentication-user-configure-csv)
  + [

### 直接编辑 `config` 和 `credentials` 文件
](#cli-authentication-user-configure-csv.titlecli-authentication-user-configure-file)
+ [

## （可选）将多重身份验证与您的 IAM 用户凭证结合使用
](#cli-authentication-user-configure-csv.titlecli-authentication-user-mfa)

## 步骤 1：创建您的 IAM 用户
<a name="cli-authentication-user-create"></a>

按照《IAM 用户指南》**中的[创建 IAM 用户（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)过程操作来创建 IAM 用户。
+ 对于**权限选项**，选择**直接附加策略**以了解如何向该用户分配权限。
+ 大多数“入门”开发工具包教程都使用 Amazon S3 服务作为示例。要向应用程序提供对 Amazon S3 的完全访问权限，请选择要附加到此用户的 `AmazonS3FullAccess` 策略。

## 步骤 2：获取您的访问密钥
<a name="cli-authentication-user-get"></a>

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在 IAM 控制台的导航窗格中，选择**用户**，然后选择您之前创建用户的 **`User name`**。

1. 在用户的页面上，选择**安全凭证**页面。然后，在**访问密钥**下，选择**创建访问密钥**。

1.  对于**创建访问密钥步骤 1**，选择**命令行界面 (CLI)**。

1. 对于**创建访问密钥步骤 2**，输入可选标记并选择**下一步**。

1. 对于**创建访问密钥步骤 3**，选择**下载.csv 文件**以保存包含您的 IAM 用户访问密钥和秘密访问密钥的 `.csv` 文件。稍后您将需要此信息。

1. 选择 Done (完成)。

## 步骤 3：配置 AWS CLI
<a name="cli-authentication-user-configure.title"></a>

在常规使用中，AWS CLI 需要以下信息：
+ 访问密钥 ID
+ 秘密访问密钥
+ AWS 区域
+ 输出格式

AWS CLI 将这些信息存储在 `default` 文件中名为 `credentials` 的*配置文件*（一个设置集合）中。预设情况下，当您运行的 AWS CLI 命令未明确指定要使用的配置文件时，将使用此配置文件中的信息。有关 `credentials` 文件的更多信息，请参阅[AWS CLI 中的配置和凭证文件设置](cli-configure-files.md)。

要配置 AWS CLI，请使用下列过程之一：

**Topics**
+ [

### 使用 `aws configure`
](#cli-authentication-user-configure-wizard)
+ [

### 通过 .CSV 文件导入访问密钥
](#cli-authentication-user-configure-csv)
+ [

### 直接编辑 `config` 和 `credentials` 文件
](#cli-authentication-user-configure-csv.titlecli-authentication-user-configure-file)

### 使用 `aws configure`
<a name="cli-authentication-user-configure-wizard"></a>

对于一般用途，`aws configure` 命令是设置 AWS CLI 安装的最快方法。此配置向导将提示您输入入门所需的每条信息。除非使用 `--profile` 选项另行指定，否则 AWS CLI 会将此信息存储在 `default` 配置文件中。

以下示例使用示例值配置 `default` 配置文件。将它们替换为您自己的值，如以下部分所述。

```
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
```

以下示例使用示例值配置名为 `userprod` 的配置文件。将它们替换为您自己的值，如以下部分所述。

```
$ aws configure --profile userprod
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
```

### 通过 .CSV 文件导入访问密钥
<a name="cli-authentication-user-configure-csv"></a>

可以在创建访问密钥后导入下载的纯文本 `.csv` 文件，而不是使用 `aws configure` 输入访问密钥。

`.csv` 文件必须包含以下标头。
+ 用户名 - 必须将此列添加到您的 `.csv`。这将在导入时创建在 `config` 和 `credentials` 文件中使用的配置文件名称。
+ 访问密钥 ID
+ 秘密访问密钥

**注意**  
在创建初始访问密钥的过程中，一旦您关闭**下载 .csv 文件**对话框，就无法访问秘密访问密钥。如果您需要 `.csv` 文件，则需要自己创建一个包含所需标头和存储的访问密钥信息的文件。如果您不具有对访问密钥信息的访问权限，则需要创建新的访问密钥。

要导入 `.csv` 文件，请将 `aws configure import` 命令与 `--csv` 选项结合使用，如下所示：

```
$ aws configure import --csv file://credentials.csv
```

有关更多信息，请参阅 `aws\$1configure\$1import`。

### 直接编辑 `config` 和 `credentials` 文件
<a name="cli-authentication-user-configure-csv.titlecli-authentication-user-configure-file"></a>

要直接编辑 `config` 和 `credentials` 文件，请执行以下操作。

1. 创建或打开共享 AWS `credentials` 文件。此文件在 Linux 和 macOS 系统上为 `~/.aws/credentials`，在 Windows 上为 `%USERPROFILE%\.aws\credentials`。有关更多信息，请参阅 [AWS CLI 中的配置和凭证文件设置](cli-configure-files.md)。

1. 将以下文本添加到共享 `credentials` 文件中。替换您之前下载的 `.csv` 文件中的示例值并保存该文件。

   ```
   [default] 
   aws_access_key_id = AKIAIOSFODNN7EXAMPLE 
   aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   ```

## （可选）将多重身份验证与您的 IAM 用户凭证结合使用
<a name="cli-authentication-user-configure-csv.titlecli-authentication-user-mfa"></a>

为了提高安全性，当您尝试发出调用时，可以使用从多重身份验证（MFA）设备、U2F 设备或移动应用程序生成的一次性密钥。

使用启用 MFA 的 IAM 用户身份，运行 [https://docs.aws.amazon.com/cli/latest/reference/configure/mfa-login.html](https://docs.aws.amazon.com/cli/latest/reference/configure/mfa-login.html) 命令以配置一个新的配置文件，以便与所指定配置文件的多重身份验证（MFA）一起使用。如果未指定任何配置文件，则 MFA 将基于 `default` 配置文件。如果未配置默认配置文件，则 `mfa-login` 命令会在询问您的 MFA 信息之前提示您输入 AWS 凭证。以下命令示例使用您的默认配置并创建一个 MFA 配置文件。

```
$ aws configure mfa-login
MFA serial number or ARN: arn:aws:iam::123456789012:mfa/MFADeviceName
MFA token code: 123456
Profile to update [session-MFADeviceName]:
Temporary credentials written to profile 'session-MFADeviceName'
Credentials will expire at 2023-05-19 18:06:10 UTC
To use these credentials, specify --profile session-MFADeviceName when running AWS CLI commands
```

要更新现有配置文件，请使用 `--update-profile` 参数。

```
$ aws configure mfa-login --profile myprofile --update-profile mfaprofile
MFA token code: 123456
Temporary credentials written to profile 'mfaprofile'
Credentials will expire at 2023-05-19 18:06:10 UTC
To use these credentials, specify --profile mfaprofile when running AWS CLI commands
```

此命令当前仅支持基于软硬件的一次性密码（OTP）身份验证器。此命令当前不支持使用通行密钥和 U2F 设备。

要使用您的 MFA 配置文件，请在命令中使用 `--profile` 选项。

```
$ aws s3 ls --profile mfaprofile
```

有关将 MFA 与 IAM 结合使用的更多信息，包括如何将 MFA 分配给 IAM 用户，请参阅**《AWS Identity and Access Management 用户指南》中的 [IAM 中的 AWS 多重身份验证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html)。