Autenticación de usuarios con listas de control de acceso (ACL) - Amazon MemoryDB

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Autenticación de usuarios con listas de control de acceso (ACL)

Puede autenticar usuarios con listas de control de acceso (ACL).

Las ACL le permiten controlar el acceso a los clústeres agrupando a los usuarios. Estas listas de control de acceso se han diseñado como una forma de organizar el acceso a los clústeres.

Con las ACL, puede crear usuarios y asignarles permisos específicos mediante una cadena de acceso, como se describe en la sección a continuación. Asigne los usuarios a listas de control de acceso alineadas con un rol específico (administradores, recursos humanos) que luego se implementan en uno o más clústeres de MemoryDB. De esta manera, puede establecer límites de seguridad entre clientes que utilicen el mismo clúster o clústeres de MemoryDB e impedir que los clientes obtengan acceso a los datos de los demás.

Las ACL están diseñadas para respaldar la introducción de las ACL de Redis en Redis OSS 6. Cuando utiliza ACL con el clúster de MemoryDB, existen algunas limitaciones que debe tener en cuenta:

  • No puede especificar contraseñas en una cadena de acceso. Las contraseñas se configuran con o con las llamadas CreateUser. UpdateUser

  • Para los derechos de usuario, pasa on y off como parte de la cadena de acceso. Si no se especifica ninguno en la cadena de acceso, se asigna off al usuario y no tiene derechos de acceso al clúster.

  • No se pueden utilizar comandos prohibidos. Si especifica un comando prohibido, se generará una excepción. Para ver una lista de dichos comandos, consulte Comandos OSS de Redis restringidos.

  • No puede utilizar el comando reset como parte de una cadena de acceso. Las contraseñas se especifican con parámetros de la API y MemoryDB administra las contraseñas. Por lo tanto, no puede utilizar reset porque eliminará todas las contraseñas de un usuario.

  • Redis OSS 6 presenta el comando ACL LIST. Este comando devuelve una lista de usuarios junto con las reglas de ACL aplicadas a cada usuario. MemoryDB admite el ACL LIST comando, pero no incluye soporte para hashes de contraseñas como lo hace Redis OSS. Con MemoryDB, puede utilizar la DescribeUsersoperación para obtener información similar, incluidas las reglas contenidas en la cadena de acceso. Sin embargo, DescribeUsersno recupera la contraseña de un usuario.

    Otros comandos de solo lectura admitidos por MemoryDB incluyen ACL WHOAMI, ACL USERS y ACL CAT. MemoryDB no admite otros comandos ACL basados en escritura.

A continuación, se describe con más detalle el uso de ACL con MemoryDB.

Especificación de permisos mediante una cadena de acceso

Para especificar los permisos de un clúster de MemoryDB, debe crear una cadena de acceso y asignarla a un usuario mediante la AWS CLI tecla o. AWS Management Console

Las cadenas de acceso se definen como una lista de reglas delimitadas por espacios que se aplican al usuario. Definen qué comandos puede ejecutar un usuario y qué claves puede operar. Para ejecutar un comando, un usuario debe tener acceso al comando que se ejecuta y a todas las claves a las que accede el comando. Las reglas se aplican de izquierda a derecha de forma acumulativa y se puede utilizar una cadena más simple en lugar de la proporcionada si hay redundancias en la cadena proporcionada.

Para obtener más información sobre la sintaxis de las reglas de ACL, consulte ACL.

En el siguiente ejemplo, la cadena de acceso representa un usuario activo con acceso a todas las claves y comandos disponibles.

on ~* &* +@all

La sintaxis de la cadena de acceso se desglosa de la siguiente manera:

  • on: el usuario es un usuario activo.

  • ~*: se brinda acceso a todas las claves disponibles.

  • &*— Se permite el acceso a todos los canales de pubsub.

  • +@all: se brinda acceso a todos los comandos disponibles.

La configuración anterior es la menos restrictiva. Puede modificar esta configuración para hacerla más segura.

En el siguiente ejemplo, la cadena de acceso representa a un usuario con acceso restringido al acceso de lectura en claves que comienzan por el espacio de claves “app::”

on ~app::* -@all +@read

Puede refinar aún más estos permisos al enumerar comandos a los que el usuario tiene acceso:

+command1: el acceso del usuario a los comandos se encuentra limitado a command1.

+@category: el acceso del usuario a los comandos se encuentra limitado a la categoría de comandos.

Para obtener información sobre cómo asignar una cadena de acceso a un usuario, consulte Creación de usuarios y listas de control de acceso con la consola y la CLI.

Si va a migrar una carga de trabajo existente a MemoryDB, puede recuperar la cadena de acceso mediante una llamada a ACL LIST, que excluya el usuario y cualquier hash de contraseña.

Capacidades de la búsqueda vectorial

nota

Esta función se encuentra en una versión preliminar de MemoryDB y está sujeta a cambios.

En Búsqueda vectorial, todos los comandos de la búsqueda pertenecen a la categoría @search, y las categorías existentes @read, @write, @fast y @slow se actualizan para incluir los comandos de la búsqueda. Si un usuario no tiene acceso a una categoría, entonces no tiene acceso a ningún comando de la categoría. Por ejemplo, si el usuario no tiene acceso a @search, entonces no puede ejecutar ningún comando relacionado con la búsqueda.

En la siguiente tabla se indica la asignación de los comandos JSON a las categorías apropiadas.

Comandos de VSS @read @write @fast @slow
FT.CREATE Y Y
FT.DROPINDEX Y Y
FT.LIST Y Y
FT.INFO Y Y
FT.SEARCH Y Y
FT.AGGREGATE Y Y
FT.PROFILE Y Y
FT.ALIASADD Y Y
FT.ALIASDEL Y Y
FT.ALIASUPDATE Y Y
FT._ALIASLIST Y Y
FT.EXPLAIN Y Y
FT.EXPLAINCLI Y Y
FT.CONFIG Y Y

Aplicar las ACL a un clúster para MemoryDB

Para usar las ACL de MemoryDB, siga estos pasos:

  1. Cree uno o más usuarios.

  2. Cree una ACL y agregue usuarios a la lista.

  3. Asigne la ACL a un clúster.

Estos pasos se describen en la siguiente tabla.

Creación de usuarios y listas de control de acceso con la consola y la CLI

La información de usuario para los usuarios de las ACL es un nombre de usuario y, opcionalmente, una contraseña y una cadena de acceso. La cadena de acceso proporciona el nivel de permisos en las claves y comandos. El nombre de usuario es exclusivo del usuario y es lo que se pasa al motor.

Asegúrese de que los permisos de usuario que proporcione tengan sentido con el propósito previsto de la ACL. Por ejemplo, si crea una ACL denominada Administrators, cualquier usuario que agregue a ese grupo debe tener su cadena de acceso establecida en el acceso completo a las claves y comandos. Para los usuarios de una ACL de e-commerce, puede establecer las cadenas de acceso en acceso de solo lectura.

MemoryDB configura automáticamente un usuario predeterminado por cuenta con un nombre de usuario "default". No se asociará a ningún clúster a menos que se añada explícitamente a una ACL. No puede modificar ni eliminar este usuario. Este usuario está diseñado para ser compatible con el comportamiento predeterminado de las versiones anteriores de Redis OSS y tiene una cadena de acceso que le permite llamar a todos los comandos y acceder a todas las teclas.

Se creará una ACL inmutable de “acceso abierto” para cada cuenta que contenga el usuario predeterminado. Esta es la única ACL a la que el usuario predeterminado puede pertenecer. Al crear un clúster, es preciso asociarlo con una ACL. Si bien tiene la opción de aplicar la ACL de “acceso abierto” con el usuario predeterminado, le recomendamos encarecidamente que cree una ACL con usuarios que tengan permisos restringidos a sus necesidades empresariales.

Los clústeres que no tienen habilitada la TLS deben usar la ACL de “acceso abierto” para proporcionar una autenticación abierta.

Las ACL se pueden crear sin usuarios. Una ACL vacía no tendría acceso a un clúster y solo se puede asociar a clústeres habilitados para TLS.

Al crear un usuario, puede configurar hasta dos contraseñas. Al modificar una contraseña, se mantienen todas las conexiones existentes a los clústeres.

En concreto, tenga en cuenta estas restricciones de contraseña del usuario al utilizar ACL con MemoryDB:

  • Las contraseñas deben tener entre 16 y 128 caracteres imprimibles.

  • No se admiten los siguientes caracteres no alfanuméricos: , "" / @.

Administración de usuarios con la consola y la CLI

Para crear usuarios con la consola
  1. Inicie sesión en la consola de MemoryDB AWS Management Console y ábrala en https://console.aws.amazon.com/memorydb/.

  2. En el panel de navegación izquierdo, elija Usuarios.

  3. Elija Crear usuario

  4. En la página Crear usuario, introduzca un nombre.

    Las restricciones para la asignación de nombres de clúster son las siguientes:

    • Deben contener entre 1 y 40 caracteres alfanuméricos o guiones.

    • Deben comenzar por una letra.

    • No pueden contener dos guiones consecutivos.

    • No pueden terminar con un guion.

  5. En Contraseñas, puede introducir hasta dos contraseñas.

  6. En Cadena de acceso, introduzca una cadena de acceso. La cadena de acceso establece el nivel de permisos para qué claves y comandos se permite al usuario.

  7. En el caso de las etiquetas, si lo desea, puede aplicar etiquetas para buscar y filtrar a sus usuarios o realizar un seguimiento de sus AWS costes.

  8. Seleccione Crear.

Para crear un usuario mediante la CLI
  • Utilice el comando create-user para crear un usuario.

    Para Linux, macOS o Unix:

    aws memorydb create-user \ --user-name user-name-1 \ --access-string "~objects:* ~items:* ~public:*" \ --authentication-mode \ Passwords="abc",Type=password

    Para Windows:

    aws memorydb create-user ^ --user-name user-name-1 ^ --access-string "~objects:* ~items:* ~public:*" ^ --authentication-mode \ Passwords="abc",Type=password
Para modificar usuarios con la consola
  1. Inicie sesión en la consola de MemoryDB AWS Management Console y ábrala en https://console.aws.amazon.com/memorydb/.

  2. En el panel de navegación izquierdo, elija Usuarios.

  3. Elija el botón de opción situado junto al usuario que desea modificar y luego elija Acciones -> Modificar

  4. Si desea modificar una contraseña, pulse el botón de opción Modificar contraseñas. Tenga en cuenta que si tiene dos contraseñas, debe introducir ambas al modificar una de ellas.

  5. Si va a actualizar la cadena de acceso, introduzca la nueva.

  6. Elija Modificar.

Para modificar un usuario mediante la CLI
  1. Utilice el comando update-user para modificar un usuario.

  2. Cuando se modifica un usuario, se actualizan las listas de control de acceso asociadas al usuario, junto con los clústeres asociados a la ACL. Se mantienen todas las conexiones existentes. A continuación se muestran algunos ejemplos.

    Para Linux, macOS o Unix:

    aws memorydb update-user \ --user-name user-name-1 \ --access-string "~objects:* ~items:* ~public:*"

    Para Windows:

    aws memorydb update-user ^ --user-name user-name-1 ^ --access-string "~objects:* ~items:* ~public:*"
Para ver los detalles del usuario en la consola
  1. Inicie sesión en la consola de MemoryDB AWS Management Console y ábrala en https://console.aws.amazon.com/memorydb/.

  2. En el panel de navegación izquierdo, elija Usuarios.

  3. Elija el usuario en Nombre de usuario o utilice el cuadro de búsqueda para encontrarlo.

  4. En Configuración de usuario, puede revisar la cadena de acceso del usuario, el recuento de contraseñas, el estado y el nombre del recurso de Amazon (ARN).

  5. En las listas de control de acceso (ACL), puede revisar la ACL a la que pertenece el usuario.

  6. En Etiquetas, puede revisar cualquier etiqueta asociada al usuario.

Utilice el comando describe-users para ver los detalles de un usuario.

aws memorydb describe-users \ --user-name my-user-name
Para eliminar usuarios con la consola
  1. Inicie sesión en la consola de MemoryDB AWS Management Console y ábrala en https://console.aws.amazon.com/memorydb/.

  2. En el panel de navegación izquierdo, elija Usuarios.

  3. Elija el botón de opción situado junto al usuario que desea modificar y luego elija Acciones -> Eliminar

  4. Para confirmar, en el cuadro de texto de confirmación, introduzca delete y, a continuación, elija Eliminar.

  5. Para cancelar, elija Cancelar.

Para eliminar un usuario mediante la CLI
  • Utilice el comando delete-user para eliminar un usuario.

    La cuenta se borra y elimina de todas las listas de control de acceso a las que pertenezca. A continuación, se muestra un ejemplo.

    Para Linux, macOS o Unix:

    aws memorydb delete-user \ --user-name user-name-2

    Para Windows:

    aws memorydb delete-user ^ --user-name user-name-2

Administración de listas de control de acceso con la consola y la CLI

Puede crear listas de control de acceso para organizar y controlar el acceso de los usuarios a uno o más clústeres, como se muestra a continuación.

Use el siguiente procedimiento para administrar las listas de control de acceso mediante la consola.

Para crear una lista de control de acceso mediante la consola
  1. Inicie sesión en la consola de MemoryDB AWS Management Console y ábrala en https://console.aws.amazon.com/memorydb/.

  2. En el panel de navegación izquierdo, elija Listas de control de acceso (ACL).

  3. Seleccione Crear ACL.

  4. En la página Crear lista de control de acceso (ACL), introduzca un nombre ACL.

    Las restricciones para la asignación de nombres de clúster son las siguientes:

    • Deben contener entre 1 y 40 caracteres alfanuméricos o guiones.

    • Deben comenzar por una letra.

    • No pueden contener dos guiones consecutivos.

    • No pueden terminar con un guion.

  5. En Usuarios seleccionados, realice una de las siguientes acciones:

    1. Para crear un nuevo usuario, seleccione Crear usuario

    2. Para agregar usuarios, elija Administrar y, a continuación, seleccione los usuarios en el cuadro de diálogo Administrar usuarios y, a continuación, seleccione Elegir.

  6. En el caso de las etiquetas, si lo desea, puede aplicar etiquetas para buscar y filtrar sus ACL o realizar un seguimiento de sus costes. AWS

  7. Seleccione Crear.

Utilice el siguiente procedimiento para crear una lista de control de acceso mediante la CLI.

Para crear una nueva ACL y agregar un usuario mediante la CLI
  • Utilice el comando create-acl para crear una ACL.

    Para Linux, macOS o Unix:

    aws memorydb create-acl \ --acl-name "new-acl-1" \ --user-names "user-name-1" "user-name-2"

    Para Windows:

    aws memorydb create-acl ^ --acl-name "new-acl-1" ^ --user-names "user-name-1" "user-name-2"
Para modificar una lista de control de acceso mediante la consola
  1. Inicie sesión en la consola de MemoryDB AWS Management Console y ábrala en https://console.aws.amazon.com/memorydb/.

  2. En el panel de navegación izquierdo, elija Listas de control de acceso (ACL).

  3. Elija la ACL que desea modificar y elija Modificar

  4. En la página Modificar, en Usuarios seleccionados, realice una de las siguientes acciones:

    1. Cree un nuevo usuario seleccionando Crear usuario para agregarlo a la ACL.

    2. Agregue o elimine usuarios seleccionando Administrar y, a continuación, seleccionando o deseleccionando los usuarios en el cuadro de diálogo Administrar usuarios y, a continuación, seleccionando Elegir.

  5. En la página Crear lista de control de acceso (ACL), introduzca un nombre ACL.

    Las restricciones para la asignación de nombres de clúster son las siguientes:

    • Deben contener entre 1 y 40 caracteres alfanuméricos o guiones.

    • Deben comenzar por una letra.

    • No pueden contener dos guiones consecutivos.

    • No pueden terminar con un guion.

  6. En Usuarios seleccionados, realice una de las siguientes acciones:

    1. Para crear un nuevo usuario, seleccione Crear usuario

    2. Para agregar usuarios, elija Administrar y, a continuación, seleccione los usuarios en el cuadro de diálogo Administrar usuarios y, a continuación, seleccione Elegir.

  7. Seleccione Modificar para guardar los cambios o Cancelar para descartarlos.

Para modificar una ACL agregando usuarios nuevos o eliminando miembros actuales mediante la CLI
  • Utilice el comando update-acl para modificar una ACL.

    Para Linux, macOS o Unix:

    aws memorydb update-acl --acl-name new-acl-1 \ --user-names-to-add user-name-3 \ --user-names-to-remove user-name-2

    Para Windows:

    aws memorydb update-acl --acl-name new-acl-1 ^ --user-names-to-add user-name-3 ^ --user-names-to-remove user-name-2
nota

Cualquier conexión abierta que pertenezca a un usuario eliminado de una ACL finalizará con este comando.

Para ver los detalles de la ACL en la consola
  1. Inicie sesión en la consola de MemoryDB AWS Management Console y ábrala en https://console.aws.amazon.com/memorydb/.

  2. En el panel de navegación izquierdo, elija Listas de control de acceso (ACL).

  3. Elija la ACL en el nombre de la ACL o utilice el cuadro de búsqueda para buscar la ACL.

  4. En Usuarios, puede revisar la lista de usuarios asociados a la ACL.

  5. En Clústeres asociados, puede revisar el clúster al que pertenece la ACL.

  6. En Etiquetas, puede revisar cualquier etiqueta asociada a la ACL.

Utilice el comando describe-acls para ver los detalles de una ACL.

aws memorydb describe-acls \ --acl-name test-group
Para eliminar las listas de control de acceso mediante la consola
  1. Inicie sesión en la consola de MemoryDB AWS Management Console y ábrala en https://console.aws.amazon.com/memorydb/.

  2. En el panel de navegación izquierdo, elija Listas de control de acceso (ACL).

  3. Elija la ACL que desee modificar y, a continuación, elija Eliminar

  4. En la página de eliminación, ingrese delete en el cuadro de confirmación y elija Eliminar o Cancelar para evitar que se elimine la ACL.

Se elimina la ACL en sí, no los usuarios que pertenecen al grupo.

Para eliminar una ACL mediante la CLI
  • Ejecute el comando delete-acl para eliminar una ACL.

    Para Linux, macOS o Unix:

    aws memorydb delete-acl / --acl-name

    Para Windows:

    aws memorydb delete-acl ^ --acl-name

    Los ejemplos anteriores devuelven la siguiente respuesta.

    aws memorydb delete-acl --acl-name "new-acl-1" { "ACLName": "new-acl-1", "Status": "deleting", "EngineVersion": "6.2", "UserNames": [ "user-name-1", "user-name-3" ], "clusters": [], "ARN":"arn:aws:memorydb:us-east-1:493071037918:acl/new-acl-1" }

Asignación de listas de control de acceso a clústeres

Después de crear una ACL y agregar usuarios, el paso final para implementar las ACL es asignar la ACL a un clúster.

Asignación de listas de control de acceso a los clústeres mediante la consola

Para agregar una ACL a un clúster mediante el AWS Management Console, consulteCreación de un clúster de MemoryDB.

Asignación de listas de control de acceso a clústeres mediante AWS CLI

La siguiente AWS CLI operación crea un clúster con el cifrado en tránsito (TLS) activado y el acl-name parámetro con el valor. my-acl-name Reemplace el grupo de subredes subnet-group por otro existente.

Parámetros clave
  • --engine-version: debe ser 6.2.

  • --tls-enabled: se utiliza para la autenticación y para asociar una ACL.

  • --acl-name: este valor proporciona listas de control de acceso compuestas por usuarios con permisos de acceso especificados para el clúster.

Para Linux, macOS o Unix:

aws memorydb create-cluster \ --cluster-name "new-cluster" \ --description "new-cluster" \ --engine-version "6.2" \ --node-type db.r6g.large \ --tls-enabled \ --acl-name "new-acl-1" \ --subnet-group-name "subnet-group"

Para Windows:

aws memorydb create-cluster ^ --cluster-name "new-cluster" ^ --cluster-description "new-cluster" ^ --engine-version "6.2" ^ --node-type db.r6g.large ^ --tls-enabled ^ --acl-name "new-acl-1" ^ --subnet-group-name "subnet-group"

La siguiente AWS CLI operación modifica un clúster con el cifrado en tránsito (TLS) habilitado y el acl-name parámetro con el valor. new-acl-2

Para Linux, macOS o Unix:

aws memorydb update-cluster \ --cluster-name cluster-1 \ --acl-name "new-acl-2"

Para Windows:

aws memorydb update-cluster ^ --cluster-name cluster-1 ^ --acl-name "new-acl-2"