功能概述

一组 Redis 集群,赋予多个应用使用,用户需要为每个应用限定其使用权限。除默认用户外,Redis Standalone 自 v6.2.5 版本起,新增用户 ACL(Access Control List)功能,支持普通用户的创建与权限管理操作。用户可以在 Console 页面进行用户的相关操作,实现 ACL 用户在线管理。

创建 Redis Standalone 集群时,系统将同步创建一个默认用户 default,作为 管理员账户 使用,拥有全部权限。除此之外,用户还可添加写用户、读用户、监控用户等,赋予相应的权限。

说明
  • ACL 功能仅针对普通用户,default 用户不在 Console 页面展示及管理。

  • default 用户,作为 管理员账户 使用,拥有全部权限。用户可以为其配置密码参数 requirepass,详情可参考配置集群参数。若未进行设置,则默认无密码。

操作步骤

步骤一:开启控制台管理 ACL

修改配置参数 控制台管理 ACL,详情可参考修改集群配置参数

注意

开启控制台管理 ACL参数,将清除集群通过命令行或其他方式已添加的所有 ACL 用户。

步骤二:添加 ACL 用户

  1. 通过 Web 浏览器登录企业云平台的 Console。

  2. 在顶部菜单栏中选择产品与服务 > 数据库与缓存 > 键值数据库 Redis Standalone,进入 Redis Standalone 管理页面。

  3. 在 Redis Standalone 管理页面,点击目标集群 ID,进入集群详情页面。

    redis_cluster_info
  4. 在右侧用户管理 ACL 标签页,点击 + 添加帐号,弹出账号配置对话框。

  5. 用户根据页面提示信息,填写相关参数。页面参数说明如下。

    参数 说明

    用户名

    输入数据库账号名。不可创建同名账号。

    • 不支持 default

    • 命名规则:由大写字母 A~Z、小写字母 a~z、数字 0~9 以及下划线 _ 组成的,长度为 2~26 的字符串。

    密码

    输入数据库密码。

    • 密码规则:由大写字母 A~Z、小写字母 a~z、数字 0~9 和特殊字符 !@#$%^&*()./; 组成的,长度最少为 6 的字符串。

    • 可设为空。

    开启/停用

    是否启用该帐号。开启后,该用户才可验证登录。支持后续修改,具体操作请参见启停帐号

    规则

    用户权限的控制规则。通过访问控制字符串设置用户的权限。具体说明请参见权限控制字符串

  6. 确认配置信息无误后,点击提交,返回账号列表页面,即可查看已添加账号。待集群状态更新为 活跃 即创建成功。

附录

权限控制字符串

权限控制字符串即 ACL 规则,用于给用户设置命令权限及数据权限,避免用户的误操作导致数据丢失或避免数据泄露的安全风险。适用于以下场景。

  • 希望限制用户访问命令和键以提高安全性,使不受信任的用户没有权限访问,而受信任的用户仅有完成工作的最小访问权限。例如,限制用户只能执行只读命令。

  • 希望提高运营安全,以防止由于软件错误或人为错误而导致进程或人员访问 Redis,从而破坏数据或配置。例如,禁止工作人员从 Redis 调用 FLUSHALL 命令。

ACL 规则是使用 DSL(Domain specific language)定义的,描述了用户能够执行以及不能执行的操作。规则始终按照从左到右,从第一个到最后一个的顺序进行应用。多条规则之间使用空格分隔。

允许/禁止命令

参数 说明

+<command>

将命令添加到用户可以调用的命令列表中。

-<command>

将命令从用户可以调用的命令列表中移除。

+@<category>

允许用户调用 <category> 类别中的所有命令。

  • 有效类别为 @admin@set@read 等,可通过调用 ACL CAT 命令查看完整列表。

  • 特殊类别 @all 表示所有命令,包括当前和未来版本中存在的所有命令。

-@<category>

禁止用户调用 <category> 类别中的所有命令。

allcommands

+@all 的别名,允许调用所有命令,包括当前存在的命令以及将来通过模块加载的所有命令。

nocommands

-@all 的别名,禁止调用所有命令。

+<command>|subcommand

允许使用已禁用命令的特定子命令。

说明

不可使用 -<command>|subcommand 写法,只能以 + 开头。

允许/禁止 Key

参数 说明

~<pattern>

添加可以在命令中提及的键模式。

allkey

~* 的别名,表示允许全部 Key,其中 * 为通配符。

resetkeys

使用当前模式覆盖所有允许的模式。例如 ~int:* ~sor:* resetkeys ~new:*,最终客户端只允许访问匹配 ~new:* 模式的 Key。

配置示例

  • 示例一:允许用户调用 GET 命令。

    +get ~*
  • 示例二:允许用户调用除 GET 命令之外的所有命令。

    +@all -get ~*
  • 示例三:允许用户调用 READ 与 ADMIN 类别下的命令。

    +@read  +@admin ~*
  • 示例四:允许读以 qingcloud:redis: 开头的 Key。

    +@read ~qingcloud:* ~redis:*
  • 示例五:允许用户使用 cluster infocluster nodes 查看集群相关信息。

    +cluster|info +cluster|nodes