Gerenciamento de Acessos no Redis com Controle de Usuários e Permissões por Chaves
O Redis é amplamente utilizado para caching, filas e armazenamento de dados em memória de alta performance. Em muitos cenários, é comum que múltiplas aplicações ou usuários compartilhem o mesmo cluster Redis, mas nem todos devem ter o mesmo nível de acesso aos dados. Para isso, o Redis permite a criação de usuários e políticas de controle de acesso (ACLs), possibilitando que apenas determinados usuários tenham permissão para acessar certos caches, sendo possível definir a politica de acesso com base em nos nomes de chave.
Neste post, vamos abordar como configurar usuários no Redis e como restringir o acesso a caches específicos utilizando esses usuários.
1. Configuração Básica de Usuários no Redis
A partir do Redis 6, foi adicionado o recurso de ACL (Access Control List), que permite a criação de múltiplos usuários com permissões e acessos específicos. Antes dessa versão, não era possível criar vários usuários, pois havia apenas um usuário definido de forma global, com um único conjunto de permissões ajustado no arquivo redis.conf, e a senha era configurada no campo requirepass.
Para configurar um novo usuário, pode ser editado o arquivo de configuração do Redis (redis.conf) ou utilizar os comandos ACL diretamente no CLI do Redis.
Exemplo de criação de um usuário:
ACL SETUSER usuario ON >password123 ~* +@read +@write
Basicamente, esse comando cria o usuário:
>password123define a senha.~*especifica que o usuário pode acessar todas as chaves.+@readconcede permissão de leitura.+@writeconcede permissão de escrita.
2. Restringindo o acesso baseado no nome das chaves
O redis nos permite o uso de alguns padrões (prefixos) para restringir o acesso a certas chaves ou até mesmo limitando o usuário a criar chaves padronizadas. Isso pode ser feito através do caractere ~ seguido do padrão desejado.
Por exemplo, suponha que temos 3 usuários: 1 administrador e 2 específicos para sistemas, como usuario-rh e usuario-prod, divididos da seguinte maneira:
- O usuário
adminpode acessar todos os caches, pois é o administrador do ambiente. - O
usuario-rhsó poderá criar e usar caches que comecem com “sistema-rh”. - O
usuario-prodsó poderá criar e usar caches que comecem com “sistema-prod”.
Podemos configurar usuários específicos da seguinte forma:
- Usuário Admin:
ACL SETUSER admin ON >admin123 ~* +@all
- O usuário
admintem acesso a todas as operações, com o comando+@all, em todos os caches do ambiente.
- Usuário
usuario-rh:
ACL SETUSER usuario-rh ON >password123 ~sistema-rh* +@read +@write
- O usuário
usuario-rhtem permissões de leitura e escrita em todas as chaves que começam com “sistema-rh”.
- Usuário
usuario-prod:
ACL SETUSER usuario-prod ON >password123 ~sistema-prod* +@read +@write
- O usuário
usuario-prodtem permissões de leitura e escrita em todas as chaves que começam com “sistema-prod”.
Com essa configuração, garantimos que cada usuário tenha acesso somente aos caches que lhe dizem respeito, aumentando a segurança e a organização dos dados dentro do Redis.
3. Testando os Acessos
Após configurar os usuários, vamos testar as restrições de acesso para garantir que cada usuário possa acessar e criar apenas as chaves permitidas.
- Vamos autenticar com o
usuario-rh:
127.0.0.1:6379> AUTH usuario-rh password123
OK
127.0.0.1:6379>
- Tentar criar uma chave permitida:
127.0.0.1:6379> SET sistema-rh-0001 "acesso tela de login"
OK
127.0.0.1:6379>
- Tentar criar uma chave não permitida:
127.0.0.1:6379> SET chave_nao_permitida "teste"
(error) NOPERM this user has no permissions to access one of the keys used as arguments
127.0.0.1:6379>
- Agora vamos autenticar com o
usuario-prod:
127.0.0.1:6379> AUTH usuario-prod password123
OK
127.0.0.1:6379>
- Tentar acessar a chave anteriormente criada pelo
usuario-rh:
127.0.0.1:6379> GET sistema-rh-0001
(error) NOPERM this user has no permissions to access one of the keys used as arguments
127.0.0.1:6379>
Com isso, podemos validar que os usuários foram limitados a criar as chaves definidas na sua criação, garantindo que só eles tenham acesso às suas chaves.
Conclusão
O uso de ACLs no Redis proporciona uma camada extra de segurança, especialmente útil em ambientes com múltiplos usuários ou aplicações que compartilham o mesmo cluster, permitindo dividir a segurança e segregar os acessos de acordo com a aplicação que os utiliza.
Configurando corretamente as permissões e acessos com base em nomes de chaves, é possível garantir que cada usuário tenha acesso apenas aos dados necessários, reduzindo riscos e melhorando a organização do ambiente.
Lembre-se de que podemos seguir as boas práticas abaixo para gerenciar o Redis:
- Utilizar Prefixos Consistentes: Padronizar os nomes das chaves com prefixos significativos para facilitar a configuração de ACLs.
- Revisar Regularmente as Permissões: Periodicamente, revisar as permissões dos usuários para garantir que eles não tenham acesso desnecessário.
- Centralizar as Configurações de ACLs: Centralizar as configurações em um arquivo de configuração pode facilitar a manutenção e aplicação das políticas, seja no
redis.confou em outro arquivo que possa ser incluído noredis.conf.
About author
Você pode gostar também
Backups Lógicos rápidos? pg_dump e pg_restore com Paralelismo no PostgreSQL
Quando o volume de dados cresce, backup e restauração com pg_dump/pg_restore podem rapidamente se tornar um gargalo crítico. É aqui que o paralelismo faz toda a diferença: em vez de
Guia definitivo: Como gerenciar sua infraestrutura com Terraform
Em meio ao caos que o Corona Vírus tem causado em todo o globo, chegamos ao último post da nossa série de postagens sobre Terraform. Caso tenha perdido os 5
Guia para usar a DeepSeek
Como Usar a DeepSeek: Guia para Usuários e Desenvolvedores A DeepSeek não é apenas um modelo de IA revolucionário, mas também uma ferramenta altamente acessível para usuários comuns e desenvolvedores.









