Rotación automática de contraseñas para usuarios - Amazon ElastiCache (RedisOSS)

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.

Rotación automática de contraseñas para usuarios

Con AWS Secrets Manager, puedes reemplazar las credenciales codificadas de tu código (incluidas las contraseñas) por una llamada a la API a Secrets Manager para recuperar el secreto mediante programación. Esto ayuda a garantizar la integridad del secreto si alguien examina el código, dado que el secreto sencillamente no está allí. Asimismo, puede configurar Secrets Manager para rotar el secreto automáticamente de acuerdo con la programación que especifique. Esto le permite reemplazar secretos a largo plazo con secretos a corto plazo, lo que contribuye a reducir significativamente el riesgo de peligro.

Con Secrets Manager, puede rotar automáticamente sus contraseñas ElastiCache (es decir, secretas) (es decir, secretas) (es decir, secretas) automáticamente mediante una AWS Lambda función que proporciona Secrets Manager.

Para obtener más información al respecto AWS Secrets Manager, consulte ¿Qué es? AWS Secrets Manager

¿Cómo ElastiCache usa los secretos

Con Redis OSS 6 ElastiCache (Redis OSS) se introdujo Control de acceso basado en roles (RBAC) para proteger el clúster de Redis OSS. Esta característica permite limitar determinadas conexiones en términos de los comandos que se pueden ejecutar y las claves a las que se puede acceder. Con RBAC, mientras el cliente crea un usuario con contraseñas, los valores de la contraseña se deben ingresar manualmente en texto no cifrado y estar visibles para el operador.

Con Secrets Manager, las aplicaciones obtienen la contraseña de Secrets Manager en lugar de ingresarla manualmente y almacenarla en la configuración de la aplicación. Para obtener información sobre cómo hacerlo, consulte Cómo se asocian ElastiCache los usuarios al secreto.

El uso de secretos conlleva un coste. Para obtener información sobre precios, consulte Precios de AWS Secrets Manager.

Cómo se asocian ElastiCache los usuarios al secreto

Secrets Manager guardará una referencia del usuario asociado en el campo SecretString del secreto. No habrá ninguna referencia al secreto desde ElastiCache un lado.

{ "password": "strongpassword", "username": "user1", "user_arn": "arn:aws:elasticache:us-east-1:xxxxxxxxxx918:user:user1" //this is the bond between the secret and the user }

Función de rotación de Lambda

Para habilitar la rotación automática de contraseñas de Secrets Manager, se creará una función de Lambda que interactuará con la API modificar-usuario para actualizar las contraseñas del usuario.

Para obtener información sobre cómo funciona esto, consulte Cómo funciona la rotación.

nota

En el caso de algunos AWS servicios, para evitar el confuso escenario de los suplentes, se AWS recomienda utilizar tanto la aws:SourceArn clave de condición como la clave de condición aws:SourceAccount global. No obstante, si se incluye la condición aws:SourceArn en la política de la función de rotación, la función de rotación solo se puede utilizar para rotar el secreto especificado por ese ARN. Se recomienda incluir solo la clave de contexto aws:SourceAccount, para poder utilizar la función de rotación para varios secretos.

Para cualquier problema que puedas encontrar, consulta Solucionar problemas de rotación de AWS Secrets Manager.

Cómo crear un ElastiCache usuario y asociarlo a Secrets Manager

Los siguientes pasos muestran cómo crear un usuario y asociarlo con Secrets Manager:

  1. Crear un usuario inactivo

    Para Linux, macOS o Unix:

    aws elasticache create-user \ --user-id user1 \ --user-name user1 \ --engine "REDIS" \ --no-password \ // no authentication is required --access-string "*off* +get ~keys*" // this disables the user

    Para Windows:

    aws elasticache create-user ^ --user-id user1 ^ --user-name user1 ^ --engine "REDIS" ^ --no-password ^ // no authentication is required --access-string "*off* +get ~keys*" // this disables the user

    Verá una respuesta similar a la siguiente:

    { "UserId": "user1", "UserName": "user1", "Status": "active", "Engine": "redis", "AccessString": "off ~keys* -@all +get", "UserGroupIds": [], "Authentication": { "Type": "no_password" }, "ARN": "arn:aws:elasticache:us-east-1:xxxxxxxxxx918:user:user1" }
  2. Crear un secreto

    Para Linux, macOS o Unix:

    aws secretsmanager create-secret \ --name production/ec/user1 \ --secret-string \ '{ "user_arn": "arn:aws:elasticache:us-east-1:123456xxxx:user:user1", "username":"user1" }'

    Para Windows:

    aws secretsmanager create-secret ^ --name production/ec/user1 ^ --secret-string ^ '{ "user_arn": "arn:aws:elasticache:us-east-1:123456xxxx:user:user1", "username":"user1" }'

    Verá una respuesta similar a la siguiente:

    { "ARN": "arn:aws:secretsmanager:us-east-1:123456xxxx:secret:production/ec/user1-eaFois", "Name": "production/ec/user1", "VersionId": "aae5b963-1e6b-4250-91c6-ebd6c47d0d95" }
  3. Configurar una función de Lambda para rotar la contraseña

    1. Inicie sesión en la consola Lambda AWS Management Console y ábrala en https://console.aws.amazon.com/lambda/

    2. Elija Functions (Funciones) en el panel de navegación y, a continuación, elija la función que ha creado. Elija el nombre de la función, no la casilla de verificación situada a la izquierda.

    3. Elija la pestaña Configuración.

    4. En General configuration (Configuración general), elija Edit (Editar) y, a continuación, establezca Timeout (Tiempo de espera) en al menos 12 minutos.

    5. Seleccione Guardar.

    6. Elija Environment variables (Variables de entorno) y, a continuación, establezca lo siguiente:

      1. SECRETS_MANAGER_ENDPOINT: https://secretsmanager.REGION.amazonaws.com

      2. SECRET_ARN: el nombre de recurso de Amazon (ARN) del secreto que creó en el paso 2.

      3. USER_NAME: nombre de usuario del usuario, ElastiCache

      4. Seleccione Guardar.

    7. Elegir Permissions (Permisos)

    8. En Execution role (Rol de ejecución), elija el nombre del rol de la función de Lambda para verla en la consola de IAM.

    9. La función de Lambda necesitará el siguiente permiso para modificar los usuarios y establecer la contraseña:

      ElastiCache

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:DescribeUsers", "elasticache:ModifyUser" ], "Resource": "arn:aws:elasticache:us-east-1:xxxxxxxxxx918:user:user1" } ] }

      Secrets Manager 

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecretVersionStage" ], "Resource": "arn:aws:secretsmanager:us-east-1:xxxxxxxxxxx:secret:XXXX" }, { "Effect": "Allow", "Action": "secretsmanager:GetRandomPassword", "Resource": "*" } ] }
  4. Configurar la rotación de secretos de Secrets Manager

    1. Uso de AWS Management Console, consulte Configurar la rotación automática de los AWS secretos de Secrets Manager mediante la consola

      Para obtener más información sobre la configuración de un programa de rotación, consulte Programación de expresiones en la rotación de Secrets Manager.

    2. Con el AWS CLI, consulte Configurar la rotación automática para AWS Secrets Manager usar el AWS Command Line Interface