【redis】redis ACL 访问控制

2023-05-08  本文已影响0人  Bogon

redis最初的认证设计为什么没有用户名,只有密码?

Redis的认证设计中没有用户名,只有密码,主要是为了简化认证过程,提高性能。
在Redis中,所有的连接都是通过TCP/IP建立的,每个连接都有一个唯一的IP地址,因此Redis可以根据IP地址来识别连接。
因此,如果Redis需要认证连接,只需要验证连接所使用的密码即可,不需要再考虑用户名的问题。
这种设计可以减少认证过程中的数据传输量,提高认证效率。
同时,由于Redis的使用场景主要是内部网络,因此对于外部网络的攻击威胁较小,不需要过多的安全措施。

Redis6.0有了ACL功能,可以做访问控制了

Redis 6.0引入了ACL(Access Control List)访问控制功能,ACL可以对Redis的各种操作进行细粒度的权限控制,以保护Redis的数据安全。

ACL访问控制功能的主要特点如下:

  1. 细粒度的权限控制:ACL可以对Redis的各种操作进行细粒度的权限控制,例如读写数据、创建和删除键等操作,可以通过ACL来限制用户对这些操作的访问权限。

  2. 多用户支持:Redis支持多个用户,每个用户可以拥有不同的权限,可以通过ACL来为每个用户分配不同的权限,以保护Redis的数据安全。

  3. 内置用户和角色:Redis ACL内置了一些用户和角色,例如默认用户default、管理员用户admin、读写用户readwrite等,用户可以根据自己的需求创建新用户和角色。

  4. 灵活的配置方式:Redis ACL的配置方式非常灵活,可以通过命令行或者配置文件的方式进行配置,可以根据不同的需求来灵活地配置ACL。

  5. 支持LDAP和SSL/TLS:Redis ACL支持LDAP和SSL/TLS协议,可以通过这些协议来实现更加安全的访问控制。

总之,Redis ACL访问控制功能可以为Redis提供更加细粒度的权限控制,以保护Redis的数据安全。

image.png image.png

Redis6 终于支撑多线程了,告别单线程了吗?

IO 多线程其实指客户端交互部分的网络 IO 交互处理模块多线程,而非多线程执行命令,Redis6 执行命令依然是单线程

Redis 6 加入多线程,但跟 Memcached 这种从 IO 处理到数据访问多线程的实现模式有些差异

Redis 的多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程。
之所以这么设计是不想因为多线程而变得复杂,需要去控制 key、lua、事务, LPUSH/LPOP 等等的并发问题

整体的设计大体如下:

image.png

另外,多线程网络IO 默认也是不开启的,需要再配置文件redis-6379.conf中配置:

io-threads-do-reads yes
io-threads 4

参考

ACL Redis Access Control List
https://redis.io/docs/management/config

Redis6使用指导(完整版)
https://www.cnblogs.com/mrwhite2020/p/14727548.html

Redis6.0 新功能
https://blog.csdn.net/qq_42500831/article/details/125553147

redis6 ACL(Access Control List)访问控制权限
https://www.cnblogs.com/NGames/p/15961193.html

Redis6新特性之ACL安全策略(用户权限管理)
https://blog.csdn.net/wsdc0521/article/details/106765856

Redis 6.0权限控制命令ACLs详解
https://www.cnblogs.com/7920284109q/p/15040695.html

上一篇下一篇

猜你喜欢

热点阅读