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.
Migración de la autenticación basada en contraseñas (AUTH) a la autenticación de IAM
En esta guía, se describe cómo migrar su caché sin servidor o clúster ElastiCache basado en nodos de Amazon de la autenticación basada en contraseñas (AUTH) a AWS Identity and Access Management la autenticación (IAM) sin interrumpir el servicio.
nota
Recomendamos probar esta migración en un entorno que no sea de producción antes de aplicar los cambios a su entorno de producción.
Descripción general de
La autenticación de IAM proporciona una seguridad mejorada al eliminar la necesidad de contraseñas de larga duración. En su lugar, las aplicaciones generan identificadores de autenticación de corta duración (válidos durante un máximo de 15 minutos) mediante el proceso de firma de la versión 4 de AWS Signature.
Requisitos previos
Antes de comenzar, verifique lo siguiente:
-
La memoria caché ejecuta Redis OSS 7.0 o posterior, o Valkey. La autenticación de IAM no es compatible con las versiones anteriores del motor.
-
In-transit el cifrado (TLS) está activado en la memoria caché. La autenticación de IAM requiere TLS. Para obtener más información, consulte ElastiCache cifrado en tránsito (TLS).
-
Dispone de los permisos de IAM necesarios para crear usuarios y modificar grupos de usuarios. Para obtener más información, consulte Cómo ElastiCache funciona Amazon con IAM.
-
El rol o usuario de IAM que utiliza la aplicación tiene una política de IAM que permite la
elasticache:Connectacción para la caché de destino y el usuario de IAM. Para obtener más información, consulte Autenticación con IAM. -
No se aplican limitaciones de autenticación de IAM adicionales a su aplicación. Para ver la lista completa de limitaciones, consulteAutenticación con IAM.
Proceso de migración
El proceso de migración implica crear un sistema basado en una contraseña y un IAM-authenticated usuario, comprobar la conectividad y, a continuación, hacer la transición de las aplicaciones a la autenticación de IAM.
Paso 1: Crear usuarios
Cree dos ElastiCache usuarios para que la memoria caché admita la autenticación basada en contraseñas y la autenticación de IAM durante el período de migración.
Cree un usuario de autenticación basado en contraseña
nota
Si ya ha configurado un usuario basado en contraseña, puede omitir la creación de uno nuevo y utilizar el usuario existente.
Use el siguiente AWS CLI comando para crear un usuario basado en contraseña.
Para Linux, macOS o Unix:
aws elasticache create-user \ --user-id<user-id>\ --user-name default \ --engine<engine>\ --passwords "<your-existing-auth-password>" \ --access-string "on ~* +@all"
Para Windows:
aws elasticache create-user ^ --user-id<user-id>^ --user-name default ^ --engine<engine>^ --passwords "<your-existing-auth-password>" ^ --access-string "on ~* +@all"
Reemplace:
<user-id>— Un identificador único para este usuario.<engine>— El motor que utiliza tu caché:valkeyoredis.<your-existing-auth-password>— El token AUTH actualmente configurado en tu caché.
Crea un usuario IAM-authenticated
Utilice el siguiente AWS CLI comando para crear un IAM-authenticated usuario.
Para Linux, macOS o Unix:
aws elasticache create-user \ --user-id<iam-user-id>\ --user-name<iam-user-name>\ --authentication-mode Type=iam \ --engine<engine>\ --access-string "on ~* +@all"
Para Windows:
aws elasticache create-user ^ --user-id<iam-user-id>^ --user-name<iam-user-name>^ --authentication-mode Type=iam ^ --engine<engine>^ --access-string "on ~* +@all"
Reemplace:
<iam-user-id>— Un identificador único para el usuario de IAM.<iam-user-name>— El nombre de usuario del usuario de IAM.<engine>— El motor que utiliza tu caché:valkeyoredis.
Paso 2: Crear y adjuntar un grupo de usuarios
Si ya tiene un grupo de usuarios que contiene su usuario basado en contraseña, agréguelo a ese grupo existente: IAM-authenticated
Para Linux, macOS o Unix:
aws elasticache modify-user-group \ --user-group-id<user-group-id>\ --user-ids-to-add<iam-user-id>
Para Windows:
aws elasticache modify-user-group ^ --user-group-id<user-group-id>^ --user-ids-to-add<iam-user-id>
Reemplace:
<user-group-id>— El ID de su grupo de usuarios existente.<iam-user-id>— El seudónimo del IAM-authenticated usuario creado en el paso 1.
A continuación, diríjase a Paso 3: Verificar ambos métodos de autenticación.
De lo contrario, cree un nuevo grupo de usuarios, añada ambos usuarios y adjunte el grupo a la memoria caché.
Utilice los siguientes AWS CLI comandos para crear un grupo de usuarios con ambos usuarios:
Para Linux, macOS o Unix:
aws elasticache create-user-group \ --user-group-id<user-group-id>\ --engine<engine>\ --user-ids<user-id><iam-user-id>
Para Windows:
aws elasticache create-user-group ^ --user-group-id<user-group-id>^ --engine<engine>^ --user-ids<user-id><iam-user-id>
Reemplace:
<user-group-id>— Un identificador único para el grupo de usuarios.<engine>— El motor que utiliza tu caché:valkeyoredis.<user-id>,<iam-user-id>— Los ID de usuario creados en el paso 1.
A continuación, modifique la memoria caché para usar el nuevo grupo de usuarios.
Para clústeres basados en nodos:
Para Linux, macOS o Unix:
aws elasticache modify-replication-group \ --replication-group-id<replication-group-id>\ --auth-token-update-strategy DELETE \ --user-group-ids-to-add<user-group-id>
Para Windows:
aws elasticache modify-replication-group ^ --replication-group-id<replication-group-id>^ --auth-token-update-strategy DELETE ^ --user-group-ids-to-add<user-group-id>
Reemplace:
<replication-group-id>— El ID de su grupo de replicación.<user-group-id>— El ID del grupo de usuarios que creó anteriormente.
Para cachés sin servidor:
Para Linux, macOS o Unix:
aws elasticache modify-serverless-cache \ --serverless-cache-name<serverless-cache-name>\ --user-group-id<user-group-id>
Para Windows:
aws elasticache modify-serverless-cache ^ --serverless-cache-name<serverless-cache-name>^ --user-group-id<user-group-id>
Reemplace:
<serverless-cache-name>— El nombre de la caché sin servidor.<user-group-id>— El ID del grupo de usuarios que creó anteriormente.
Paso 3: Verificar ambos métodos de autenticación
Tras completar el paso 2, la memoria caché admite ambos métodos de autenticación. Compruebe que las aplicaciones se puedan conectar mediante ambos métodos antes de continuar.
-
Las aplicaciones que utilizan la autenticación basada en contraseña pueden seguir conectándose con la contraseña.
-
Las aplicaciones configuradas para la autenticación de IAM se pueden conectar mediante tokens de IAM.
Paso 4: Conectarse con IAM
Genere un token de autenticación de IAM
Genere un token de autenticación de IAM de corta duración mediante una solicitud prefirmada de AWS SiGv4. En el siguiente ejemplo de Python se muestra la generación de tokens.
import boto3 from botocore.auth import SigV4QueryAuth from botocore.awsrequest import AWSRequest cache_name = "<cache-name>" user = "<username>" region = "<region>" expires = 900 session = boto3.Session() credentials = session.get_credentials().get_frozen_credentials() req = AWSRequest( method="GET", url=f"http://{cache_name}/", params={"Action": "connect", "User": user} ) SigV4QueryAuth(credentials, "elasticache", region, expires=expires).add_auth(req) token = req.url.replace("http://", "") print(token)
nota
El token generado es válido durante un máximo de 15 minutos a partir de su creación.
Conéctese mediante valkey-cli
Conéctate a tu ElastiCache caché mediante el token generado. Puedes usar cualquiera valkey-cli de los dos redis-cli para conectarte a los clústeres de Valkey. Para los clústeres OSS de Redis, utilice. redis-cli
valkey-cli -h<host>-p 6379 --tls
Para los clústeres habilitados para el modo de clúster, añada la --cluster marca:
valkey-cli -h<host>-p 6379 --tls --cluster
A continuación, autentifíquese con el siguiente comando:
AUTH<username><token>
Reemplace:
<host>— El punto final de la caché.<username>— El nombre de usuario del IAM-authenticated usuario.<token>— El token de autenticación de IAM que generaste.
Resultado previsto:
OK
Ejecute el siguiente comando para validar el nombre de usuario:
ACL WHOAMI
Paso 5: Integración de aplicaciones
Para las aplicaciones Java, utilice la cadena de proveedores de AWS credenciales predeterminada para generar credenciales de seguridad temporales. Para obtener más información, consulte Autenticación con IAM. Para otros lenguajes, genere el token de autenticación de IAM mediante el proceso de AWS firma de la versión 4 de Signature y páselo como contraseña en el AUTH comando del cliente.
Completar la migración
Una vez que las aplicaciones puedan conectarse mediante la autenticación de IAM, complete los siguientes pasos para finalizar la migración.
Paso 1: Configure la autenticación de IAM con respaldo
Antes de eliminar el usuario basado en contraseña, actualice el código de la aplicación para utilizar la autenticación de IAM como método principal y, al mismo tiempo, mantenga el usuario basado en contraseña como alternativa.
En el código de tu aplicación:
-
Configure su cliente para que se autentique utilizando IAM-generated tokens como método principal.
-
Añada un mecanismo alternativo para que, si se produce un error en la autenticación de IAM (por ejemplo, debido a la caducidad del token o a un error de generación), el cliente vuelva a intentarlo con la credencial AUTH basada en una contraseña.
-
Registra todos los intentos de autenticación, incluidos los intentos alternativos y los reintentos, para poder controlar si alguna conexión recurre a la autenticación basada en contraseñas.
Paso 2: Supervise y verifique
Revisa los registros de tu aplicación IamAuthenticationExpirations y las CloudWatch métricas de IamAuthenticationThrottling Amazon durante al menos 24 a 48 horas para confirmar que todas las conexiones se realizan a través de IAM.
Un valor distinto de cero para cualquiera de las métricas justifica una investigación:
-
IamAuthenticationExpirations— Una conexión autenticada por IAM se desconecta automáticamente después de 12 horas. La conexión se puede prolongar enviando unHELLOcomandoAUTHo con un nuevo token de autenticación de IAM. -
IamAuthenticationThrottling— Indica que hay demasiadas solicitudes de autenticación, lo que podría significar que tu aplicación está generando los tokens de forma demasiado agresiva o que tiene problemas de agrupación de conexiones.
En el caso de los clústeres basados en nodos, puede realizar comprobaciones adicionales a nivel de motor:
-
ACL LOG— Compruebe si hay intentos de autenticación fallidos. Busque entradas conreason=auth. -
CLIENT LIST— Verificar los usuarios conectados. Marque eluser=campo para confirmar que los clientes utilizan el usuario de IAM.
ACL LOGy solo CLIENT LIST están disponibles en clústeres basados en nodos. Para las implementaciones ElastiCache sin servidor, confíe en el registro del lado de la aplicación y en las métricas de Amazon. CloudWatch
Paso 3: Eliminar el usuario basado en contraseña
Una vez que confirme que todas las aplicaciones utilizan la autenticación de IAM, elimine el usuario basado en contraseña del grupo de usuarios.
Cachés de Valkey
Elimine directamente el usuario basado en contraseña:
Para Linux, macOS o Unix:
aws elasticache modify-user-group \ --user-group-id<user-group-id>\ --user-ids-to-remove<password-user-id>
Para Windows:
aws elasticache modify-user-group ^ --user-group-id<user-group-id>^ --user-ids-to-remove<password-user-id>
Cachés OSS de Redis
En el caso de las cachés OSS de Redis, el grupo de usuarios debe contener siempre un usuario con el nombre de usuario. default Si el usuario basado en contraseña que creó en el paso 1 tiene el nombre de usuariodefault, debe crear un usuario marcador de posición desactivado para sustituirlo antes de eliminarlo:
Para Linux, macOS o Unix:
aws elasticache create-user \ --user-id<disabled-default-id>\ --user-name default \ --engine redis \ --no-password-required \ --access-string "off ~* -@all"
Para Windows:
aws elasticache create-user ^ --user-id<disabled-default-id>^ --user-name default ^ --engine redis ^ --no-password-required ^ --access-string "off ~* -@all"
A continuación, añada el usuario deshabilitado al grupo y elimine el usuario basado en contraseña:
Para Linux, macOS o Unix:
aws elasticache modify-user-group \ --user-group-id<user-group-id>\ --user-ids-to-add<disabled-default-id>\ --user-ids-to-remove<password-user-id>
Para Windows:
aws elasticache modify-user-group ^ --user-group-id<user-group-id>^ --user-ids-to-add<disabled-default-id>^ --user-ids-to-remove<password-user-id>
Si el usuario basado en contraseña que creó en el paso 1 no tiene el nombre de usuariodefault, puede eliminarlo directamente con el mismo comando que se muestra arriba para las cachés de Valkey.
Reemplace:
<disabled-default-id>— Un identificador único para el usuario marcador de posición desactivado (solo Redis OSS).<user-group-id>— El ID del grupo de usuarios asociado a la memoria caché.<password-user-id>— El seudónimo del usuario basado en contraseña que se va a eliminar.
nota
No elimine el usuario basado en contraseña después de eliminarlo del grupo de usuarios. Manténgala disponible en caso de que necesite volver a la autenticación basada en contraseñas.
Paso 4: Confirma la operación posterior a la eliminación
Tras eliminar el usuario basado en contraseña del grupo de usuarios, supervisa la métrica de AmazonAuthenticationFailures. CloudWatch Un valor continuo de cero confirma que no se han producido errores de autenticación, incluidos los intentos residuales basados en contraseñas. Configura una CloudWatch alarma en esta métrica para detectar intentos inesperados.
En el caso de los clústeres basados en nodos, también puede verificarlos mediante ACL LOG y. CLIENT LIST En el caso de las cachés sin servidor, confíe en los registros y las métricas de la aplicación. CloudWatch
Procedimiento de reversión
Re-add el usuario basado en contraseña al grupo de usuarios y, a continuación, restaure la autenticación basada en contraseña en la aplicación mientras investiga.
Para las cachés de Valkey:
Para Linux, macOS o Unix:
aws elasticache modify-user-group \ --user-group-id<user-group-id>\ --user-ids-to-add<password-user-id>
Para Windows:
aws elasticache modify-user-group ^ --user-group-id<user-group-id>^ --user-ids-to-add<password-user-id>
Para las cachés OSS de Redis en las que el usuario basado en la contraseña no tiene el nombre default de usuario, utilice el mismo comando anterior.
En el caso de las cachés OSS de Redis en las que creó un usuario marcador de posición desactivadoPaso 3: Eliminar el usuario basado en contraseña, añada el usuario basado en contraseña y elimine el usuario marcador de posición desactivado en una sola operación:
Para Linux, macOS o Unix:
aws elasticache modify-user-group \ --user-group-id<user-group-id>\ --user-ids-to-add<password-user-id>\ --user-ids-to-remove<disabled-default-id>
Para Windows:
aws elasticache modify-user-group ^ --user-group-id<user-group-id>^ --user-ids-to-add<password-user-id>^ --user-ids-to-remove<disabled-default-id>
Reemplace:
<user-group-id>— El ID del grupo de usuarios asociado a la caché.<password-user-id>— El seudónimo del usuario basado en la contraseña que se va a volver a añadir.<disabled-default-id>— El seudónimo del usuario marcador de posición desactivado (solo Redis OSS).