Search code examples
redisaclpublish-subscribeaccess-control

How do I restrict access to certain topics in redis pubsub with acl?


I want some clients to be unable to subscribe to some topics in Redis pubsub. Is this possible with redis acl?


Solution

  • Yes, this is how you can use ACL to limit a client only to the "foo" topic:

    $ redis-cli
    127.0.0.1:6379> ACL SETUSER limitedpubsub on nopass -@all +subscribe|foo
    OK
    127.0.0.1:6379> AUTH limitedpubsub ""
    OK
    127.0.0.1:6379> SUBSCRIBE bar
    Reading messages... (press Ctrl-C to quit)
    (error) NOPERM this user has no permissions to run the 'subscribe' command or its subcommand
    ^C
    $ redis-cli
    127.0.0.1:6379> AUTH limitedpubsub ""
    OK
    127.0.0.1:6379> SUBSCRIBE foo
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "foo"
    3) (integer) 1