如何停止对 redis 数据库的匿名访问
How to stop anonymous access to redis databases
我用 运行 redis 镜像 docker-compose
我通过了 redis.conf(redis 说“配置已加载”)
在 redis.conf 我添加了用户
user pytest ><password> ~pytest/* on @set @get
然而我可以匿名与redis通信
即使有未注释的字符串
requirepass <password>
关于主题的 Redis 文档:Security and ACL 不回答如何限制所有人的访问。可能我根本不明白一些东西。
我的docker-compose.yaml:
version: '3'
services:
redis:
image: redis:latest
ports:
- 6379:6379
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 6000s
timeout: 30s
retries: 50
restart: always
volumes:
- redis-db:/data
- redis.conf:/usr/local/etc/redis/redis.conf
command: ["redis-server", "/usr/local/etc/redis/redis.conf" ]
volumes:
redis-db:
redis.conf:
And yet I can communicate with redis as anonymous even with uncommented string
因为有一个 默认 用户,而您没有禁用它。如果您想完全禁用匿名访问,您应该将以下内容添加到您的 redis.conf:
user default off
其次,用户'pytest'的配置不正确。如果你想只允许用户 'pytest' 在给定的键模式上有 set
和 get
命令,你应该按如下方式配置它:
user pytest ><password> ~pytest/* on +set +get
您还需要确保 docker-compose 正在使用您的配置文件。
假设您的 redis.conf
与 docker-compose.yml
在同一目录中,服务声明中的 'volumes' 部分将是。
- ./redis.conf:/usr/local/etc/redis/redis.conf
并且删除底部的命名卷声明
redis.conf:
如果您启用
,用户将能够连接到 Redis 但没有 AUTH 他们将无法执行任何操作
requirepass <password>
限制对键 pytest/* 的 GET, SET 操作的正确方法是
user pytest ><password> ~pytest/* on +set +get
我用 运行 redis 镜像 docker-compose
我通过了 redis.conf(redis 说“配置已加载”)
在 redis.conf 我添加了用户
user pytest ><password> ~pytest/* on @set @get
然而我可以匿名与redis通信 即使有未注释的字符串
requirepass <password>
关于主题的 Redis 文档:Security and ACL 不回答如何限制所有人的访问。可能我根本不明白一些东西。
我的docker-compose.yaml:
version: '3'
services:
redis:
image: redis:latest
ports:
- 6379:6379
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 6000s
timeout: 30s
retries: 50
restart: always
volumes:
- redis-db:/data
- redis.conf:/usr/local/etc/redis/redis.conf
command: ["redis-server", "/usr/local/etc/redis/redis.conf" ]
volumes:
redis-db:
redis.conf:
And yet I can communicate with redis as anonymous even with uncommented string
因为有一个 默认 用户,而您没有禁用它。如果您想完全禁用匿名访问,您应该将以下内容添加到您的 redis.conf:
user default off
其次,用户'pytest'的配置不正确。如果你想只允许用户 'pytest' 在给定的键模式上有 set
和 get
命令,你应该按如下方式配置它:
user pytest ><password> ~pytest/* on +set +get
您还需要确保 docker-compose 正在使用您的配置文件。
假设您的 redis.conf
与 docker-compose.yml
在同一目录中,服务声明中的 'volumes' 部分将是。
- ./redis.conf:/usr/local/etc/redis/redis.conf
并且删除底部的命名卷声明
redis.conf:
如果您启用
,用户将能够连接到 Redis 但没有 AUTH 他们将无法执行任何操作requirepass <password>
限制对键 pytest/* 的 GET, SET 操作的正确方法是
user pytest ><password> ~pytest/* on +set +get