Como se muestra en la ilustración anterior, ciertos usuarios tienen acceso a claves y comandos delimitados, mientras que el usuario predeterminado tiene acceso a todas las claves y operaciones en la tienda.
Por lo general, Redis admite el comando Auth con el nombre de usuario y los argumentos de contraseña para autenticarse como un usuario específico con ciertas restricciones aplicadas.
Contraseñas de ACL
Las contraseñas de Redis ACL se almacenan en formato de hash de SHA256. Por lo general, estos son más como secretos compartidos. Estas contraseñas son cadenas hexadecimales que contienen números pseudorandom, como se muestra en el siguiente ejemplo:
"TY6C75273D91T32DF726FB545C8A4EDC14RF0A95A6FD993950B10I814AD2R57U"
Las contraseñas de ACL no están ingresadas por un ser humano. Se almacena en algún tipo de software del cliente. Por lo tanto, la longitud de la contraseña no es un problema en este contexto.
Para generar las contraseñas de Redis ACL, debe usar un comando especial llamado ACL GenPass, que discutiremos en la siguiente sección.
El comando ACL GenPass
El comando ACL GenPass se utiliza para generar una cadena alfanumérica que tiene un tamaño de 64 bytes que contiene 256 bits de datos pseudorandom. Para hacer que la contraseña sea más fuerte y difícil de descifrar, este comando utiliza los generadores de números pseudorandom como /dev/urandom o /dev/Random. Estos son tipos especiales de archivos utilizados para crear secuencias de valores de números aleatorios donde los números aleatorios generados tienen propiedades de una secuencia de números aleatorios. Estas contraseñas son diez veces más difíciles de descifrar que una contraseña habitual.
Sintaxis
ACL GenPass [number_of_bits_per_output_string]
Number_of_bits_per_output_string: Este es un argumento opcional que especifica el número de bits necesarios para estar contenido en la cadena de salida.
Este comando devolverá una cadena alfanumérica de 64 bytes, que incluye 256 bits de valores de datos pseudorandom. Cada vez que pasa el argumento opcional donde el número de bits varía de 1 a 1024, la longitud de la cadena de salida cambiará en consecuencia. Por lo general, la longitud de la cadena de salida se calculará dividiendo el número especificado de bits por 4. Además, los bits siempre se redondean al siguiente múltiplo de 4.
Ejemplo 01 - Generar contraseña de longitud predeterminada
Supongamos que necesitamos generar una contraseña de ACL para el usuario predeterminado que tiene acceso a cada comando y clave en el almacén de datos de Redis. Usaremos el comando ACL GenPass, que es menos complejo y más rápido debido a la complejidad del tiempo constante.
Como se esperaba, la salida es una cadena alfanumérica de 64 bytes con 256 bits de datos pseudorandom. La longitud de la contraseña de salida es de 64 caracteres hexadecimales. Eso implica que hay 256 bits.
Ejemplo 02 - Generar contraseña de longitud personalizada
El comando ACL GenPass proporciona el control total al usuario para definir el número de bits necesarios para estar en la cadena final. El parámetro opcional se puede pasar en forma de número de bits en la contraseña generada.
Creemos una contraseña de ACL con el tamaño de 16 bits. Por lo tanto, la longitud final de la cuerda alfanumérica debe ser de 16 bits dividido por cuatro que equivale a 4 caracteres hexagonales.
ACL GenPass 16
Intentemos especificar el número de bits a 6. El comando redondeará este número al siguiente múltiplo de cuatro. Por lo tanto, el número de bits se convierte en 8 debajo del capó.
Como se esperaba, la longitud de la cadena de salida es de 2 caracteres hexadecimales que representan 8 bits de datos pseudorandom.
Como se discutió en los ejemplos anteriores, el comando ACL GenPass puede ser un generador de contraseña confiable para Redis Data Stores.
Conclusión
Para resumir, Redis introdujo la función Lista de control de acceso desde la versión 6.0.0. Habilita una nueva capa de seguridad donde ciertas conexiones de cliente pueden acceder a comandos y claves limitadas en el almacén de datos de Redis. Cada conexión de cliente se puede autenticar utilizando el Auténtico comando con el nombre de usuario y la contraseña proporcionados. Estas contraseñas se almacenan como valores de hash de SHA256 en el almacenamiento de Redis. Por lo tanto, se recomienda generar fuertes contraseñas de Redis utilizando el comando ACL GenPass. Genera una cuerda alfanumérica de 64 bytes que es lo suficientemente fuerte como para evitar ataques.