RedisStack中为ACL用户配置RedisJSON模块命令权限的问题
RedisStack中为ACL用户配置RedisJSON模块命令权限的问题
嗨,我来帮你搞定这个权限问题~
你遇到的问题本质是:Redis默认的@read、@write这些命令分组只包含Redis核心原生命令,像RedisJSON这类扩展模块提供的json.set、json.get等命令并不在这些分组里,所以即使你给了+@read和+@write,用户依然没有执行JSON模块命令的权限。
这里有两种针对性的解决方案,你可以根据需求选择:
方案一:单独授予特定JSON命令权限
如果你只需要让用户执行某几个JSON命令,可以直接把这些命令添加到ACL规则里。比如你需要json.set和json.get,修改后的ACL规则如下:
user username on -@all +@read +@write +@connection ~prefix:* >somepassword +json.set +json.get
方案二:授予整个RedisJSON模块的命令权限
如果要让用户使用RedisJSON的所有命令,更高效的方式是直接授予RedisJSON的模块命令分组权限。Redis模块的命令分组命名规则是@<模块名>,RedisJSON对应的分组是@json,修改后的规则如下:
user username on -@all +@read +@write +@connection ~prefix:* >somepassword +@json
修改完ACL规则后,你可以切换到该用户,执行json.set prefix:test $ '{"foo":"bar"}'这类命令测试一下,应该就能正常执行了~
备注:内容来源于stack exchange,提问作者Raouf Ben Hassine
相关产品推荐
相关产品推荐

