Autorisations de rôle d'exécution de la fonction de rotation Lambda pour AWS Secrets Manager - AWS Secrets Manager

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Autorisations de rôle d'exécution de la fonction de rotation Lambda pour AWS Secrets Manager

En effetRotation par fonction Lambda, lorsque Secrets Manager utilise une fonction Lambda pour faire pivoter un secret, Lambda assume un rôle d'exécution IAM et fournit ces informations d'identification au code de la fonction Lambda. Pour obtenir des instructions sur la configuration de la rotation automatique, voir :

Les exemples suivants présentent des stratégies en ligne pour les rôles d'exécution de fonctions de rotation Lambda. Pour créer un rôle d'exécution et attacher une politique d'autorisations, consultez Rôle d'exécution AWS Lambda.

Stratégie pour un rôle d'exécution de fonction de rotation Lambda

L'exemple de stratégie suivant autorise la fonction de rotation à :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecretVersionStage" ], "Resource": "SecretARN" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword" ], "Resource": "*" }, { "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DetachNetworkInterface" ], "Resource": "*", "Effect": "Allow" } ] }

Déclaration de stratégie pour une clé gérée par le client

Si le secret est chiffré avec une clé KMS autre que la Clé gérée par AWS aws/secretsmanager, vous devez accorder au rôle d'exécution Lambda l'autorisation d'utiliser la clé. Vous pouvez utiliser le contexte de chiffrement SecretARN pour limiter l'utilisation de la fonction de déchiffrement, de sorte que le rôle de la fonction de rotation n'ait accès que pour déchiffrer le secret qu'il est chargé de faire pivoter. L'exemple suivant montre une instruction à ajouter à la stratégie de rôle d'exécution pour déchiffrer le secret à l'aide de la clé KMS.

{ "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "KMSKeyARN" "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": "SecretARN" } } }

Pour utiliser la fonction de rotation pour plusieurs secrets chiffrés à l'aide d'une clé gérée par le client, ajoutez une instruction comme dans l'exemple suivant pour autoriser le rôle d'exécution à déchiffrer le secret.

{ "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "KMSKeyARN" "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": [ "arn1", "arn2" ] } } }

Déclaration de stratégie pour une stratégie d'utilisateurs en alternance

Pour plus d'informations sur la stratégie de rotation des utilisateurs en alternance, consultez Stratégies de rotation des fonctions Lambda.

Pour un secret contenant des informations d'identification Amazon RDS, si vous utilisez la stratégie de rotation des utilisateurs en alternance et que le secret de superutilisateur est géré par Amazon RDS, vous devez également autoriser la fonction de rotation à appeler des API en lecture seule sur Amazon RDS afin qu'elle puisse obtenir les informations de connexion à la base de données. Nous vous recommandons de joindre la politique AWS gérée AmazonRDS ReadOnlyAccess.

L'exemple de politique suivant autorise la fonction à :

  • Exécuter des opérations Secrets Manager pour SecretARN.

  • Récupérez les informations d'identification dans le secret du super-utilisateur. Secrets Manager utilise les informations d'identification du secret du super-utilisateur pour mettre à jour les informations d'identification dans le secret faisant l'objet d'une rotation.

  • Créer un nouveau mot de passe.

  • Mettre en place la configuration requise si votre base de données ou votre service s'exécute dans un VPC. Pour de plus amples informations, veuillez consulter Configuration d'une fonction Lambda pour accéder aux ressources d'accès dans un VPC.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecretVersionStage" ], "Resource": "SecretARN" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "SuperuserSecretARN" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword" ], "Resource": "*" }, { "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DetachNetworkInterface" ], "Resource": "*", "Effect": "Allow" } ] }