Configuración de la rotación automática para los secretos de AWS Secrets Manager que no son de bases de datos - AWS Secrets Manager

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.

Configuración de la rotación automática para los secretos de AWS Secrets Manager que no son de bases de datos

En este tutorial, se describe cómo configurar los secretos de Rotación con función de Lambda que no son de bases de datos. La rotación es el proceso de actualización periódica de un secreto. Cuando se rota un secreto, se actualizan las credenciales tanto en el secreto como en la base de datos o el servicio para el que está destinado el secreto.

En el caso de los secretos de bases de datos, consulte Rotación automática de secretos de bases de datos (consola).

aviso

Para activar la rotación automática, debe tener permisos para crear el rol de ejecución de IAM para la función de rotación de Lambda y adjuntarle una política de permisos. Necesita ambos permisos, iam:CreateRole y iam:AttachRolePolicy. Conceder estos permisos permite que una identidad se conceda a sí misma cualquier permiso.

Paso 1: crear una función de rotación genérica

Para comenzar, cree una función de rotación de Lambda. No tendrá el código para rotar su secreto, por lo que tendrá que escribirlo en un paso posterior. Para obtener más información sobre cómo funciona una función de rotación, consulte Funciones de rotación de Lambda.

En las regiones compatibles, puede utilizar AWS Serverless Application Repository para crear la función a partir de una plantilla. Para obtener una lista de las regiones admitidas, consulte las preguntas frecuentes sobre AWS Serverless Application Repository. En otras regiones, se crea la función desde cero y se copia el código de la plantilla en la función.

Crear una función de rotación genérica
  1. Para determinar si AWS Serverless Application Repository es compatible en su región, consulte Puntos de conexión y las cuotas de AWS Serverless Application Repository en la Referencia general de AWS.

  2. Realice una de las siguientes acciones:

    • Si AWS Serverless Application Repository es compatible en su región:

      1. En la consola de Lambda, elija Aplicaciones y, a continuación, seleccione Crear aplicación.

      2. En la página Crear aplicación, seleccione la pestaña Aplicación sin servidor.

      3. En el cuadro de búsqueda, en Aplicaciones públicas, escriba SecretsManagerRotationTemplate.

      4. Seleccione Mostrar aplicaciones que crean roles de IAM personalizados o políticas de recursos.

      5. Elija el mosaico SecretsManagerRotationTemplate.

      6. En la página Revisar, configurar e implementar, en el mosaico Configuración de la aplicación, complete los campos obligatorios.

        • Para el punto de conexión, introduzca el punto de conexión de su región, incluido https://. Para obtener una lista de puntos de enlace , consulte AWS Secrets Manager puntos finales.

        • Para colocar la función de Lambda en una VPC, incluya vpcSecurityGroupIds y vpcSubnetIds.

      7. Elija Implementar.

    • Si AWS Serverless Application Repository no se admite en su región:

      1. En la consola de Lambda, seleccione Funciones y elija Crear función.

      2. En la página Create function (Crear función), proceda del modo siguiente:

        1. Elija Crear desde cero.

        2. En Function name (Nombre de la función), ingrese un nombre para la función de rotación.

        3. En Runtime (Tiempo de ejecución), elija Python 3.9.

        4. Elija Crear función.

Paso 2: escribir el código de la función de rotación

En este paso, se escribe el código que actualiza el secreto y el servicio o la base de datos para el que está destinado el secreto. Para obtener información sobre lo que hace una función de rotación, incluidos consejos sobre cómo escribir su propia función de rotación, consulte Funciones de rotación de Lambda. También puede utilizar Plantillas de función de rotación como referencia.

Paso 3: configurar el secreto para la rotación

En este paso, establecerá una programación de rotación para su secreto y conectará la función de rotación del secreto.

Configuración de la rotación y creación de una función de rotación vacía
  1. Abra la consola de Secrets Manager en https://console.aws.amazon.com/secretsmanager/.

  2. En la página Secrets (Secretos), elija el secreto.

  3. En la página Secret details (Detalles del secreto), en la sección Rotation configuration (Configuración de la rotación), elija Edit rotation (Editar rotación). En el cuadro de diálogo Edit rotation configuration (Configuración para editar la rotación), haga lo siguiente:

    1. Active Automatic rotation (Rotación automática).

    2. En Rotation schedule (Programación de rotación), ingrese la programación en zona horaria UTC en Schedule expression builder (Generador de expresiones de programación) o como una expresión de programación. Secrets Manager almacena su programación como una expresión rate() o cron(). El periodo de rotación se inicia a medianoche de forma automática, excepto si se especifica una Start time (Hora de inicio). Se puede rotar un secreto con una frecuencia máxima de cuatro horas. Para obtener más información, consulte Programación de rotación.

    3. (Opcional) En Window duration (Duración del periodo), elija el tiempo durante el cual desea que Secrets Manager rote su secreto, por ejemplo, 3h, para un periodo de tres horas. El periodo no debe prolongarse hasta el siguiente periodo de rotación. Si no se especifica Window duration (Duración del periodo) para una programación de rotación en horas, el periodo concluye automáticamente al cabo de una hora. Para una programación de rotación en días, el periodo concluye automáticamente al final del día.

    4. (Opcional) Elija Rotate immediately when the secret is stored (Rotar inmediatamente cuando se almacene el secreto) a fin de rotar su secreto en cuanto guarde los cambios. Si desmarca la casilla de verificación, la primera rotación comenzará conforme a la programación establecida.

    5. En Función de rotación, elija la función de Lambda que creó en el paso 1.

    6. Seleccione Guardar.

Paso 4: permitir que la función de rotación acceda a Secrets Manager y a la base de datos o al servicio

La función de rotación de Lambda necesita permiso para acceder al secreto en Secrets Manager y también necesita permiso para acceder a su base de datos o servicio. En este paso, concederá estos permisos al rol de ejecución de Lambda. Si el secreto está cifrado con una clave KMS distinta de la Clave administrada de AWS aws/secretsmanager, tiene que conceder permiso al rol de ejecución de Lambda para utilizar la clave. Puede utilizar el contexto de cifrado SecretARN para limitar el uso de la función de descifrado, de modo que el rol de la función de rotación solo tenga acceso para descifrar el secreto que es responsable de rotar. Para ver ejemplos de políticas, consulte Permisos para rotación.

Consulte las instrucciones en Rol de ejecución de Lambda, en la Guía para desarrolladores de AWS Lambda.

Paso 5: permitir que Secrets Manager invoque la función de rotación

Para permitir que Secrets Manager invoque la función de rotación en el programa de rotación que haya configurado, debe conceder el permiso lambda:InvokeFunction a la entidad principal del servicio Secrets Manager en la política de recursos de la función de Lambda.

En la política de recursos de la función de rotación, se recomienda incluir la clave de contexto aws:SourceAccount para poder evitar que Lambda se utilice como suplente confuso. En el caso de algunos servicios de AWS, para evitar un escenario de suplente confuso, AWS recomienda que se utilicen las claves de condición globales aws:SourceArn y aws:SourceAccount. 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 adjuntar una política de recursos a una función de Lambda, consulte Uso de políticas basadas en recursos para Lambda.

La siguiente política permite que Secrets Manager invoque la función de Lambda.

{ "Version": "2012-10-17", "Id": "default", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "secretsmanager.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Condition": { "StringEquals": { "AWS:SourceAccount": "123456789012" } }, "Resource": "LambdaRotationFunctionARN" } ] }

Paso 6: configurar el acceso a la red para la función de rotación

En este paso, se permite que la función de rotación se conecte tanto a Secrets Manager como al servicio o a la base de datos a la que está destinado el secreto. La función de rotación debe poder acceder a ambos para poder rotar el secreto. Consulte Acceso a la red para la función de rotación de Lambda.

Siguientes pasos

Cuando se configuró la rotación en el paso 3, se estableció un cronograma para rotar el secreto. Si la rotación falla cuando está programada, Secrets Manager la intentará realizar varias veces. También puede iniciar una rotación inmediatamente siguiendo las instrucciones que se indican en Rotar un secreto inmediatamente.

Si la rotación falla, consulte Solución de problemas de rotación.