Comment créer une fonction de renouvellement avec un secret AWS Secrets Manager pour une base de données non prise en charge ?

Lecture de 5 minute(s)
0

Comment créer une fonction AWS Lambda pour renouveler les secrets AWS Secrets Manager pour d'autres bases de données ou des services tiers ?

Brève description

Les secrets Secrets Manager créés avec les bases de données prises en charge par Amazon Relational Database Service (Amazon RDS) et d'autres services AWS Support créent automatiquement la fonction de renouvellement Lambda. Pour les bases de données et services AWS non pris en charge, vous pouvez créer manuellement la fonction Lambda.

Résolution

Utilisez le modèle générique de la fonction de renouvellement pour renouveler les secrets. Avant d'activer le renouvellement d'un secret pour une autre base de données ou un autre service, vous devez créer le code de la fonction de renouvellement Lambda.

Important :

Création d'un jeu de modifications AWS CloudFormation basé sur le modèle générique de la fonction de renouvèlement

Exécutez la commande AWS CLI create-cloud-formation-change-set pour ces valeurs :

--stack-name : le nom de la pile AWS CloudFormation pour laquelle vous créez un jeu de modifications.

--parameter-override : les points de terminaison régionaux AWS Secrets Manager pour votre région, ainsi que le nom de la fonction de renouvèlement Lambda que le modèle crée.

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

Remarque : assurez-vous d'utiliser l'Amazon Resource Name (ARN) de arn:aws:serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate exactement comme indiqué.

Un jeu de modifications AWS CloudFormation est créé pour le modèle. Le nom de la pile AWS CloudFormation commence par aws-serverless-repository- et le code de statut de la pile est réglé sur REVIEW_IN_PROGRESS.

Mise à jour d'une pile à l'aide du jeu de modifications

La commande create-cloud-formation-change-set renvoie les valeurs ApplicationId, ChangeSetId, SemanticVersion et StackId. Pour mettre à jour le statut de la pile, vous devez indiquer la valeur ChangeSetId pour la commande change-set-name. La commande change-set-name ne produit aucun résultat et entraîne le remplacement du code de statut de la pile par CREATE_COMPLETE. La pile AWS CloudFormation crée la fonction Lambda et un rôle IAM associé à cette dernière avec les autorisations requises.

Exécutez la commande AWS CLI execute-change-set suivante, comme suit :

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

Vérification de la création des fonctions Lambda

Exécutez la commande AWS CLI suivante :

aws lambda list-functions

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

Remarque : le nom de la fonction Lambda est la valeur du nom de la fonction spécifiée dans --parameter-overrides.

Configuration de la fonction Lambda pour l'accès à Amazon Virtual Private Cloud (Amazon VPC)

Si votre base de données ou votre service réside dans un VPC Amazon, exécutez la commande update-function-configuration similaire à la commande suivante. La commande update-function-configuration configure la fonction de renouvellement Lambda pour qu'elle s'exécute dans le VPC. Assurez-vous de fournir les ID de sous-réseaux VPC et les ID de groupes de sécurité. Pour plus d'informations, consultez Configuration d'une fonction Lambda pour accéder aux ressources d'un VPC Amazon (français non garanti).

Remarque : si votre base de données ou votre service ne réside pas dans un VPC Amazon, ignorez cette étape.

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

Création d'un point de terminaison d'un VPC pour le service Secrets Manager

Si le VPC accompagné de votre base de données ou de votre service et la fonction de renouvellement Lambda n'a pas d'accès Internet, créez un point de terminaison d'un VPC. Configurez le VPC avec un point de terminaison de service privé pour accéder à Secrets Manager et activez la fonction de renouvellement sur un point de terminaison au sein du VPC. Exécutez la commande create-vpc-endpoint comme suit :

Remarque : si votre base de données ou votre service ne réside pas dans un VPC Amazon, ignorez cette étape.

$ 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

Configuration de la connectivité réseau entre la fonction Lambda et la base de données ou le service

Assurez-vous que la fonction Lambda peut être acheminée vers votre base de données ou votre service via les ports réseau requis. Cela varie en fonction de la base de données ou du service et de sa configuration VPC associée.

Remarque : si votre base de données ou votre service ne réside pas dans un VPC Amazon, ignorez cette étape.

Personnalisation de la fonction de renouvellement pour votre cas d'utilisation

Le modèle de renouvèlement implémente les étapes createSecret et finishSecret pour vous. Les étapes setSecret et testSecret nécessitent une mise en œuvre manuelle pour votre cas d'utilisation et votre base de données. Pour plus d'informations, consultez Fonctionnement du renouvellement (français non garanti).

Activation du renouvellement pour votre secret

Spécifiez le nombre de jours entre les renouvellements avec les paramètres --rotation-rules et AutomaticallyAfterDays :

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

Pour plus d'informations, consultez Renouvellement des secrets AWS Secrets Manager (français non garanti).


Informations connexes

Modèles de fonctions de renouvellement AWS Secrets Manager (français non garanti)

How to connect to AWS Secrets Manager service within a Virtual Private Cloud

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an