使用 Valkey 和 Redis OSS AUTH 命令进行身份验证 - Amazon ElastiCache

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

使用 Valkey 和 Redis OSS AUTH 命令进行身份验证

注意

AUTH 已被 基于角色的访问控制(RBAC) 取代。所有无服务器缓存都必须使用 RBAC 进行身份验证。

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

Valkey 和 Redis ElastiCache OSS 的身份验证概述

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

使用 AUTH 时,尤其要注意以下 AUTH 令牌或密码限制:

  • 令牌(或密码)必须是 16-128 个可打印字符。

  • 非字母数字字符仅限使用 !、&、#、$、^、<、>、-。

  • 只能为启用了传输中加密的 Valkey 或 Redis OSS 集群启用 AUTH。

要设置增强令牌,我们建议您遵循严格的密码策略,例如,要求满足以下条件:

  • 令牌(或密码)必须包含至少以下任意三种字符类型:

    • 大写字符

    • 小写字符

    • 数字

    • 非字母数字字符(!&#$^<>-

  • 令牌(或密码)不能包含词典单词或稍加修改的词典单词。

  • 令牌(或密码)不能与最近使用过的令牌相同或相似。

对适用 ElastiCache 于 Valkey 和 Redis 的 OSS 集群进行身份验证

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

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

关键参数
  • --engine – 必须为 valkeyredis

  • --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 令牌

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

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

轮换 AUTH 令牌

要使用新的 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 令牌,使用更新策略 SET 更新所需的 AUTH 令牌。

注意

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

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

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

以下AWS CLI操作修改复制组以轮换令AUTHThis-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 令牌

要更新 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

在现有集群上启用身份验证

要在现有 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

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

要使用控制台从 RBAC 迁移到 AUTH
  1. 登录AWS 管理控制台并打开 ElastiCache 控制台,网址为 https://console.aws.amazon.com/elasticache/

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

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

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

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

  5. 对于 Actions(操作),选择 Modify(修改)。

    此时将显示修改窗口。

  6. 对于访问控制,选择 Valkey AUTH 默认用户访问Redis OSS AUTH 默认用户访问

  7. Valkey AUTH 令牌Redis OSS AUTH 令牌下,设置新令牌。

  8. 选择预览更改,然后在下一个屏幕上选择修改

要从 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 命令进行身份验证

注意

如果您需要在 ElastiCache 集群上禁用访问控制,请参阅在 ElastiCache Valkey 或 Redis OSS 缓存上禁用访问控制