Passer au contenu

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

Lecture de 5 minute(s)
0

Je souhaite créer une fonction AWS Lambda pour un secret AWS Secrets Manager. Ma base de données ou mon service ne prend pas en charge la fonction de rotation automatique.

Résolution

Prérequis : Installez et configurez l’interface de la ligne de commande AWS (AWS CLI).

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez la section Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Créer le code de la fonction de rotation Lambda

Pour obtenir des instructions, consultez la section Configurer la rotation automatique pour les secrets AWS Secrets Manager ne provenant pas de la base de données.

Créer un ensemble de modifications AWS CloudFormation basé sur le modèle de fonction de rotation générique

  1. Exécutez la commande create-cloud-formation-change-set de l'interface de ligne de commande AWS.
  2. Remplacez --stack-name par le nom de la pile CloudFormation.
  3. Remplacez --parameter-overrides par les points de terminaison régionaux de Secrets Manager pour votre région AWS et le nom de la fonction de rotation Lambda créée par le modèle.

Exemple de commande create-cloud-formation-change-set de l'interface de ligne de commande AWS :

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'ARN de arn:aws:serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate exactement comme indiqué.

Utiliser le jeu de modifications CloudFormation pour mettre à jour une pile

La commande create-cloud-formation-change-set renvoie les valeurs ApplicationId, ChangeSetId, SemanticVersion et StackId.

Procédez comme suit :

  1. Remplacez change-set-name par la valeur ChangeSetId lorsque vous exécutez la commande execute-change-set.
  2. Exécutez la commande execute-change-set de l'interface de ligne de commande AWS :
    aws cloudformation execute-change-set --change-set-name arn:aws:cloudformation:region:123456789012:changeSet/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE/EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE

La pile CloudFormation crée la fonction Lambda et un rôle Gestion des identités et des accès (IAM). Le rôle IAM dispose des autorisations requises pour la fonction Lambda.

Vérifier la création de la fonction Lambda

Exécutez la commande list-functions de l’interface de ligne de commande AWS :

aws lambda list-functions

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

Remarque : La valeur FunctionName correspond au nom de fonction que vous avez spécifié dans l'option --parameter-overrides.

Configurer l'accès des fonctions Lambda à un Amazon Virtual Private Cloud

Si votre base de données ou votre service se trouve dans un Amazon Virtual Private Cloud (Amazon VPC), exécutez la commande update-function-configuration pour configurer la fonction de rotation Lambda à exécuter dans Amazon VPC. Assurez-vous de fournir les ID de sous-réseau VPC et les ID de groupe de sécurité. Pour plus d'informations, consultez la section Autoriser les fonctions Lambda à accéder aux ressources d'un Amazon VPC.

Remarque : Si votre base de données ou votre service ne se trouve pas dans un Amazon VPC, ignorez cette étape.

Exemple de commande update-function-configuration de l'interface de ligne de commande AWS :

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

Créer un point de terminaison Amazon VPC pour Secrets Manager

Si l'Amazon VPC avec votre base de données ou votre service et la fonction de rotation Lambda n'a pas accès à Internet, créez un point de terminaison Amazon VPC. Configurez un point de terminaison de service privé dans votre Amazon VPC pour accéder à Secrets Manager et activer la fonction de rotation sur un point de terminaison de VPC. Exécutez la commande create-vpc-endpoint de l'interface de ligne de commande AWS.

Remarque : Si votre base de données ou votre service ne se trouve pas dans un Amazon VPC, 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

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

Vérifiez que la fonction Lambda peut effectuer un routage vers votre base de données ou votre service via les ports réseau requis. Les exigences en matière de ports et de routage varient en fonction de la base de données ou du service et de la configuration de VPC associée.

Remarque : Si votre base de données ou votre service ne se trouve pas dans un Amazon VPC, ignorez cette étape.

Personnaliser la fonction de rotation en fonction de votre cas d'utilisation

Le modèle de rotation implémente les étapes createSecret et finishSecret pour vous. Vous devez modifier la fonction Lambda pour implémenter les étapes setSecret et testSecret pour votre cas d'utilisation et votre base de données. Pour plus d'informations, consultez la section Quatre étapes d'une fonction de rotation.

Activer la rotation pour votre secret

Spécifiez le nombre de jours entre les rotations à l'aide des 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 la section Renouveler des secrets AWS Secrets Manager.

Informations connexes

Modèles de fonction de rotation d'AWS Secrets Manager

Comment se connecter au service AWS Secrets Manager dans un cloud privé virtuel

Services AWS qui utilisent les secrets AWS Secrets Manager

AWS OFFICIELA mis à jour il y a 6 mois