使用 Redis AUTH 命令进行身份验证 - ElastiCache 适用于 Redis 的 Amazon
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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

注意

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

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

ElastiCache for Redis 中 AUTH 的概览

在将 Redis AUTH 与 ElastiCache for Redis 集群一起使用时,需要进行一些优化。

特别是,在将 AUTH 与 ElastiCache for Redis 一起使用时,请注意以下 AUTH 令牌(或密码)限制:

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

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

  • 只能为启用了传输中加密的 ElastiCache for Redis 集群启用 AUTH。

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

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

    • 大写字符

    • 小写字符

    • 数字

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

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

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

对 ElastiCache for Redis 集群应用身份验证

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

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

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

  • --engine-version – 必须是 3.2.6、4.0.10 或更高版本。

  • --transit-encryption-enabled – 对于身份验证和 HIPAA 资格是必需的。

  • --auth-token – 对于 HIPAA 资格是必需的。该值必须是该受令牌保护的 Redis 服务器的正确令牌。

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

修改现有 ElastiCache for Redis 集群上的 AUTH 令牌

为了简化更新身份验证的过程,您可以修改在 ElastiCache for Redis 集群上使用的 AUTH 令牌。如果引擎版本为 5.0.6 或更高版本,并且 ElastiCache for Redis 启用了传输中加密,您可以进行该修改。

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

轮换 AUTH 令牌

要使用新的 AUTH 令牌更新 Redis 服务器,请调用 ModifyReplicationGroup API,将 --auth-token 参数作为新的 AUTH 令牌并将 --auth-token-update-strategy 值设置为 ROTATE。在修改完成后,除了 auth-token 参数中指定的 AUTH 令牌以外,集群还支持以前的 AUTH 令牌。

注意

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

如果该修改是在已支持两个 AUTH 令牌的服务器上执行的,还会在该操作期间删除最早的 AUTH 令牌,从而使服务器在给定时间最多支持两个最新的 AUTH 令牌。

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

以下 Amazon 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 令牌

要更新具有两个 AUTH 令牌的 Redis 服务器以支持单个 AUTH 令牌,请调用 ModifyReplicationGroup API 操作。调用 ModifyReplicationGroup,将 --auth-token 参数作为新 AUTH 令牌,并将 --auth-token-update-strategy 参数值设置为 SET。auth-token 参数值必须与上次轮换的 AUTH 令牌相同。在修改完成后,Redis 服务器仅支持 auth-token 参数中指定的 AUTH 令牌。

以下 Amazon 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

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

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

在修改完成后,除了支持未进行身份验证的连接以外,集群还支持 auth-token 参数中指定的 AUTH 令牌。仅在启用了传输中加密(TLS)的 Redis 服务器上支持启用身份验证。

从 RBAC 迁移到 Redis AUTH

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

使用控制台从 RBAC 迁移到 Redis AUTH
  1. 登录 Amazon Web Services Management Console 并打开 ElastiCache 控制台(https://console.aws.amazon.com/elasticache/)。

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

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

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

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

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

    此时将显示修改窗口。

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

  7. Redis AUTH 令牌下,设置一个新令牌。

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

使用 Amazon CLI 从 RBAC 迁移到 Redis AUTH
  • 使用以下命令之一。

    对于 Linux、macOS 或 Unix:

    aws elasticache modify-replication-group \ --replication-group-id test \ --remove-user-groups \ --auth-token password \ --auth-token-update-strategy SET \ --apply-immediately

    对于 Windows:

    aws elasticache modify-replication-group ^ --replication-group-id test ^ --remove-user-groups ^ --auth-token password ^ --auth-token-update-strategy SET ^ --apply-immediately

有关使用 AUTH 的更多信息,请参阅 redis .io 网站上的 AUTH 令牌

注意

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