Redis 是否使用用户名进行身份验证?

问题描述 投票:0回答:3

我已经在我的环境中设置了Redis,并且只看到了通过密码授权的部分。有没有办法也设置用户名?还是只能通过密码验证?

database redis
3个回答
19
投票

Redis 6 上有 ACL。这些都有一个用户名。查看 https://redis.io/topics/acl

要使用用户名进行访问,请在 redis.conf 文件中添加以下内容:

user bert allcommands allkeys on >abc123
requirepass foobar

“user”命令添加用户,而 requirepass 命令只是为用户“default”设置密码。

展示它在 redis-cli 中的样子:

Redis# redis-cli -a foobar
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> ACL LIST
1) "user bert on #6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090 ~* &* +@all"
2) "user default on #c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2 ~* &* +@all"

然后从 redis-cli 以用户“bert”登录:

redis-cli --user bert --pass abc123

目前从文档中尚不清楚如何使用 NodeJS 这样的程序来执行此操作。


10
投票

Redis只能通过密码进行验证。

请记住,密码(与其他所有内容一样)是通过网络发送的,未加密,因此任何可以监听网络流量的人都很容易窃听,因此使用密码不足以保护暴露在网络上的 Redis网络:

身份验证层的目标是选择性地提供冗余层。如果为保护 Redis 免受外部攻击而实施的防火墙或任何其他系统失败,外部客户端在不知道身份验证密码的情况下仍然无法访问 Redis 实例。

要通过网络安全使用 Redis,您可以使用网络级隧道或 SSL/TLS,请参阅:


0
投票

如果您来到这里的redis默认用户名是

default

如果你像这样通过docker启动了Redis

redis-server --requirepass secretPassword! --protected-mode yes
,那么Python celery中的redis URL等 应该是
redis://default:secretPassword!@localhost/0

© www.soinside.com 2019 - 2024. All rights reserved.