| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Redis——安全配置和权限控制 -> 正文阅读 |
|
[大数据]Redis——安全配置和权限控制 |
redis的安全配置相关内容在redis.conf的 SECURITY 项里; redis6.0版本之前的 SECURITY 里大概只有设置一个密码和命令重命名的配置,redis6.0之后的SECURITY里出现了一个叫ACL的东西(Access Control List),用来代替之前的安全设置,并提供更加细化的权限控制;之前的requirepass配置只能为一个默认用户设置一个密码,并且无法做到详细的权限设置,也无法为多个用户进行不同的配置; redis6.0之后新增了ACL设置,为了兼容性也保留了requirepass设置,但是requirepass命令相当于ACL里为一个叫“default”的默认用户设置密码(类似语法糖),另外AUTH认证命令也做了调整,增加了用户名语法:AUTH <username> <password>,同时也保留了旧的语法:AUTH <password>,旧语法相当于使用“default”用户进行认证; ACL可以做到很细粒度的权限控制,可以为多个用户设置不同的权限,可以为一个用户设置多个密码,可以对命令、通道、key设置权限; redis.conf里的 SECURITY 项的配置:(redis版本v7.0.2)
配置acl的方式:
配置acl的语法:user <username> ... acl rules ... 第一个单词user固定,第二个单词为自定义的用户名,后面为配置的具体的各种acl规则;acl规则的顺序为从左到右依次设置,即后面的规则可以改写和覆盖前面的设置(具有包含关系的规则(+@all和-get)或者同一规则(+get和-get)),所以设置acl规则的顺序很重要,但对于不同类别的没有任何关联的规则没有顺序要求,例如:on >pass +get +set ~aaaa ~bbbb &CH1没有包含关系的规则顺序可以随便写; 默认的“default”用户的默认规则是:user default on nopass ~* &* +@all,默认的default用户是不需要密码的,直接就可以连接redis,并可以访问所有命令所有键和通道;所以设置acl的时候不要忘了default用户设置,虽然默认protected-mode是yes,对于无密码用户只能127.0.0.1本地访问;(另外设置了requirepass同时使用acl设置了“default”用户时,requirepass会失效,需要在acl里重新设置密码) acl规则:开启和禁用用户
允许和禁用命令
允许和禁用键和键权限
允许和禁用订阅发布通道
为用户配置有效密码
为用户配置选择器
重置用户
命令类别category:(目前有21种,可通过ACL?CAT命令查询)
注意:同一个命令有可能属于多个不同的类别,多个类别可以相互组合取交集或者差集;有些添加数据的命令在写入数据后还可能涉及读取并返回结果,需要读写权限; 如果使用外部的acl文件,可以修改acl文件后使用ACL?LOAD命令重新加载acl文件配置(新配置需要正确无误,否则报错并依旧保持旧配置),也可以使用ACL?SAVE命令将当前redis里的配置保存到acl文件中; 如果使用redis.conf配置acl,可以使用CONFIG?REWRITE命令将当前redis里的配置保存到conf文件中;(CONFIG?REWRITE不会触发ACL?SAVE) 对于给哨兵使用的用户,需要配置允许在master和replica实例中执行以下命令:AUTH, CLIENT, SUBSCRIBE, SCRIPT, PUBLISH, PING, INFO, MULTI, SLAVEOF, CONFIG, CLIENT, EXEC,哨兵不需要访问任何键,但使用了发布订阅机制,哨兵也不需要AUTH认证,总是被允许访问,哨兵的acl规则如下: ACL SETUSER sentinel-user on >somepassword allchannels +multi +slaveof +ping +exec +subscribe +config|rewrite +role +publish +info +client|setname +client|kill +script|kill 对于副本,需要允许在master上执行以下命令:PSYNC, REPLCONF, PING,副本也不需要访问任何键,规则如下: ACL setuser replica-user on >somepassword +psync +replconf +ping 注意,不需要配置副本允许master执行任何命令,从副本角度看,master总是使用root用户进行认证; ACL命令:可以使用ACL?HELP命令查看帮助信息; 语法:ACL <subcommand> [<arg> [value] [opt] ...] ACL子命令:
小实验: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 17:12:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |