

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.

# Configurar la rotación automática para secretos que no son de bases de datos AWS Secrets Manager
<a name="rotate-secrets_turn-on-for-other"></a>

En este tutorial, se describe cómo configurar los secretos de [Rotación con función de Lambda](rotate-secrets_lambda.md) 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)](rotate-secrets_turn-on-for-db.md).

**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.

**Topics**
+ [Paso 1: crear una función de rotación genérica](#rotate-secrets_turn-on-for-other_create)
+ [Paso 2: escribir el código de la función de rotación](#rotate-secrets_turn-on-for-other_write)
+ [Paso 3: configurar el secreto para la rotación](#rotate-secrets_turn-on-for-other_configure)
+ [Paso 4: permitir que la función de rotación acceda a Secrets Manager y a la base de datos o al servicio](#rotate-secrets_turn-on-for-other_perms)
+ [Paso 5: permitir que Secrets Manager invoque la función de rotación](#rotate-secrets_turn-on-for-other_perms2)
+ [Paso 6: configurar el acceso a la red para la función de rotación](#rotate-secrets_turn-on-for-other_network)
+ [Siguientes pasos](#rotate-secrets_turn-on-for-other_stepnext)

## Paso 1: crear una función de rotación genérica
<a name="rotate-secrets_turn-on-for-other_create"></a>

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](rotate-secrets_lambda-functions.md).

En las regiones compatibles, puede utilizarla AWS Serverless Application Repository para crear la función a partir de una plantilla. Para obtener una lista de las regiones admitidas, consulte [AWS Serverless Application Repository FAQs](https://aws.amazon.com/serverless/serverlessrepo/faqs/). 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 los [AWS Serverless Application Repository puntos finales y las cuotas](https://docs.aws.amazon.com/general/latest/gr/serverlessrepo.html) en la *Referencia AWS general*. 

1. Realice una de las siguientes acciones:
   + Si AWS Serverless Application Repository es compatible en tu región:

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

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

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

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

     1. Elija el mosaico **SecretsManagerRotationTemplate**.

     1. 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](asm_access.md#endpoints).
        + **Para colocar la función Lambda en una VPC, incluya los identificadores y. vpcSecurityGroup **vpcSubnetIds****

     1. Elija **Implementar**.
   + Si AWS Serverless Application Repository no es compatible en tu región:

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

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

        1. Elija **Crear desde cero**.

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

        1. Para **Runtime**, elija **Python 3.10**.

        1. Seleccione **Creación de función**.

## Paso 2: escribir el código de la función de rotación
<a name="rotate-secrets_turn-on-for-other_write"></a>

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](rotate-secrets_lambda-functions.md). También puede utilizar [Plantillas de función de rotación](reference_available-rotation-templates.md) como referencia.

## Paso 3: configurar el secreto para la rotación
<a name="rotate-secrets_turn-on-for-other_configure"></a>

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/](https://console.aws.amazon.com/secretsmanager/).

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

1. 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).

   1. 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](rotate-secrets_schedule.md).

   1. (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. 

   1. (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.

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

   1. Seleccione **Save**.

## Paso 4: permitir que la función de rotación acceda a Secrets Manager y a la base de datos o al servicio
<a name="rotate-secrets_turn-on-for-other_perms"></a>

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](security-encryption.md#security-encryption-encryption-context) 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](rotating-secrets-required-permissions-function.md).

Consulte las instrucciones en [Rol de ejecución de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html), en la *Guía para desarrolladores de AWS Lambda *.

## Paso 5: permitir que Secrets Manager invoque la función de rotación
<a name="rotate-secrets_turn-on-for-other_perms2"></a>

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 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) para poder evitar que Lambda se utilice como [suplente confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). En el caso de algunos AWS servicios, para evitar el confuso escenario adjunto, se AWS recomienda utilizar tanto la clave de condición como la [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)clave de condición [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-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 adjuntar una política de recursos a una función de Lambda, consulte [Uso de políticas basadas en recursos para Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html).

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

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "default",
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "Service": "secretsmanager.amazonaws.com"
            },
        "Action": "lambda:InvokeFunction",
        "Condition": {
            "StringEquals": {
                "AWS:SourceAccount": "123456789012"
            }
        },
        "Resource": "arn:aws:lambda:us-east-1:123456789012:function:function-name"
    }
    ]
}
```

------

## Paso 6: configurar el acceso a la red para la función de rotación
<a name="rotate-secrets_turn-on-for-other_network"></a>

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 AWS Lambda de rotación](rotation-function-network-access.md).

## Siguientes pasos
<a name="rotate-secrets_turn-on-for-other_stepnext"></a>

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](rotate-secrets_now.md).

Si la rotación falla, consulte [Solución de problemas de rotación](troubleshoot_rotation.md).