ACL安全策略介绍
Redis ACL 是访问控制列表的缩写,它允许在可执行的命令和可访问的密钥方面限制某些连接。它的工作方式是,连接后,客户端需要提供用户名和密码进行身份验证。如果身份验证成功,则连接将与给定用户以及该用户具有的限制相关联。可以配置 Redis,以便已使用“默认”用户对新连接进行身份验证(这是默认配置)。作为副作用,配置默认用户只能为未显式进行身份验证的连接提供特定的功能子集。
ACL命令
实战操作 acl setuser a1 —新建用户 不带密码 2.新建用户 带密码 acl list —列出所有用户
user 代表是用户 default 代表默认用户(反之 为自己创建的用户) on 代表激活(反之off,默认新增的为off) nopass 代表不需要密码 ~* 代表可以访问的key +@all 代表可以操作的command
Key的说明 acl getuser lz --得到一个用户的详细信息
给用户赋权限 acl setuser lz allkeys +@all —给lz用户授予所有权限 注意:-@all表示没有任何权限;+@all表示有所有权限
允许和禁止调用命令 +<command> :将命令添加到用户可以调用的命令列表中。 -<command> :将命令从用户可以调用的命令列表中移除。 +@<category> :允许用户调用 类别中的所有命令,有效类别为@admin,@set,@sortedset等,可通过调用ACL CAT命令查看完整列表。特殊类别@all表示所有命令,包括当前和未来版本中存在的所有命令。 -@<category> :禁止用户调用 类别中的所有命令。 +<command>|subcommand :允许使用已禁用命令的特定子命令。 allcommands :+@all的别名。包括当前存在的命令以及将来通过模块加载的所有命令。 nocommands :-@all的别名,禁止调用所有命令。 允许或禁止访问某些Key <pattern>:添加可以在命令中提及的键模式。例如和 allkeys 允许所有键。 * resetkeys :使用当前模式覆盖所有允许的模式。如: ~foo:* ~bar:* resetkeys ~objects:* ,客户端只能访问匹配 object:* 模式的 KEY。 为用户配置有效密码 ><password> :将此密码添加到用户的有效密码列表中。例如,>mypass将“mypass”添加到有效密码列表中。该命令会清除用户的nopass标记。每个用户可以有任意数量的有效密码。 <<password> :从有效密码列表中删除此密码。若该用户的有效密码列表中没有此密码则会返回错误信息。 #<hash> :将此SHA-256哈希值添加到用户的有效密码列表中。该哈希值将与为ACL用户输入的密码的哈希值进行比较。允许用户将哈希存储在users.acl文件中,而不是存储明文密码。仅接受SHA-256哈希值,因为密码哈希必须为64个字符且小写的十六进制字符。 !<hash> :从有效密码列表中删除该哈希值。当不知道哈希值对应的明文是什么时很有用。 nopass :移除该用户已设置的所有密码,并将该用户标记为nopass无密码状态:任何密码都可以登录。 resetpass 命令可以清除nopass这种状态。 resetpass :情况该用户的所有密码列表。而且移除nopass状态。resetpass之后用户没有关联的密码同时也无法使用无密码登录,因此resetpass之后必须添加密码或改为nopass状态才能正常登录。 reset :重置用户状态为初始状态。执行以下操作resetpass,resetkeys,off,-@all。 原文链接:https://blog.csdn.net/wsdc0521/article/details/106765856
|