Introducción

Las Listas de Control de Acceso (ACLs) en Redis son una característica de seguridad que permite definir permisos detallados para diferentes usuarios. Con ACLs, puedes controlar quién puede acceder a qué comandos y datos en tu instancia de Redis, mejorando así la seguridad y el control sobre tu base de datos.

Conceptos Clave

  1. Usuarios: Redis permite la creación de múltiples usuarios, cada uno con su propio conjunto de permisos.
  2. Permisos: Los permisos pueden ser asignados a comandos específicos, patrones de claves y categorías de comandos.
  3. Autenticación: Cada usuario tiene una contraseña que se utiliza para autenticarse.

Configuración Básica de ACLs

Creación de Usuarios

Para crear un usuario en Redis, utilizamos el comando ACL SETUSER. A continuación, se muestra un ejemplo de cómo crear un usuario con permisos específicos:

ACL SETUSER myuser on >password ~* +@all

Explicación:

  • myuser: Nombre del usuario.
  • on: Habilita el usuario.
  • >password: Establece la contraseña del usuario.
  • ~*: Permite el acceso a todas las claves.
  • +@all: Permite el acceso a todos los comandos.

Asignación de Permisos

Los permisos se pueden asignar de manera granular. Aquí hay algunos ejemplos:

  • Permitir solo comandos de lectura:
ACL SETUSER readonlyuser on >readonlypassword ~* +@read
  • Permitir acceso solo a claves específicas:
ACL SETUSER limiteduser on >limitedpassword ~keyprefix:* +@all
  • Denegar comandos específicos:
ACL SETUSER restricteduser on >restrictedpassword ~* +@all -FLUSHDB -FLUSHALL

Listado de Usuarios y Permisos

Para listar todos los usuarios y sus permisos, utilizamos el comando ACL LIST:

ACL LIST

Para obtener información detallada sobre un usuario específico, utilizamos ACL GETUSER:

ACL GETUSER myuser

Ejemplo Práctico

Supongamos que queremos crear un entorno con tres tipos de usuarios: administrador, lector y escritor.

Creación de Usuarios

  1. Administrador: Tiene acceso completo a todos los comandos y claves.
ACL SETUSER admin on >adminpassword ~* +@all
  1. Lector: Solo puede leer datos, no puede modificar ni eliminar.
ACL SETUSER reader on >readerpassword ~* +@read
  1. Escritor: Puede leer y escribir datos, pero no puede ejecutar comandos peligrosos como FLUSHDB.
ACL SETUSER writer on >writerpassword ~* +@write +@read -FLUSHDB -FLUSHALL

Verificación de Permisos

Para verificar que los permisos están configurados correctamente, podemos autenticarnos como cada usuario y probar los comandos permitidos y denegados.

AUTH admin adminpassword
SET key1 "value1"  # Debería funcionar
FLUSHDB           # Debería funcionar

AUTH reader readerpassword
GET key1          # Debería funcionar
SET key1 "value2" # Debería fallar

AUTH writer writerpassword
SET key1 "value2" # Debería funcionar
FLUSHDB           # Debería fallar

Ejercicio Práctico

Ejercicio 1: Configuración de ACLs

  1. Crea un usuario llamado guest que solo pueda leer datos y acceder a claves que comiencen con public:.

  2. Crea un usuario llamado editor que pueda leer y escribir datos, pero no pueda ejecutar comandos de eliminación (DEL).

Solución

  1. Usuario guest:
ACL SETUSER guest on >guestpassword ~public:* +@read
  1. Usuario editor:
ACL SETUSER editor on >editorpassword ~* +@read +@write -DEL

Resumen

En esta sección, hemos aprendido sobre las Listas de Control de Acceso (ACLs) en Redis, cómo crear y configurar usuarios con permisos específicos, y cómo verificar que los permisos están funcionando correctamente. Las ACLs son una herramienta poderosa para mejorar la seguridad y el control en tu instancia de Redis, permitiéndote definir quién puede hacer qué en tu base de datos.

© Copyright 2024. Todos los derechos reservados