实现用redis用户启动redis、深入了解下redis的acl

使用redis用户登录redis服务

进入redis-6.0.8目录

加入redis用户,给redis-6.0.8目录赋权限

 看进程,root用户还在登录服务,把进程杀掉

实现用redis用户启动redis、深入了解下redis的acl_第1张图片

 进入src目录,开启服务

 查看进程,使用redis用户登录服务

实现用redis用户启动redis、深入了解下redis的acl_第2张图片

redis的acl

配置ACL的方式有两种,一种是在config文件中直接配置,另一种是在外部aclfile中配置。配置的命令是一样的,但是两种方式只能选择其中一种

介绍

在Redis6之前的版本,我们只能使用requirepass参数给default用户配置登录密码,同一个redis集群的所有开发都共享default用户,难免会出现误操作把别人的key删掉或者数据泄露的情况,那之前我们也可以使用rename command的方式给一些危险函数重命名或禁用,但是这样也防止不了自己的key被其他人访问。

因此Redis6版本推出了ACL(Access Control List)访问控制权限的功能,基于此功能,我们可以设置多个用户,并且给每个用户单独设置命令权限和数据权限。 为了保证向下兼容,Redis6保留了default用户和使用requirepass的方式给default用户设置密码,默认情况下default用户拥有Redis最大权限,我们使用redis-cli连接时如果没有指定用户名,用户也是默认default。

 Acl的大致使用方法

实现用redis用户启动redis、深入了解下redis的acl_第3张图片

查看完整的用户权限的格式

acl list

1) "user default on nopass ~* +@all"

默认情况下default用户拥有Redis最大权限

Acl规则

ACL是使用DSL(Domain specific language)定义的,该DSL描述了用户能够执行的操作。该规则始终从上到下,从左到右应用,因为规则的顺序对于理解用户的实际权限很重要。

启用和禁用用户

on:启用用户:可以以该用户身份进行认证。

off:禁用用户:不再可以使用此用户进行身份验证,但是已经通过身份验证的连接仍然可以使用。

允许和禁止调用命令

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

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

+@:允许用户调用 类别中的所有命令,有效类别为@admin,@set,@sortedset等,可通过调用ACL CAT命令查看完整列表。特殊类别@all表示所有命令,包括当前和未来版本中存在的所有命令。

-@:禁止用户调用 类别中的所有命令。

+|subcommand:允许使用已禁用命令的特定子命令。

allcommands:+@all的别名。包括当前存在的命令以及将来通过模块加载的所有命令。

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

允许或禁止访问某些Key

 ~:添加可以在命令中提及的键模式。例如~*和* allkeys 允许所有键。

* resetkeys:使用当前模式覆盖所有允许的模式。如: ~foo:* ~bar:*  resetkeys ~objects:* ,客户端只能访问匹配 object:* 模式的 KEY。

 

你可能感兴趣的:(redis,数据库,java)