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ña (AUTH) a la autenticación de IAM
En esta guía, se describe cómo migrar tu caché sin servidor o clúster ElastiCache basada en nodos de Amazon de la autenticación basada en contraseñas (AUTH) a la autenticación (IAM) sin interrumpir el servicio. AWS Identity and Access Management
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 tokens de autenticación de corta duración (válidos durante un máximo de 15 minutos) mediante el proceso de AWS firma Signature Version 4.
Requisitos previos
Antes de comenzar, verifique lo siguiente:
-
Su caché ejecuta Redis OSS 7.0 o una versión posterior, o Valkey. La autenticación de IAM no se admite en las versiones anteriores del motor.
-
In-transit el cifrado (TLS) está activado en la 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 usa tu aplicación tiene una política de IAM que permite la
elasticache:Connectacción para la caché y el usuario de IAM de destino. Para obtener más información, consulte Autenticación con IAM. -
No se aplican limitaciones adicionales de autenticación de IAM 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 usuario y un IAM-authenticated usuario basados en una contraseña, verificar 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 su caché admita tanto la autenticación basada en contraseñas como 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 tiene configurado un usuario basado en contraseñas, puede omitir la creación de uno nuevo y usar el usuario existente.
Usa el siguiente AWS CLI comando para crear un usuario basado en una 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 usa tu caché:valkeyoredis.<your-existing-auth-password>— El token de 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 usa 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, añada el IAM-authenticated usuario a ese grupo existente:
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 tu grupo de usuarios actual.<iam-user-id>— El ID de usuario del IAM-authenticated usuario creado en el paso 1.
A continuación, diríjase a Paso 3: Verifique 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é.
Use 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 usa tu caché:valkeyoredis.<user-id>,<iam-user-id>— Los ID de usuario creados en el paso 1.
A continuación, modifique la 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 su caché sin servidor.<user-group-id>— El ID del grupo de usuarios que creaste anteriormente.
Paso 3: Verifique 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ñas 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: Conéctese 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 AWS SigV4 prefirmada. El siguiente ejemplo de Python 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 desde su creación.
Conéctese mediante valkey-cli
Conéctese a su ElastiCache caché con el token generado. Puedes usar uno de los dos valkey-cli o redis-cli para conectarte a los clústeres de Valkey. Para los clústeres de Redis OSS, utilice. redis-cli
valkey-cli -h<host>-p 6379 --tls
Para los clústeres habilitados para el modo clúster, añada la --cluster marca:
valkey-cli -h<host>-p 6379 --tls --cluster
A continuación, autentícate con el siguiente comando:
AUTH<username><token>
Reemplace:
<host>— El punto final de su 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
En el caso de 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 idiomas, genere el token de autenticación de IAM mediante el proceso de AWS firma Signature Version 4 y páselo como contraseña en el AUTH comando de su cliente.
Completar la migración
Una vez que las aplicaciones puedan conectarse mediante la autenticación de IAM, complete los pasos que se indican a continuación para finalizar la migración.
Paso 1: Configure la autenticación de IAM con respaldo
Antes de eliminar el usuario basado en la 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, mantener el usuario basado en la contraseña como alternativa.
En el código de tu aplicación:
-
Configure su cliente para que se autentique mediante IAM-generated tokens como método principal.
-
Agregue un mecanismo alternativo para que, si la autenticación de IAM falla (por ejemplo, debido a la caducidad del token o a un error de generación), el cliente lo vuelva a intentar con la credencial AUTH basada en la contraseña.
-
Registra todos los intentos de autenticación, incluidos los intentos alternativos y los reintentos, para comprobar si alguna conexión recurre a la autenticación basada en contraseñas.
Paso 2: Supervisar y verificar
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 puede indicar que la aplicación está generando tokens de forma demasiado agresiva o que tiene problemas para agrupar las conexiones.
En el caso de los clústeres basados en nodos, puedes realizar comprobaciones adicionales a nivel del motor:
-
ACL LOG— Compruebe si hay intentos de autenticación fallidos. Busque entradas conreason=auth. -
CLIENT LIST— Verificar los usuarios conectados. Compruebe 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 los registros del lado de las aplicaciones y en las métricas de Amazon. CloudWatch
Paso 3: Eliminar el usuario basado en la contraseña
Una vez que confirme que todas las aplicaciones utilizan la autenticación de IAM, elimine el usuario basado en la contraseña del grupo de usuarios.
Cachés de Valley
Elimine directamente el usuario basado en la 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 de Redis OSS
En el caso de las cachés de Redis OSS, el grupo de usuarios siempre debe contener un usuario con ese 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 reemplazarlo 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 la 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 mediante el mismo comando que se muestra anteriormente para los cachés de Valkey.
Reemplace:
<disabled-default-id>— Un identificador único para el usuario del marcador de posición desactivado (solo en Redis OSS).<user-group-id>— El ID del grupo de usuarios asociado a su caché.<password-user-id>— El ID de usuario del usuario basado en contraseña que se va a eliminar.
nota
No elimine el usuario basado en la contraseña después de eliminarlo del grupo de usuarios. Manténgalo disponible en caso de que necesite volver a la autenticación basada en contraseñas.
Paso 4: Confirma después de la eliminación
Tras eliminar del grupo de usuarios al usuario basado en la contraseña, monitoriza la métrica de Amazon. AuthenticationFailures CloudWatch Un valor sostenido de cero confirma que no se ha producido ningún error de autenticación, incluidos los intentos residuales basados en contraseñas. Configure una CloudWatch alarma en esta métrica para detectar intentos inesperados.
En el caso de los clústeres basados en nodos, también puedes verificarlo mediante ACL LOG y. CLIENT LIST En el caso de las cachés sin servidor, confíe en los registros y las métricas del lado de la aplicación. CloudWatch
Procedimiento de reversión
Re-add del usuario basado en la contraseña al grupo de usuarios y, a continuación, restaure la autenticación basada en la contraseña en su aplicación mientras investiga.
Para los 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 de Redis OSS 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 memorias caché de Redis OSS en las que ha creado un usuario de marcador de posición inhabilitadoPaso 3: Eliminar el usuario basado en la contraseña, añada el usuario basado en la contraseña y elimine el usuario de 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 identificador del grupo de usuarios asociado a tu caché.<password-user-id>— El ID de usuario del usuario basado en la contraseña que se va a volver a añadir.<disabled-default-id>— El identificador de usuario del usuario del marcador de posición desactivado (solo en Redis OSS).