¿Cómo creo una función de rotación con una información confidencial de AWS Secrets Manager para una base de datos no compatible?

5 minutos de lectura
0

¿Cómo puedo crear una función de AWS Lambda para rotar la información confidencial de AWS Secrets Manager para otras bases de datos o servicios de terceros?

Breve descripción

La información confidencial de Secrets Manager creada con bases de datos compatibles con Amazon Relational Database Service (Amazon RDS) y otros servicios de AWS Support crean automáticamente la rotación de Lambda. Para bases de datos y servicios de AWS no compatibles, puede crear manualmente la función de Lambda.

Resolución

Utilice la plantilla de función de rotación genérica para rotar la información confidencial. Antes de activar la rotación de una información confidencial para otra base de datos o servicio, debe crear el código de la función de rotación de Lambda.

Importante:

Crear un conjunto de cambios de AWS CloudFormation basado en la plantilla de función de rotación genérica

Ejecute el comando de la AWS CLI create-cloud-formation-change-set para los siguientes valores:

--stack-name: El nombre de la pila de AWS CloudFormation para la que crea un conjunto de cambios.

--parameter-override: Los puntos de conexión regionales de AWS Secrets Manager para su región y el nombre de la función de rotación de Lambda que crea la plantilla.

aws serverlessrepo create-cloud-formation-change-set --application-id arn:aws:serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate --stack-name MyLambdaCreationStack --parameter-overrides Name=endpoint,Value=https://secretsmanager.REGION.amazonaws.com Name=functionName,Value=MySecretsManagerRotationFunction --capabilities CAPABILITY_IAM CAPABILITY_RESOURCE_POLICY

Nota: Asegúrese de utilizar el nombre de recurso de Amazon (ARN) de arn:aws:serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate exactamente como se muestra.

Se crea un conjunto de cambios de AWS CloudFormation para la plantilla. El nombre de la pila de AWS CloudFormation comienza por aws-serverless-repository- y el código de estado de la pila se establece en REVIEW\ _IN\ _PROGRESS.

Actualizar una pila mediante el conjunto de cambios

El comando create-cloud-formation-change-set devuelve ApplicationId, ChangeSetId, SemanticVersion y StackId. Para actualizar el estado de la pila, debe proporcionar el ChangeSetId al change-set-name. El change-set-name no produce ningún resultado y cambia el código de estado de la pila a CREATE_COMPLETE. La pila de AWS CloudFormation crea la función de Lambda y un rol de IAM que se adjunta a la función de Lambda con los permisos necesarios.

Ejecute el siguiente comando de la AWS CLI execute-change-set como el siguiente:

aws cloudformation execute-change-set --change-set-name arn:aws:cloudformation:region:123456789012:changeSet/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE/EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE

Comprobar lo que han creado las funciones de Lambda

Ejecute el siguiente comando de AWS CLI:

aws lambda list-functions

Output
{
    ...
    "FunctionName": "MySecretsManagerRotationFunction",
    ...
    "FunctionArn": "arn:aws:lambda:region:123456789012:function:MySecretsManagerRotationFunction",
    ...
}

Nota: El nombre de la función de Lambda es el valor del nombre de la función especificado en**--parameter-overrides**.

Configurar la función de Lambda para el acceso a Amazon Virtual Private Cloud (Amazon VPC)

Si su base de datos o servicio se encuentra en una Amazon VPC, ejecute el comando update-function-configuration como el siguiente. El comando update-function-configuration configura la función de rotación de Lambda para que se ejecute en la VPC. Asegúrese de proporcionar los ID de subred de VPC y los ID del grupo de seguridad. Para obtener más información, consulte Configuración de una función de Lambda para obtener acceso a los recursos en una Amazon VPC.

Nota: Si su base de datos o servicio no se encuentran en una Amazon VPC, omita este paso.

$ aws lambda update-function-configuration --function-name your-lambda-function \
--vpc-config SubnetIds=subnet-076c28105d486f3bd,subnet-0af00c796ccdc725f,SecurityGroupIds=sg-0aed64f81acc4c037

Crear un punto de conexión de VPC para el servicio Secrets Manager

Si la VPC con su base de datos o servicio y la función de rotación de Lambda no tiene acceso a Internet, cree un punto de conexión de VPC. Configure la VPC con un punto de conexión de servicio privado para acceder a Secrets Manager y active la función de rotación en un punto de conexión dentro de la VPC. Ejecute el comando create-vpc-endpoint como el siguiente:

Nota: Si su base de datos o servicio no se encuentran en una Amazon VPC, omita este paso.

$ aws ec2 create-vpc-endpoint --vpc-id  vpc-0abb11f5a28a8abe7 --vpc-endpoint-type Interface \
--service-name com.amazonaws.your-region.secretsmanager  --subnet-ids subnet-076c28105d486f3bd subnet-0af00c796ccdc725f \
--security-group-ids sg-0bacf4bbed67e4df5

Configurar la conectividad de red entre la función de Lambda y la base de datos o servicio

Asegúrese de que la función de Lambda pueda enrutar su base de datos o servicio a través de los puertos de red requeridos. Esto varía en función de la base de datos o servicio y de la configuración de VPC asociada.

Nota: Si la base de datos o servicio no se encuentran en una Amazon VPC, omita este paso.

Personalizar la función de rotación para su caso de uso

La plantilla de rotación implementa automáticamente los pasos de createSecret y finishSecret. Los pasos de setSecret y testSecret requieren una implementación manual para su caso de uso y su base de datos. Para obtener más información, consulte Cómo funciona la rotación.

Activar la rotación de su información confidencial

Especifique el número de días entre rotaciones con los parámetros --rotation-rules y AutomaticallyAfterDays:

aws secretsmanager rotate-secret --secret-id production/MyAwesomeAppSecret --rotation-lambda-arn arn:aws:lambda:region:123456789012:function:MySecretsManagerRotationFunction --rotation-rules AutomaticallyAfterDays=7

Para obtener más información, consulte Rotación de información confidencial de AWS Secrets Manager.


Información relacionada

Plantillas de funciones de rotación de AWS Secrets Manager

Cómo conectarse al servicio de AWS Secrets Manager dentro de una nube virtual privada (VPC)

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año