前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis权限管理体系(三): ACL 配置持久化

Redis权限管理体系(三): ACL 配置持久化

作者头像
July
发布2023-12-19 15:15:45
2370
发布2023-12-19 15:15:45
举报
文章被收录于专栏:数据库干货铺数据库干货铺

但因默认配置中ACL的配置未持久化,因此Redis重启后对应的用户(default用户除外)将丢失,因此建议开启ACL配置的持久化。而ACL的持久化有两种方式,以下分别演示。

1. 配置前准备工作

重启Redis服务

代码语言:javascript
复制
127.0.0.1:6479> shutdown
not connected>

再次启动Redis并登录,查看default用户权限

代码语言:javascript
复制
127.0.0.1:6479> ACL LIST
1) "user default on #515c217eb413b6aaf09de74bf42c85a6edc09ee7008c6ebedc2981b44bbc0fd3 ~* &* +@all"
127.0.0.1:6479>

2. 在服务层配置文件中配置ACL

2.1 关闭Redis服务

代码语言:javascript
复制
127.0.0.1:6479> shutdown
not connected>

2.2 在配置文件中添加default用户的配置

登录Redis查看

代码语言:javascript
复制
127.0.0.1:6479> ACL LIST
1) "user default on #515c217eb413b6aaf09de74bf42c85a6edc09ee7008c6ebedc2981b44bbc0fd3 ~* &* +@all"

2.3 添加新用户

代码语言:javascript
复制
1) "user default on #515c217eb413b6aaf09de74bf42c85a6edc09ee7008c6ebedc2981b44bbc0fd3 ~* &* +@all"
127.0.0.1:6479> ACL SETUSER user1 on >pwd_test1 allkeys +@all 
OK
127.0.0.1:6479> ACL LIST
1) "user default on #515c217eb413b6aaf09de74bf42c85a6edc09ee7008c6ebedc2981b44bbc0fd3 ~* &* +@all"
2) "user user1 on #d9e1f1341d0208467c6c88f61420284e15337d4a0be94b964d62d4b00a9e77d6 ~* &* +@all"

此时如果想保存配置,不能使用ACL SAVE命令处理

代码语言:javascript
复制
(error) ERR This Redis instance is not configured to use an ACL file. You may want to specify users via the ACL SETUSER command and then issue a CONFIG REWRITE (assuming you have a Redis configuration file set) in order to store users in the Redis configuration.

需要手动将用户信息添加在配置文件中

也不能直接从Redis配置文件中加载配置

代码语言:javascript
复制
127.0.0.1:6479> ACL LOAD
(error) ERR This Redis instance is not configured to use an ACL file. You may want to specify users via the ACL SETUSER command and then issue a CONFIG REWRITE (assuming you have a Redis configuration file set) in order to store users in the Redis configuration.

不过可以使用config rewrite保存到配置文件

代码语言:javascript
复制
127.0.0.1:6479> ACL SETUSER user2 on >pwd_test1 allkeys +@all
OK
127.0.0.1:6479> CONFIG REWRITE

3. 配置单独的ACL文件

3.1 修改配置

为了方便管理,建议单独使用ACL配置文件来管理用户信息。另外,不可以同时使用服务端配置文件与单独的配置文件共存的方式来配置,否则启动时会报错。

代码语言:javascript
复制
 # Configuring Redis with users defined in redis.conf and at the same setting an ACL file path is invalid. This setup is very likely to lead to configuration errors and security holes, please define either an ACL file or declare users directly in your redis.conf, but not both.

因此,需要注释掉原先的方式,只添加aclfile的配置

并且在users.acl中将之前的用户信息复制进去

再次启动Redis服务。

登录后再次查看,相关用户已存在

代码语言:javascript
复制
127.0.0.1:6479> ACL LIST
1) "user default on sanitize-payload #515c217eb413b6aaf09de74bf42c85a6edc09ee7008c6ebedc2981b44bbc0fd3 ~* &* +@all"
2) "user user1 on #d9e1f1341d0208467c6c88f61420284e15337d4a0be94b964d62d4b00a9e77d6 ~* &* +@all"
3) "user user2 on #d9e1f1341d0208467c6c88f61420284e15337d4a0be94b964d62d4b00a9e77d6 ~* &* +@all"
127.0.0.1:6479>

3.2 创建新用户

代码语言:javascript
复制
127.0.0.1:6479> ACL SETUSER u1 on >pwd_u1 allkeys +@write +@read 
OK
127.0.0.1:6479> ACL LIST
1) "user default on sanitize-payload #515c217eb413b6aaf09de74bf42c85a6edc09ee7008c6ebedc2981b44bbc0fd3 ~* &* +@all"
2) "user u1 on #21a1bbcd2c36cb07cd8779b3cba6ab183ecfd8b2a86e11f6dc1f674b90634544 ~* &* -@all +@write +@read"
3) "user user1 on #d9e1f1341d0208467c6c88f61420284e15337d4a0be94b964d62d4b00a9e77d6 ~* &* +@all"
4) "user user2 on #d9e1f1341d0208467c6c88f61420284e15337d4a0be94b964d62d4b00a9e77d6 ~* &* +@all"

保存配置

代码语言:javascript
复制
127.0.0.1:6479> ACL SAVE
OK

3.3 直接在配置文件中添加用户

可以直接在用户配置配件中添加用户信息,再通过加载的方式加载用户

再次登录Redis中通过ACL LOAD加载配置后查看

代码语言:javascript
复制
127.0.0.1:6479> ACL LOAD
OK
127.0.0.1:6479> ACL LIST
1) "user default on sanitize-payload #515c217eb413b6aaf09de74bf42c85a6edc09ee7008c6ebedc2981b44bbc0fd3 ~* &* +@all"
2) "user u1 on #21a1bbcd2c36cb07cd8779b3cba6ab183ecfd8b2a86e11f6dc1f674b90634544 ~* &* -@all +@write +@read"
3) "user u2 on #21a1bbcd2c36cb07cd8779b3cba6ab183ecfd8b2a86e11f6dc1f674b90634544 ~* &* -@all +@write +@read"
4) "user user1 on #d9e1f1341d0208467c6c88f61420284e15337d4a0be94b964d62d4b00a9e77d6 ~* &* +@all"
5) "user user2 on #d9e1f1341d0208467c6c88f61420284e15337d4a0be94b964d62d4b00a9e77d6 ~* &* +@all"

这样每次用户操作后使用ACL SAVE保存操作,使用ACL LOAD加载配置即可。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据库干货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档