Cómo usar Redis ACL

Cómo usar Redis ACL
La lista de control de ACL o Access es una característica de seguridad en Redis que le permite limitar y controlar la conexión al servidor Redis. Por ejemplo, puede especificar qué teclas y comandos puede realizar una conexión de cliente utilizando la función ACL.

En este tutorial, exploraremos cómo usar funciones de ACL en Redis para mejorar la seguridad del servidor Redis.

Como funciona?

Comienza definiendo a los usuarios en el ACL. Una vez que un cliente se conecta a la CLI redis, debe autenticarse utilizando un nombre de usuario y una contraseña especificados en la lista de control de acceso.

Después de una autenticación exitosa, Redis asocia esa conexión con el usuario y asigna el permiso definido a esa conexión.

Por ejemplo, si un cliente se autentica con un usuario con permiso de solo vista, la conexión heredará los permisos del usuario.

Nota: La función de ACL solo está disponible en Redis 6.0 y superior.

Comando de autenticación Redis

En la versión más nueva de Redis, usamos el comando de autenticación seguido del nombre de usuario y la contraseña.

Si solo se suministra la contraseña, Redis se autenticará automáticamente como el usuario predeterminado.

Redis Configurar ACL

Redis viene con un usuario predeterminado, llamado predeterminado en el ACL. Puede ver esto usando el comando de la lista ACL:

127.0.0.1: 6379> Lista de ACL

1) "usuario por defecto en #5E884898DA28047151D0E56F8DC6292773603D0D6AABBDD62A1EF721D1542D8 ~* +@todo"

La salida del comando de la lista de ACL sigue un patrón específico. Vamos a desglosarlo:

  1. La primera parte es el usuario de la palabra clave.
  2. El siguiente es el nombre de usuario del usuario en la lista de ACL
  3. La tercera parte es la palabra clave "ON", que define las claves de acceso del usuario.
  4. La cuarta parte es la contraseña hash en formato SHA256. Si no se establece una contraseña, el valor se establece en NOPASS
  5. Por último, pero no menos importante, es la lista de claves al que puede acceder al usuario. En nuestro caso, son todas las claves, por lo tanto (~*).
  6. Finalmente, son los comandos que el usuario puede ejecutar. En nuestro ejemplo, son todos los comandos.

Reglas de ACL

Redis tiene una extensa lista de reglas de LCA que puede usar. Primero, sin embargo, enumeremos algunos esenciales.

  1. ON - Esto habilita el usuario especificado. Por lo tanto, los clientes pueden autenticarse con este nombre de usuario y contraseña.
  2. APAGADO - Desactiva el usuario especificado. Ningún cliente puede acceder a la autores con ese nombre de usuario o contraseña.
  3. + - Agrega un comando a la lista de comandos que un usuario puede ejecutar. Cada comando está separado con una tubería. Por ejemplo, si el usuario puede ejecutar Set y Get, podemos hacer +SET | Obtener
  4. - - Elimina un comando de la lista de comandos permitidos. Del mismo modo, separe cada comando con una tubería. Ejemplo -
  5. @All o AllCommands: permite al usuario ejecutar todos los comandos en el servidor.
  6. ~ - Agrega un patrón al tipo de claves que un usuario puede acceder. Por ejemplo, ~* especifica todas las teclas.
  7. > - Agrega la contraseña especificada a la lista de contraseñas que el usuario puede autenticar.
  8. < - Opposite of above.
  9. ResetPass -delete la lista de contraseñas permitidas.
  10. NOPASS: deje que el usuario inicie sesión sin contraseña.

Redis Configurar usuarios de ACL

Para agregar un usuario a la lista de ACL, use el comando ACL setUser. El comando toma el nombre de usuario y la lista de reglas que se aplicarán al usuario especificado.

Un ejemplo es como se muestra a continuación:

127.0.0.1: 6379> ACL setUser Linuxhint
DE ACUERDO

El comando agregará un usuario con el nombre de usuario especificado.

Puede consultar a los usuarios en la lista de ACL como:

127.0.0.1: 6379> Lista de ACL

1) "Usuario predeterminado en ~* +@todos"

2) "Usuario Linuxhint Off -@todos"

Tenga en cuenta que el usuario "Linuxhint" está deshabilitado de forma predeterminada y no puede ejecutar comandos ni acceder a ninguna tecla.

Redis creará un nuevo usuario con los menores privilegios posibles.

Podemos ejecutar el comando a continuación para habilitar al usuario y establecer una contraseña.

127.0.0.1: 6379> ACL setUser Linuxhint en> contraseña
DE ACUERDO

En el comando anterior, habilitamos al usuario configurando el valor en ON y agregando una contraseña como> contraseña.

Para agregar comandos al usuario, podemos hacer:

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

Esto debería agregar algunos comandos al usuario de Linuxhint.

Sin embargo, el usuario no puede acceder a ninguna clave. Podemos habilitar al usuario acceder a todas las claves como se muestra en el comando a continuación:

127.0.0.1: 6379> ACL SetUser Linuxhint ~*
DE ACUERDO

Tenga en cuenta que los nombres de usuario son sensibles a los casos.

Ahora podemos enumerar a los usuarios en ACL como:

1) "Usuario predeterminado en ~* +@todos"

2) “Usuario Linuxhint en ~* -@all +set | get | del”

Redis describe al usuario

Para obtener información descriptiva de un usuario de ACL, ejecute el comando ACL getUser seguido del nombre de usuario de destino.

127.0.0.1: 6379> ACL getUser Linuxhint

1) "banderas"

2) 1) "On"

2) "Allkeys"

3) "Contraseñas"

4) 1) “5E884898DA28047151D0E56F8DC6292773603D0D6AABBDD62A1EF721D1542D8"

5) "Comandos"

6) "-@All +Set | Get | Del"

7) "Llaves"

8) 1) "*"

ACL generar contraseña

Si no desea generar una contraseña para su usuario, puede usar el comando ACL GenPass.

Un ejemplo es como se muestra:

127.0.0.1: 6379> ACL GenPass
"1ac9687481067647ad39a959ab90f172d9c25ea7265cacdf06c711257125f18b"

El comando anterior debe devolver un hash de contraseña aleatoria.

Conclusión

Este fue un artículo destilado que describe la función de ACL redis. Cubrimos cómo habilitar y usar ACL en Redis, agregar usuarios, establecer reglas de ACL, etc.

Recomendamos encarecidamente verificar la documentación para obtener más información.

Gracias por leer, nos vemos la próxima vez.