

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Valkey 和 Redis OSS AUTH 命令进行身份验证
<a name="auth"></a>

**注意**  
**AUTH** 已被 [基于角色的访问控制（RBAC）](Clusters.RBAC.md) 取代。所有无服务器缓存都必须使用 RBAC 进行身份验证。

通过使用 Valkey 和 Redis OSS 身份验证令牌（或密码），Valkey 和 Redis OSS 可以在允许客户端运行命令之前要求提供密码，从而提高数据安全性。**AUTH** 仅适用于基于节点的集群。

**Topics**
+ [Valkey 和 Redis ElastiCache OSS 的身份验证概述](#auth-overview)
+ [对适用 ElastiCache 于 Valkey 和 Redis 的 OSS 集群进行身份验证](#auth-using)
+ [修改现有集群上的 AUTH 令牌](#auth-modifyng-token)
+ [从 RBAC 迁移到 AUTH](#Migrate-From-RBAC-to-AUTH)

## Valkey 和 Redis ElastiCache OSS 的身份验证概述
<a name="auth-overview"></a>

当你在 for **AUTH** Valkey 和 Redis OSS 集群中使用时，会有一些改进。 ElastiCache 

使用 AUTH 时，尤其要注意以下 AUTH 令牌或密码限制：
+ 令牌（或密码）必须是 16-128 个可打印字符。
+ 非字母数字字符仅限使用 \$1、&、\$1、\$1、^、<、>、-。
+ 只能为启用了传输中加密的 Valkey 或 Redis OSS 集群启用 AUTH。

要设置增强令牌，我们建议您遵循严格的密码策略，例如，要求满足以下条件：
+ 令牌（或密码）必须包含至少以下任意三种字符类型：
  + 大写字符
  + 小写字符
  + 数字 
  + 非字母数字字符（`!`、`&`、`#`、`$`、`^`、`<`、`>`、`-`）
+ 令牌（或密码）不能包含词典单词或稍加修改的词典单词。
+ 令牌（或密码）不能与最近使用过的令牌相同或相似。

## 对适用 ElastiCache 于 Valkey 和 Redis 的 OSS 集群进行身份验证
<a name="auth-using"></a>

您可以要求用户在受令牌保护的 Valkey 或 Redis OSS 服务器上输入令牌（密码）。为此，在创建复制组或集群时，请在 `--auth-token` 参数（API：`AuthToken`）中包含正确的令牌。还要在复制组或集群的所有后续命令中包含该令牌。

以下AWS CLI操作创建启用了传输中加密 (TLS) 和**AUTH**令牌的复制组`This-is-a-sample-token`。用已存在的子网组替换子网组 `sng-test`。

**关键参数**
+ **--engine** – 必须为 `valkey` 或 `redis`。
+ **--engine-version** – 如果引擎为 Redis OSS，则必须为 3.2.6、4.0.10 或更高版本。
+ **--transit-encryption-enabled** – 对于身份验证和 HIPAA 资格是必需的。
+ **--auth-token** – 对于 HIPAA 资格是必需的。该值必须是该受令牌保护的 Valkey 或 Redis OSS 服务器的正确令牌。
+ **--cache-subnet-group** – 对于 HIPAA 资格是必需的。

对于 Linux、macOS 或 Unix：

```
aws elasticache create-replication-group \
    --replication-group-id authtestgroup \
    --replication-group-description authtest \
    --engine redis \ 
    --cache-node-type cache.m4.large \
    --num-node-groups 1 \
    --replicas-per-node-group 2 \    
    --transit-encryption-enabled \
    --auth-token This-is-a-sample-token \
    --cache-subnet-group sng-test
```

对于 Windows：

```
aws elasticache create-replication-group ^
    --replication-group-id authtestgroup ^
    --replication-group-description authtest ^
    --engine redis ^ 
    --cache-node-type cache.m4.large ^
    --num-node-groups 1 ^
    --replicas-per-node-group 2 ^    
    --transit-encryption-enabled ^
    --auth-token This-is-a-sample-token ^
    --cache-subnet-group sng-test
```

## 修改现有集群上的 AUTH 令牌
<a name="auth-modifyng-token"></a>

为了简化更新身份验证的过程，您可以修改集群上使用的 **AUTH** 令牌。如果引擎版本为 Valkey 7.2 或更高版本或 Redis 5.0.6 或更高版本，则可以进行此修改。 ElastiCache 还必须启用传输中加密。

修改 AUTH 令牌支持两种策略：ROTATE 和 SET。ROTATE 策略会向服务器添加一个额外的 AUTH 令牌，同时保留之前的令牌。SET 策略会更新服务器，使其仅支持一个 AUTH 令牌。请使用 `--apply-immediately` 参数进行这些修改调用以立即应用更改。

### 轮换 AUTH 令牌
<a name="auth-modifyng-rotate"></a>

要使用新的 **AUTH 令牌**更新 Valkey 或 Redis OSS 服务器，请调用 `ModifyReplicationGroup` API，并将 `--auth-token` 参数设置为新的 **AUTH** 令牌，将 `--auth-token-update-strategy` 值设置为 ROTATE。ROTATE 修改完成后，除 `auth-token` 参数中指定的 AUTH 令牌外，集群还将支持之前的 AUTH 令牌。如果在 AUTH 令牌轮换之前未在复制组上配置 AUTH 令牌，则集群除了支持未进行身份验证的连接以外，还支持 `--auth-token` 参数中指定的 AUTH 令牌。请参阅[设置 AUTH 令牌](#auth-modifying-set)，使用更新策略 SET 更新所需的 AUTH 令牌。

**注意**  
如果您之前未配置 AUTH 令牌，则修改完成后，除在 auth-token 参数中指定的一个令牌外，集群将不支持任何 AUTH 令牌。

如果在已支持两个 AUTH 令牌的服务器上执行此修改，则在此操作过程中还将删除最早的 AUTH 令牌。这允许服务器在给定时间内支持最多两个最新的 AUTH 令牌。

此时，您可以更新客户端以使用最新的 AUTH 令牌。在更新客户端后，您可以使用 SET 策略轮换 **AUTH** 令牌（在下一节中说明）以开始使用唯一的新令牌。

以下AWS CLI操作修改复制组以轮换令**AUTH**牌`This-is-the-rotated-token`。

对于 Linux、macOS 或 Unix：

```
aws elasticache modify-replication-group \
--replication-group-id authtestgroup \
--auth-token This-is-the-rotated-token \
--auth-token-update-strategy ROTATE \
--apply-immediately
```

对于 Windows：

```
aws elasticache modify-replication-group ^
--replication-group-id authtestgroup ^
--auth-token This-is-the-rotated-token ^
--auth-token-update-strategy ROTATE ^
--apply-immediately
```

### 设置 AUTH 令牌
<a name="auth-modifying-set"></a>

要更新 Valkey 或 Redis OSS 服务器以支持单个所需 **AUTH** 令牌，请调用 `ModifyReplicationGroup` API 操作，并使用与上一个 AUTH 令牌值相同的 `--auth-token` 参数和 `SET` 值的 `--auth-token-update-strategy` 参数。SET 策略只能用于拥有 2 个 AUTH 令牌或之前使用 ROTATE 策略时拥有 1 个可选 AUTH 令牌的集群。在修改完成后，服务器仅支持 auth-token 参数中指定的 AUTH 令牌。

以下AWS CLI操作修改复制组以将 AUTH 令牌设置为。`This-is-the-set-token`

对于 Linux、macOS 或 Unix：

```
aws elasticache modify-replication-group \
--replication-group-id authtestgroup \
--auth-token This-is-the-set-token \
--auth-token-update-strategy SET \
--apply-immediately
```

对于 Windows：

```
aws elasticache modify-replication-group ^
--replication-group-id authtestgroup ^
--auth-token This-is-the-set-token ^
--auth-token-update-strategy SET ^
--apply-immediately
```

### 在现有集群上启用身份验证
<a name="auth-enabling"></a>

要在现有 Valkey 或 Redis OSS 服务器上启用身份验证，请调用 `ModifyReplicationGroup` API 操作。调用 `ModifyReplicationGroup`，将 `--auth-token` 参数作为新令牌，并将 `--auth-token-update-strategy` 参数值设置为 ROTATE。

在 ROTATE 修改完成后，集群除了支持未进行身份验证的连接外，还支持 `--auth-token` 参数中指定的 **AUTH** 令牌。在所有客户端应用程序都更新为使用 AUTH 令牌针对 Valkey 或 Redis OSS 进行身份验证后，请使用 SET 策略根据需要标记 AUTH 令牌。只有启用了传输中加密（TLS）的 Valkey 和 Redis OSS 服务器才支持启用身份验证。

## 从 RBAC 迁移到 AUTH
<a name="Migrate-From-RBAC-to-AUTH"></a>

如果您使用 Valkey 或 Redis OSS 基于角色的访问控制（RBAC）对用户进行身份验证（如[基于角色的访问控制（RBAC）](Clusters.RBAC.md)中所述），并希望迁移到 AUTH，请使用以下流程。您可以使用控制台或 CLI 进行迁移。

**要使用控制台从 RBAC 迁移到 AUTH**

1. 登录AWS 管理控制台并打开 ElastiCache 控制台，网址为[ https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)。

1. 从右上角的列表中，选择要修改的集群所在的AWS区域。

1. 在导航窗格中，选择在您要修改的集群上运行的引擎。

   此时会显示选定引擎的集群列表。

1. 在集群列表中，对于要修改的集群，选择其名称。

1. 对于 **Actions**（操作），选择 **Modify**（修改）。

   此时将显示**修改**窗口。

1. 对于**访问控制**，选择 **Valkey AUTH 默认用户访问**或 **Redis OSS AUTH 默认用户访问**。

1. 在 **Valkey AUTH 令牌**或 **Redis OSS AUTH 令牌**下，设置新令牌。

1. 选择**预览更改**，然后在下一个屏幕上选择**修改**。

**要从 RBAC 迁移到 AUTH，请使用AWS CLI**

使用以下任一命令为 Valkey 或 Redis OSS 复制组配置新的可选 **AUTH** 令牌。请注意，在使用下一步中的更新策略 `SET` 根据需要标记 Auth 令牌之前，可选的 Auth 令牌将允许对复制组进行未经身份验证的访问。

对于 Linux、macOS 或 Unix：

```
aws elasticache modify-replication-group \
    --replication-group-id test \
    --remove-user-groups \
    --auth-token This-is-a-sample-token \
    --auth-token-update-strategy ROTATE \ 
    --apply-immediately
```

对于 Windows：

```
aws elasticache modify-replication-group ^
    --replication-group-id test ^
    --remove-user-groups ^
    --auth-token This-is-a-sample-token ^
    --auth-token-update-strategy ROTATE ^ 
    --apply-immediately
```

执行上述命令后，您可以使用新配置的可选身份验证令牌更新您的 Valkey 或 Redis OSS 应用程序，以向 ElastiCache 复制组进行身份验证。要完成 Auth 令牌轮换，请在下面的后续命令中使用更新策略 `SET`。这将根据需要标记可选 AUTH 令牌。Auth 令牌更新完成后，复制组状态将显示为 `ACTIVE`，并且该复制组的所有连接都需要进行身份验证。

对于 Linux、macOS 或 Unix：

```
aws elasticache modify-replication-group \
			--replication-group-id test \
			--auth-token This-is-a-sample-token \
			--auth-token-update-strategy SET \ 
			--apply-immediately
```

对于 Windows：

```
aws elasticache modify-replication-group ^
			--replication-group-id test ^
			--remove-user-groups ^
			--auth-token This-is-a-sample-token ^
			--auth-token-update-strategy SET ^ 
			--apply-immediately
```

有关更多信息，请参阅 [使用 Valkey 和 Redis OSS AUTH 命令进行身份验证](#auth)。

**注意**  
如果您需要在 ElastiCache 集群上禁用访问控制，请参阅[在 ElastiCache Valkey 或 Redis OSS 缓存上禁用访问控制](in-transit-encryption-disable.md)。