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
- Exécutez la commande create-cloud-formation-change-set de l'interface de ligne de commande AWS.
- Remplacez --stack-name par le nom de la pile CloudFormation.
- 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 :
- Remplacez change-set-name par la valeur ChangeSetId lorsque vous exécutez la commande execute-change-set.
- 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