Redis GenPass

Redis GenPass
Redis es un almacén de datos en memoria optimizado para el rendimiento que utiliza un formato de par de valor clave para almacenar datos. Redis permite que cualquier conexión de cliente nueva acceda a cada clave y comando dentro del almacén de datos hasta su versión 6.0.0. De la versión 6.0.0, Redis introdujo una nueva capa de seguridad con la función de lista de control de acceso. Con la función ACL, Redis puede limitar los niveles de acceso a comandos y claves para diferentes conexiones de clientes. Cuando Redis ACL está en su lugar, la conexión del cliente debe autenticarse con un nombre de usuario y contraseña. Por lo tanto, el nivel de acceso de cada conexión varía desde todas las claves y comandos hasta un subconjunto de aquellos. El usuario "predeterminado" puede acceder a todos los comando y clave en el almacén de datos.

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.