使用不同密码的不同Redis数据库



在Redis中有一个身份验证功能,也可以使用不同的数据库,但这些功能可以安全地组合在一起吗?

从MySQL我知道有一个用户管理,多个用户可以有多个密码,并且只能对一个数据库拥有权限。

出于安全考虑,我希望Redis中也有类似的功能,因为目前我可以使用requirepass,但我必须将其添加到每个应用程序中,这些应用程序无论如何都想连接到Redis。(至少有一种方法可以为requirepass使用多个密码吗?
我可以用一个应用程序连接到一个数据库,但AFAIK这个应用程序也可以切换到另一个数据库。(我至少可以以某种方式阻止这种切换吗?)

出于性能原因,我希望避免并行运行redis的多个实例。

我将从最后开始:

出于性能原因,我希望避免并行运行redis的多个实例。

事实恰恰相反——由于Redis(主要)是单线程的,因此并行运行多个实例正是提高服务器利用率和性能的方法。

Redis数据库(也称为共享数据库或编号数据库)的概念与SQL域的概念不同。Redis的数据库更像是命名空间,除了共享同一个线程外,它们还共享所有配置——包括身份验证密码。

所以答案是否定的,你不能为每个数据库设置不同的密码。有关您为什么更喜欢专用Redis数据库的更多详细信息,请参阅:https://redislabs.com/blog/benchmark-shared-vs-dedicated-redis-instances

没有,但redis非常轻量级,您只需在不同的端口上启动不同的实例。你说过"出于性能原因"不想这样做,但这是没有意义的——一个空的redis几乎不占用内存,也几乎不占用cpu。

从redis 6.0我们可以在ACL 的帮助下实现这一点

ACL SETUSER user1 on >password +@all ~* -select +select|1
  • 请注意,此处用户只能访问数据库-1
  • -select限制用户切换数据库

此外,您可以使用相同的命令进行更严格的限制,例如允许使用某些前缀等。

ACL SETUSER user1 on >password ~prefix.:* +@all

最新更新