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.
Fonctions de rotation Lambda
DansRotation par fonction Lambda, une fonction Lambda fait le travail de rotation du secret. Secrets Manager utilise des étiquettes intermédiaires pour étiqueter les versions d'un secret pendant la rotation.
Si Secrets Manager ne fournit pas de modèle de fonction de rotation pour votre type de secret, vous pouvez créer une fonction de rotation. Lorsque vous écrivez une fonction de rotation, suivez les instructions pour chaque étape.
Conseils pour écrire votre propre fonction de rotation
-
Utilisez le modèle de rotation générique comme point de départ pour écrire votre propre fonction de rotation.
-
Si vous créez votre fonction, faites attention lorsque vous incluez des instructions de débogage ou de journalisation. Ces instructions peuvent entraîner l'écriture d'informations de votre fonction sur Amazon CloudWatch. Vous devez donc vous assurer que le journal n'inclut aucune information sensible collectée pendant le développement.
Pour obtenir des exemples d'instructions de journal, consultez le code source des AWS Secrets Manager modèles de fonctions de rotation.
-
Pour des raisons de sécurité, Secrets Manager n'autorise qu'une fonction de rotation Lambda à faire pivoter le secret directement. La fonction de rotation ne peut pas appeler une deuxième fonction Lambda pour faire pivoter le secret.
-
Pour obtenir des suggestions de débogage, consultez Test et débogage d'applications sans serveur.
-
Si vous utilisez des binaires et des bibliothèques externes, par exemple pour vous connecter à une ressource, vous devez gérer l'application de correctifs et leur conservation. up-to-date
-
Enregistrez votre fonction de rotation dans un fichier ZIP
my-function.zip
avec toutes les dépendances requises.
Quatre étapes d'une fonction de rotation
Rubriques
create_secret
: crée une nouvelle version du secret
La méthode vérifie d'create_secret
abord si un secret existe en appelant get_secret_value
ClientRequestToken
. S'il n'y a pas de secret, il en crée un nouveau avec create_secret
VersionId
. Il génère ensuite une nouvelle valeur secrète avec get_random_password
put_secret_value
. Le stockage de la nouvelle valeur de secret dans AWSPENDING
permet de garantir l'idempotence. Si la rotation échoue pour une raison quelconque, vous pouvez vous référer à cette valeur de secret lors des appels suivants. Veuillez consulter Comment puis-je rendre ma fonction Lambda idempotente ?AWSPENDING
Conseils pour écrire votre propre fonction de rotation
Assurez-vous que la nouvelle valeur secrète inclut uniquement des caractères valides pour la base de données ou le service. Excluez des caractères à l'aide du paramètre
ExcludeCharacters
.Lorsque vous testez votre fonction, utilisez le AWS CLI pour voir les étapes de version : call
describe-secret
and look atVersionIdsToStages
.-
Pour Amazon RDS MySQL, lors de la rotation alternée des utilisateurs, Secrets Manager crée un utilisateur cloné dont le nom ne dépasse pas 16 caractères. Vous pouvez modifier la fonction de rotation pour autoriser des noms d'utilisateur plus longs. MySQL version 5.7 et versions ultérieures prend en charge les noms d'utilisateur jusqu'à 32 caractères, mais Secrets Manager ajoute « _clone » (six caractères) à la fin du nom d'utilisateur. Vous devez donc limiter le nom d'utilisateur à 26 caractères maximum.
set_secret
: modifiez les informations d'identification dans la base de données ou le service
La méthode set_secret
modifie les informations d'identification dans la base de données ou le service pour qu'elles correspondent à la nouvelle valeur secrète de la AWSPENDING
version du secret.
Conseils pour écrire votre propre fonction de rotation
-
Si vous transmettez des instructions à un service qui interprète des instructions, comme une base de données, utilisez le paramétrage des requêtes. Pour plus d'informations, consultez le aide-mémoire sur le paramétrage des requêtes sur le site Web
de l'OWASP. -
La fonction de rotation est un adjoint privilégié autorisé à accéder aux informations d'identification des clients et à les modifier à la fois dans le secret Secrets Manager et dans la ressource cible. Pour éviter une éventuelle attaque d'adjoint confus, vous devez vous assurer que les pirates ne peuvent pas utiliser la fonction afin d'accéder à d'autres ressources. Avant de mettre à jour les informations d'identification :
Vérifiez que les informations d'identification figurant dans la version
AWSCURRENT
du secret sont valides. Si les informations d'identificationAWSCURRENT
ne sont pas valides, abandonnez la tentative de rotation.Vérifiez que les valeurs de secret
AWSPENDING
etAWSCURRENT
concernent la même ressource. Pour un nom d'utilisateur et un mot de passe, vérifiez que les noms d'utilisateurAWSCURRENT
etAWSPENDING
sont identiques.Vérifiez également que la ressource du service de destination est identique. Pour une base de données, vérifiez que les noms d'hôte
AWSCURRENT
etAWSPENDING
sont identiques.
-
Dans de rares cas, vous souhaiterez peut-être personnaliser une fonction de rotation existante pour une base de données. Par exemple, avec une rotation des utilisateurs en alternance, Secrets Manager crée l'utilisateur cloné en copiant les paramètres de configuration d'exécution
du premier utilisateur. Si vous souhaitez inclure d'autres attributs ou modifier ceux qui sont accordés à l'utilisateur cloné, vous devez mettre à jour le code de la fonction set_secret
.
test_secret
: Testez la nouvelle version secrète
Ensuite, la fonction de rotation Lambda teste la version AWSPENDING
du secret en l'utilisant pour accéder à la base de données ou au service. Fonctions de rotation basées sur le test Modèles de fonctions de rotation du nouveau secret en utilisant l'accès en lecture.
finish_secret
: Terminez la rotation
Enfin, la fonction de rotation Lambda déplace l'étiquette AWSCURRENT
de la version secrète précédente vers cette version, qui supprime également l'étiquette AWSPENDING
dans le même appel d'API. Secrets Manager ajoute l'étiquette intermédiaire AWSPREVIOUS
à la version précédente, de sorte que vous conservez la dernière bonne version connue du secret.
La méthode finish_secret
permet update_secret_version_stage
AWSCURRENT
de la version secrète précédente vers la nouvelle version secrète. Secrets Manager ajoute automatiquement l'étiquette intermédiaire AWSPREVIOUS
à la version précédente, de sorte que vous conservez la dernière bonne version connue du secret.
Conseils pour écrire votre propre fonction de rotation
Ne le supprimez pas
AWSPENDING
avant ce point, et ne le supprimez pas en utilisant un appel d'API distinct, car cela peut indiquer à Secrets Manager que la rotation ne s'est pas terminée correctement. Secrets Manager ajoute l'étiquette intermédiaireAWSPREVIOUS
à la version précédente, de sorte que vous conservez la dernière bonne version connue du secret.
Lorsque la rotation est réussie, l'étiquette AWSPENDING
de transit peut être attachée à la même version que la version AWSCURRENT
, ou elle peut ne pas être attachée à aucune version. Si l'étiquette de transit AWSPENDING
est présente, mais n'est pas attachée à la même version AWSCURRENT
, toute invocation ultérieure à la rotation suppose qu'une demande de rotation précédente est toujours en cours et renvoie une erreur. Lorsque la rotation échoue, l'étiquette AWSPENDING
intermédiaire peut être attachée à une version secrète vide. Pour plus d'informations, voir Résoudre la rotation d'.