缓存数据库 Redis 企业版支持自定义角色权限,您可以根据业务需要,创建新的角色并赋予不同的权限,实现数据库的精细化管理,提升数据安全性。本文介绍如何创建角色。
注意事项
缓存数据库 Redis 企业版默认禁用了 flushall
,flushdb
和 keys
命令,因此即使您的账号角色中包含了上述这些禁用命令的权限,也无法执行对应命令操作。如需使用上述命令,请提交工单联系技术支持。关于企业版实例的更多功能特性限制详情,请参见约束与限制。
ACL 语法
缓存数据库 Redis 企业版将所有支持的命令根据一定的规则进行了分组,每个分组即为一个命令类(Command Category),您可以使用 ACL(Access Control Lists)语法为角色授予指定命令或命令类的调用权限。
说明
- 缓存数据库 Redis 企业版支持的命令类以及每种命令类下包含的具体命令详情,请参见 Redis 控制台创建角色对话框内的详细说明。
- 缓存数据库 Redis 企业版支持的命令详情,请参见命令支持。
语法规则
缓存数据库 Redis 企业版的 ACL 语法规则如下:
- 每条 ACL 规则都必须以
+
或 -
开头,+
或 -
后可以加上指定的命令或命令类,其中:
+
:表示允许调用某些命令或命令类。例如 +@all
表示允许调用所有命令。-
:表示禁止调用某些命令或命令类。例如 -@dangerous
表示禁止调用 dangerous
命令类中的所有命令。
- 命令类前面必须使用
@
表示,便于和具体的命令作区分。例如:
- 指定命令类: 例如
+@read
表示允许调用 read
命令类中的所有命令。 - 指定具体命令:例如
-get
表示仅禁止调用 get
命令。
- 命令和命令类都必须使用小写字母,长度为 1~24 个字符。
- Redis 原生命令中包含了部分特殊字符,在为这些命令设置 ACL 语法规则时需要注意如下几点。
特殊字符 | 是否需在 ACL 规则中转化 | 转化示例 |
---|
空格 | 需要转化为竖线(|)。 | 例如需要允许使用 ACL CAT 命令,那么 ACL 规则需设置为:+acl|cat 。 |
短横线(-) | 无需转化。 | 例如需要禁止使用 MEMORY MALLOC-STATS 命令,那么 ACL 规则需设置为:-memory|malloc-stats 。 |
下划线(_) | 无需转化。 | 例如需要禁止使用 GEORADIUSBYMEMBER_RO 命令,那么 ACL 规则需设置为:-georadiusbymember_ro 。 |
- 缓存数据库 Redis 企业版默认为所有角色的 ACL 规则自动添加
~*
语法,表示可以访问所有 KEY。 - 不支持使用
~<key>
语法来访问指定 KEY。
语法示例
缓存数据库 Redis 企业版默认提供了 Administrator、NotDangerous、ReadWrite 和 ReadOnly 四种角色,每种角色的 ACL 规则不同,支持的权限也不同。下表以默认的四种角色为例介绍角色的 ACL 规则设置方法。
默认角色名称 | ACL 规则 | 当前角色包含或除外的具体命令 |
---|
Administrator | +@all ~*
| 允许对所有 KEY 使用所有企业版已支持的命令。
缓存数据库 Redis 企业版支持的命令详情,请参见命令支持。 |
默认角色名称 | ACL 规则 | 当前角色包含或除外的具体命令 |
---|
NotDangerous | +@all -@dangerous ~*
| 允许对所有 KEY 使用除 dangerous 类之外的所有命令。
其中 dangerous 类命令包括如下具体命令: - acl、acl|deluser、acl|getuser、acl|list、acl|load、acl|log、acl|save、acl|setuser、acl|users;
- client、client|kill、client|list、client|unblock、cluster、cluster|set-config-epoch、config、config|get、config|resetstat、config|rewrite、config|set;
- flushall、flushdb;
- info;
- keys;
- module、module|list、monitor;
- restore;
- slowlog、slowlog|get、slowlog|len、slowlog|reset、sort、sort_ro。
|
默认角色名称 | ACL 规则 | 当前角色包含或除外的具体命令 |
---|
ReadWrite | +@all -@admin ~*
| 允许对所有 KEY 使用除 admin 类之外的所有命令。
其中 admin 类命令包括如下具体命令: - acl、acl|deluser、acl|getuser、acl|list、acl|load、acl|log、acl|save、acl|setuser、acl|users;
- client、client|kill、client|list、client|unblock、cluster、cluster|set-config-epoch、config、config|get、config|resetstat、config|rewrite、config|set;
- module、module|list、monitor;
- slowlog、slowlog|get、slowlog|len、slowlog|reset。
|
默认角色名称 | ACL 规则 | 当前角色包含或除外的具体命令 |
---|
ReadOnly | +@read ~*
| 允许对所有 KEY 使用 read 类中的所有命令。
选择了 ReadOnly 角色的账号,允许对所有 KEY 使用 read 类中的所有命令。 其中 read 类命令包括如下具体命令: - bitcount、bitfield_ro、bitpos;
- dbsize、dump;
- exists、expiretime;
- geodist、geohash、geopos、georadius_ro、georadiusbymember_ro、geosearch、get、getbit、getrange;
- hexists、hget、hgetall、hkeys、hlen、hmget、hrandfield、hscan、hstrlen、hvals;
- keys;
- lcs、lindex、llen、lpos、lrange;
- memory、memory|usage、mget;
- object、object|encoding、object|freq、object|idletime、object|refcount;
- pexpiretime、pfcount、pttl;
- randomkey;
- scan、scard、sdiff、sinter、sintercard、sismember、smembers、smismember、sort_ro、srandmember、sscan、strlen、substr、sunion;
- touch、ttl、type;
- xinfo、xinfo|consumers、xinfo|groups、xinfo|stream、xlen、xpending、xrange、xread、xrevrange;
- zcard、zcount、zdiff、zinter、zintercard、zlexcount、zmscore、zrandmember、zrange、zrangebylex、zrangebyscore、zrank、zrevrange、zrevrangebylex、zrevrangebyscore、zrevrank、zscan、zscore、zunion。
|
操作步骤
- 登录 Redis 控制台。
- 在顶部菜单栏的左上角,选择实例所属的项目和地域。
- 在实例列表页,单击目标实例名称。
- 在实例详情页,单击账号管理页签。
- 在账号管理页签下,单击角色页签。
- 在角色页签下,单击创建角色,在弹出的对话框中,配置如下参数。
参数 | 说明 |
---|
角色名称 | 角色名称需同时满足以下条件: - 由小写字母、连字符(-)、数字组成。
- 以字母开头,以字母或数字结尾。
- 长度为 2~63 个字符。
|
ACL 规则 | 设置角色的 ACL 规则。输入 ACL 规则后,使用空格键或 Enter 键即可生成规则。支持一次输入多条规则。
关于 ACL 规则的具体说明,请参见 ACL 语法规则。 |
- 单击确定。
后续操作
角色创建成功后,您可以在创建账号时,根据业务需要为账号选择合适的角色,实现数据库的精细化管理,提升数据安全性。更多详情,请参见创建与管理账号。