Como usar o Redis ACL

Como usar o Redis ACL
Lista de controle de ACL ou acesso é um recurso de segurança no Redis que permite limitar e controlar a conexão com o servidor Redis. Por exemplo, você pode especificar quais chaves e comandos uma conexão com o cliente pode executar usando o recurso ACL.

Neste tutorial, exploraremos como usar os recursos da ACL no redis para aprimorar a segurança do servidor Redis.

Como funciona?

Você começa definindo usuários no ACL. Depois que um cliente se conecta à CLI Redis, ele deve autenticar usando um nome de usuário e senha especificados na lista de controle de acesso.

Após a autenticação bem -sucedida, Redis associa essa conexão com o usuário e atribui a permissão definida a essa conexão.

Por exemplo, se um cliente autentica com um usuário com permissão somente para visualização, a conexão herdará as permissões desse usuário.

Nota: o recurso ACL está disponível apenas em Redis 6.0 e acima.

Redis Auth Command

Na versão mais recente do Redis, usamos o comando auth seguido pelo nome de usuário e senha.

Se apenas a senha for fornecida, o Redis se autenticará automaticamente como o usuário padrão.

Redis Configure ACL

Redis vem com um usuário padrão, chamado padrão no ACL. Você pode visualizar isso usando o comando ACL List:

127.0.0.1: 6379> Lista da ACL

1) “do utilizador padrão sobre #5E884898DA28047151D0E56F8DC6292773603D0D6AABBDD62A11EF721D1542D8 ~* +@todos

A saída do comando da Lista ACL segue um padrão específico. Vamos quebrá -lo:

  1. A primeira parte é o usuário de palavras -chave.
  2. Em seguida é o nome de usuário do usuário na lista da ACL
  3. A terceira parte é a palavra -chave "ON", que define as chaves de acesso do usuário.
  4. A quarta parte é a senha hashed no formato SHA256. Se nenhuma senha estiver definida, o valor será definido como NoPass
  5. Por último, mas não menos importante, é a lista de chaves que o usuário pode acessar. No nosso caso, são todas as teclas, daí (~*).
  6. Finalmente, são os comandos que o usuário pode executar. Em nosso exemplo, são todos os comandos.

Regras da ACL

Redis tem uma extensa lista de regras da ACL que você pode usar. Primeiro, no entanto, vamos listar alguns essenciais.

  1. ON - isso permite o usuário especificado. Portanto, os clientes podem autentiar com este nome de usuário e senha.
  2. OFF - desativa o usuário especificado. Nenhum cliente pode acessar a autenticação com esse nome de usuário ou senha.
  3. + - Adiciona um comando à lista de comandos que um usuário pode executar. Cada comando é separado com um tubo. Por exemplo, se o usuário puder executar definido e obtiver, podemos fazer +definir | obter
  4. - - Remove um comando da lista de comandos permitidos. Da mesma forma, separe cada comando com um tubo. Exemplo -
  5. @All ou AllCommands - permite que o usuário execute todos os comandos no servidor.
  6. ~ - adiciona um padrão ao tipo de chaves que um usuário pode acessar. Por exemplo, ~* especifica todas as chaves.
  7. > - Adiciona a senha especificada à lista de senhas que o usuário pode autenticar.
  8. < - Opposite of above.
  9. ResetPass -Delete A lista de senhas permitidas.
  10. NoPass - deixe o usuário fazer login sem senha.

Redis Configure usuários da ACL

Para adicionar um usuário à lista da ACL, use o comando ACL SetUser. O comando leva o nome de usuário e a lista de regras para aplicar ao usuário especificado.

Um exemplo é como mostrado abaixo:

127.0.0.1: 6379> ACL SetUser Linuxhint
OK

O comando adicionará um usuário com o nome de usuário especificado.

Você pode verificar os usuários na lista da ACL como:

127.0.0.1: 6379> Lista da ACL

1) “Padrão do usuário em ~* +@all”

2) “Usuário Linuxhint Off -@All”

Observe que o usuário "Linuxhint" está desativado por padrão e pode executar comandos ou acessar nenhuma chave.

Redis criará um novo usuário com os menos privilégios possíveis.

Podemos executar o comando abaixo para ativar o usuário e definir uma senha.

127.0.0.1: 6379> ACL SetUser Linuxhint na> senha
OK

No comando acima, habilitamos o usuário definindo o valor e adicionando uma senha como> senha.

Para adicionar comandos ao usuário, podemos fazer:

127.0.0.1: 6379> ACL SetUser Linuxhint +Set | Get | Del
OK

Isso deve adicionar alguns comandos ao usuário Linuxhint.

No entanto, o usuário não pode acessar nenhuma chave. Podemos permitir que o usuário acesse todas as teclas, conforme mostrado no comando abaixo:

127.0.0.1: 6379> ACL SetUser Linuxhint ~*
OK

Lembre-se de que os nomes de usuário são sensíveis ao caso.

Agora podemos listar os usuários no ACL como:

1) “Padrão do usuário em ~* +@all”

2) “Usuário linuxhint em ~* -@all +set | get | del”

Redis descreve o usuário

Para obter informações descritivas de um usuário da ACL, execute o comando acl getuser seguido pelo nome de usuário do destino.

127.0.0.1: 6379> ACL GetUser Linuxhint

1) “Bandeiras”

2) 1) “ON”

2) “Allkeys”

3) “Senhas”

4) 1) “5E884898DA28047151D0E56F8DC6292773603D0D6AABBDD62A11EF721D1542D8”

5) “Comandos”

6) “-@All +Set | Get | Del”

7) “Chaves”

8) 1) “*”

ACL Gere senha

Se você não deseja gerar uma senha para o seu usuário, pode usar o comando ACL GenPass.

Um exemplo é como mostrado:

127.0.0.1: 6379> ACL GenPass
"1AC9687481067647AD39A959AB90F172D9C25EA7265CACDF06C711257125F18B"

O comando acima deve retornar um hash de senha aleatória.

Conclusão

Este foi um artigo destilado descrevendo o recurso Redis ACL. Cobrimos como ativar e usar o ACL em redis, adicionar usuários, definir regras da ACL, etc.

É altamente recomendável verificar a documentação para saber mais.

Obrigado pela leitura, vejo você na próxima vez.