Conforme mostrado na ilustração anterior, certos usuários têm acesso a teclas e comandos delimitados, enquanto o usuário padrão tem acesso a todas as chaves e operações na loja.
Geralmente, o Redis suporta o comando de autenticação com argumentos de nome de usuário e senha para autenticar como um usuário específico com certas restrições aplicadas.
Senhas de ACL
As senhas Redis ACL são armazenadas no formato SHA256 Hashed. Geralmente, esses são mais como segredos compartilhados. Essas senhas são strings hexadecimais que contêm números de pseudorandom, conforme mostrado no exemplo a seguir:
"TY6C75273D91T32DF726FB545C8A4EDC14RF0A95A6FD993950B10I814AD2R57U"
As senhas da ACL não são inseridas por um ser humano. É armazenado em algum tipo de software cliente. Portanto, o comprimento da senha não é um problema neste contexto.
Para gerar as senhas Redis ACL, você precisa usar um comando especial chamado ACL GenPass, que discutiremos na seção a seguir.
O comando da ACL GenPass
O comando ACL GenPass é usado para gerar uma corda alfanumérica que possui um tamanho de 64 bytes que contém 256 bits de dados de pseudorandom. Para tornar a senha mais forte e mais difícil de quebrar, este comando usa os geradores de números pseudorandom /Dev/Urandom ou /dev/aleatório. Esses são tipos especiais de arquivos usados para criar sequências de valores de números aleatórios, onde os números aleatórios gerados têm propriedades de uma sequência de números aleatórios. Essas senhas são dez vezes mais difíceis de quebrar do que uma senha usual.
Sintaxe
ACL GenPass [number_of_bits_per_output_string]
número_of_bits_per_output_string: Este é um argumento opcional que especifica o número de bits que precisam ser contidos na sequência de saída.
Este comando retornará uma corda alfanumérica de 64 bytes, que inclui 256 bits de valores de dados pseudorandom. Sempre que você passa o argumento opcional em que o número de bits varia de 1 a 1024, o comprimento da string de saída será alterado de acordo. Geralmente, o comprimento da cadeia de saída será calculado dividindo o número especificado de bits por 4. Além disso, os bits são sempre arredondados para o próximo múltiplo de 4.
Exemplo 01 - Gere senha de comprimento padrão
Vamos supor que precisamos gerar uma senha do ACL para o usuário padrão que tem acesso a todos os comando e chave no Redis Data Store. Usaremos o comando ACL GenPass, que é menos complexo e mais rápido devido à complexidade constante do tempo.
Como esperado, a saída é uma corda alfanumérica de 64 bytes com 256 bits de dados de pseudorandom. O comprimento da senha de saída é 64 caracteres hexáticos. Isso implica que 256 bits estão lá.
Exemplo 02 - Gere senha de comprimento personalizado
O comando ACL GenPass fornece controle total ao usuário para definir o número de bits necessários para estar na sequência final. O parâmetro opcional pode ser passado na forma do número de bits na senha gerada.
Vamos criar uma senha de ACL com o tamanho 16 bits. Portanto, o comprimento final da corda alfanumérica deve ser de 16 bits divididos por quatro, o que é igual a 4 caracteres hexáticos.
ACL GenPass 16
Vamos tentar especificar o número de bits para 6. O comando vai arredondar esse número para o próximo múltiplo de quatro. Portanto, o número de bits se torna 8 sob o capô.
Como esperado, o comprimento da string de saída é de 2 caracteres hexáticos representando 8 bits de dados de pseudorandom.
Conforme discutido nos exemplos anteriores, o comando ACL GenPass pode ser um gerador de senha confiável para lojas de dados Redis.
Conclusão
Para resumir, Redis apresentou o recurso Lista de controle de acesso da versão 6.0.0. Ele permite uma nova camada de segurança, onde determinadas conexões do cliente podem acessar comandos e chaves limitados no Redis Data Store. Cada conexão do cliente pode ser autenticada usando o Auth comando com o nome de usuário e senha fornecidos. Essas senhas são armazenadas como SHA256 Hashed Values no Redis Storage. Portanto, é recomendável gerar fortes senhas Redis usando o comando ACL GenPass. Ele gera uma corda alfanumérica de 64 bytes, que é forte o suficiente para evitar ataques.