缓存数据库 Redis 版支持自定义角色权限,您可以根据业务需要,创建新的角色并赋予不同的权限,实现数据库的精细化管理,提升数据安全性。本文介绍如何创建角色。
注意事项
缓存数据库 Redis 版支持通过 disabled-commands
参数来设置禁用命令,且默认情况下禁用了 keys
、flushdb
和 flushall
命令,因此如果您的账号角色不包含上述这些禁用命令的权限,即使 disabled-commands
参数中移除了上述命令,也无法执行。关于禁用命令的更多说明,请参见禁用命令说明。
ACL 语法
缓存数据库 Redis 版将所有支持的命令根据一定的规则进行了分组,每个分组即为一个命令类(Command Category),您可以使用 ACL(Access Control Lists)语法为角色授予指定命令或命令类的调用权限。
说明
- 缓存数据库 Redis 版支持的命令类以及每种命令类下包含的具体命令详情,请参见 Redis 控制台创建角色对话框内的详细说明。
语法规则
缓存数据库 Redis 版的 ACL 语法规则如下:
每条 ACL 规则都必须以 +
或 -
开头,+
或 -
后可以加上指定的命令或命令类,其中:
+
:表示允许调用某些命令或命令类。例如 +@all
表示允许调用所有命令。-
:表示禁止调用某些命令或命令类。例如 -@dangerous
表示禁止调用 dangerous
命令类中的所有命令。
命令类前面必须使用 @
表示,便于和具体的命令作区分。例如:
- 指定命令类: 例如
+@read
表示允许调用 read
命令类中的所有命令。 - 指定具体命令:例如
-get
表示仅禁止调用 get
命令。
命令和命令类都必须使用小写字母,长度为 1~20 个字符。
缓存数据库 Redis 版默认为所有角色的 ACL 规则自动添加 ~*
语法,表示可以访问所有 KEY。
不支持使用 ~<key>
语法来访问指定 KEY。
语法示例
缓存数据库 Redis 版默认提供了 Administrator、NotDangerous、ReadWrite 和 ReadOnly 四种角色,每种角色的 ACL 规则不同,支持的权限也不同。下表以默认的四种角色为例介绍角色的 ACL 规则设置方法。
默认角色名称 | ACL 规则 | 当前角色包含或除外的具体命令 |
---|
Administrator | +@all ~* | 选择了 Administrator 角色的账号,允许对所有 KEY 使用缓存数据库 Redis 版已支持的所有命令。具体详情,请参见命令支持。 |
默认角色名称 | ACL 规则 | 当前角色包含或除外的具体命令 |
---|
NotDangerous | +@all -@dangerous ~*
| 选择了 NotDangerous 角色的账号,允许对所有 KEY 使用除 dangerous 类之外的所有命令。
其中 dangerous 类命令包括如下具体命令: - Cluster Management
CLUSTER COUNTKEYSINSLOT、CLUSTER GETKEYSINSLOT、CLUSTER INFO、CLUSTER KEYSLOT、CLUSTER NODES、CLUSTER SETSLOT - Connection Management
CLIENT CACHING、CLIENT GETNAME、CLIENT GETREDIR、CLIENT ID、CLIENT KILL、CLIENT LIST、CLIENT SETNAME - Generic
KEYS、RESTORE、SORT - Server Management
CONFIG HELP、CONFIG GET、CONFIG RESETSTAT、CONFIG SET、FLUSHALL、FLUSHDB、MONITOR、ROLE
|
默认角色名称 | ACL 规则 | 当前角色包含或除外的具体命令 |
---|
ReadWrite | +@all -@admin ~*
| 选择了 ReadWrite 角色的账号,允许对所有 KEY 使用除 admin 类之外的所有命令。
其中 admin 类命令包括如下具体命令: - Cluster Management
CLUSTER COUNTKEYSINSLOT、CLUSTER GETKEYSINSLOT、CLUSTER INFO、CLUSTER KEYSLOT、CLUSTER NODES、CLUSTER SETSLOT - Connection Management
CLIENT CACHING、CLIENT GETNAME、CLIENT GETREDIR、CLIENT ID、CLIENT KILL、CLIENT LIST、CLIENT SETNAME - Server Managment
CONFIG HELP、CONFIG GET、CONFIG RESETSTAT、CONFIG SET、MONITOR
|
默认角色名称 | ACL 规则 | 当前角色包含或除外的具体命令 |
---|
ReadOnly | +@read ~*
| 选择了 ReadOnly 角色的账号,允许对所有 KEY 使用 read 类中的所有命令。
其中 read 类命令包括如下具体命令: - Bitmap
BITCOUNT、BITPOS、GETBIT - Connection Management
ECHO - Generic
DUMP、EXISTS、KEYS、OBJECT、PTTL、RANDOMKEY、SCAN、TOUCH、TTL、TYPE - Geospatial Indices
GEODIST、GEOHASH、GEOPOS - Hash
HEXISTS、HGET、HGETALL、HKEY、HLEN、HMGET、HSCAN、HSTRLEN、HVALS - HyperLogLog
PFCOUNT - List
LINDEX、LLEN、LPOS、LRANGE - Server Management
DBSIZE、INFO、LOLWUT、MEMORY DOCTOR、MEMORY HELP、MEMORY MALLOC-STATS、MEMORY PURGE、MEMORY STATS、MEMORY USAGE、ROLE、TIME - Set
SCARD、SDIFF、SINTER、SINTERCARD、SISMEMBER、SMEMBERS、SMISMEMBER、SRANDMEMBER、SSCAN、SUNION - Sorted Set
ZCARD、ZLEXCOUNT、ZRANGE、ZRANGEBYLEX、ZRANGEBYSCORE、ZRANK、ZREVRANGE、ZREVRANGEBYLEX、ZREVRANGEBYSCORE、ZREVRANK、ZSCAN、ZSCORE - Stream
XINFO、XLEN、XPENDING、XRANGE、XREAD、XREVRANGE - String
GET、GETRANGE、MGET、STRALGO、STRLEN
|
操作步骤
登录 Redis 控制台。
在顶部菜单栏的左上角,选择实例所属的项目和地域。
在实例列表页,单击目标实例的名称。
在实例详情页,单击账号管理页签。
在账号管理页签下,再单击角色页签。
在角色页签下,单击创建角色,在弹出的对话框中,配置如下参数。
参数 | 说明 |
---|
角色名称 | 角色名称需同时满足以下条件: - 由小写字母、连字符(-)、数字组成。
- 以字母开头,以字母或数字结尾。
- 长度为 2~63 个字符。
|
ACL 规则 | 设置角色的 ACL 规则。输入 ACL 规则后,使用空格键或 Enter 键即可生成规则。支持一次输入多条规则。
关于 ACL 规则的具体说明,请参见 ACL 语法规则。 |
单击确定。
后续操作
角色创建成功后,您可以在创建账号时,根据业务需要为账号选择合适的角色,实现数据库的精细化管理,提升数据安全性。更多详情,请参见创建与管理账号。