Déclencheurs Lambda Expéditeur personnalisé - Amazon Cognito

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.

Déclencheurs Lambda Expéditeur personnalisé

Le Lambda déclenche CustomEmailSender et CustomSMSSender prend en charge les notifications par e-mail et SMS de tiers dans les groupes d'utilisateurs. Vous pouvez choisir des fournisseurs de SMS et d'e-mail pour envoyer des notifications aux utilisateurs à partir du code de votre fonction Lambda. Lorsqu'Amazon Cognito envoie des invitations, des codes MFA, des codes de confirmation, des codes de vérification et des mots de passe temporaires aux utilisateurs, les événements activent les fonctions Lambda que vous avez configurées. Amazon Cognito envoie le code et les mots de passe temporaires (secrets) à vos fonctions Lambda activées. Amazon Cognito chiffre ces secrets à l'aide d'une clé gérée par AWS KMS le client et du. AWS Encryption SDK AWS Encryption SDK Il s'agit d'une bibliothèque de chiffrement côté client qui vous aide à chiffrer et à déchiffrer des données génériques.

CustomEmailSender

Amazon Cognito appelle ce déclencheur pour envoyer des notifications par e-mail à des utilisateurs.

PersonnaliséSMSSender

Amazon Cognito appelle ce déclencheur pour envoyer des notifications par SMS à des utilisateurs.

Concepts de chiffrement

Amazon Cognito n'envoie pas les codes des utilisateurs en texte brut dans les événements qu'il envoie à des déclencheurs d'expéditeur personnalisés. Les fonctions Lambda doivent déchiffrer les codes des événements. Les concepts suivants correspondent à l'architecture de chiffrement que votre fonction doit utiliser pour obtenir des codes qu'elle peut transmettre aux utilisateurs.

AWS KMS

AWS KMS est un service géré permettant de créer et de contrôler AWS KMS des clés. Ces clés chiffrent vos données. Pour plus d'informations, consultez Qu'est-ce qu' AWS Key Management Service ?.

Clé KMS

Une clé KMS est une représentation logique d'une clé cryptographique. La clé KMS inclut des métadonnées, telles que l'ID de clé, la date de création, la description et l'état de la clé. La clé KMS contient également les éléments de clé utilisés pour chiffrer et déchiffrer les données. Pour plus d'informations, consultez Clés AWS KMS.

Clé KMS symétrique

Une clé KMS symétrique est une clé de chiffrement 256 bits qui ne sort pas de AWS KMS sous forme non chiffrée. Pour utiliser une clé KMS symétrique, vous devez appeler AWS KMS. Amazon Cognito utilise des clés symétriques. La même clé sert à chiffrer et déchiffrer. Pour plus d'informations, consultez Clés KMS symétriques.

Ce qu'il faut savoir sur les déclencheurs Lambda personnalisés pour les expéditeurs

  • Pour configurer vos groupes d'utilisateurs afin d'utiliser ces déclencheurs Lambda, vous pouvez utiliser l'interface AWS CLI ou le kit SDK. Ces configurations ne sont pas disponibles à partir de la console Amazon Cognito.

    L'UpdateUserPoolopération définit la configuration Lambda. Les demandes relatives à cette opération nécessitent tous les paramètres de votre groupe d'utilisateurs et les paramètres que vous souhaitez modifier. Si vous ne fournissez pas tous les paramètres pertinents, Amazon Cognito définit les valeurs de tous les paramètres manquants sur leurs valeurs par défaut. Comme le montre l'exemple de AWS CLI ci-dessous, incluez des entrées pour toutes les fonctions Lambda que vous souhaitez ajouter ou conserver dans votre groupe d'utilisateurs. Pour de plus amples informations, veuillez consulter Mise à jour de la configuration du pool d'utilisateurs et du client d'applications.

    #Send this parameter in an 'aws cognito-idp update-user-pool' CLI command, including any existing #user pool configurations. This snippet also includes a pre sign-up trigger for syntax reference. The pre sign-up trigger #doesn't have a role in custom sender triggers. --lambda-config "PreSignUp=lambda-arn, \ CustomSMSSender={LambdaVersion=V1_0,LambdaArn=lambda-arn}, \ CustomEmailSender={LambdaVersion=V1_0,LambdaArn=lambda-arn}, \ KMSKeyID=key-id"

    Pour les demandes utilisant le corps JSON de UpdateUserPool l'LambdaConfigextrait de code suivant, des fonctions personnalisées d'expéditeur de SMS et d'e-mail sont attribuées.

    "LambdaConfig": { "KMSKeyID": "arn:aws:kms:us-east-1:111122223333:key/a6c4f8e2-0c45-47db-925f-87854bc9e357", "CustomEmailSender": { "LambdaArn": "arn:aws:lambda:us-east-1:111122223333:function:MyFunction", "LambdaVersion": "V1_0" }, "CustomSMSSender": { "LambdaArn": "arn:aws:lambda:us-east-1:111122223333:function:MyFunction", "LambdaVersion": "V1_0" }
  • Pour supprimer un déclencheur Lambda d'expéditeur personnalisé à l'aide d'une update-user-pool AWS CLI commande, omettez le CustomEmailSender paramètre CustomSMSSender ou et incluez tous les autres déclencheurs que vous souhaitez utiliser avec votre groupe d'utilisateurs. --lambda-config

    Pour supprimer un déclencheur Lambda d'expéditeur personnalisé avec une demande d'API UpdateUserPool, omettez le paramètre CustomSMSSender ou CustomEmailSender dans corps de la demande qui contient le reste de la configuration de votre groupe d'utilisateurs.

  • Amazon Cognito échappe en HTML les caractères réservés tels que < (&lt;) et > (&gt;) dans le mot de passe temporaire de votre utilisateur. Ces caractères peuvent apparaître dans les mots de passe temporaires qu'Amazon Cognito envoie à votre fonction d'expéditeur d'e-mail personnalisé, mais ils n'apparaissent pas dans les codes de vérification temporaires. Pour envoyer des mots de passe temporaires, votre fonction Lambda doit annuler l'échappement de ces caractères après avoir déchiffré le mot de passe et avant d'envoyer le message à votre utilisateur.

Activation des déclencheurs Lambda personnalisés pour les expéditeurs

Pour utiliser une logique personnalisée pour envoyer des SMS ou des e-mails à votre groupe d'utilisateurs, configurez des déclencheurs d'expéditeur personnalisés. La procédure suivante attribue un déclencheur de SMS personnalisé, un déclencheur d'e-mail personnalisé, ou les deux, à votre groupe d'utilisateurs. Une fois que vous avez ajouté votre déclencheur d'expéditeur personnalisé, Amazon Cognito envoie toujours les attributs utilisateur, y compris le numéro de téléphone, et le code à usage unique à votre fonction Lambda au lieu du comportement par défaut qui envoie un SMS ou un e-mail.

  1. Créez une clé de chiffrement symétrique dans AWS Key Management Service (AWS KMS). Amazon Cognito génère des secrets (mots de passe temporaires, codes de vérification, mots de passe d'authentification à usage unique et codes de confirmation), puis utilise cette clé KMS pour chiffrer les secrets. AWS Encryption SDK Vous pouvez ensuite utiliser la fonction AWS Encryption SDK in your Lambda pour déchiffrer les secrets et les envoyer à l'utilisateur en texte clair.

  2. Le principal IAM qui crée ou met à jour votre groupe d'utilisateurs crée une autorisation unique basée sur la clé KMS qu'Amazon Cognito utilise pour chiffrer le code. Accordez ces CreateGrant autorisations principales pour votre clé KMS. Pour que cet exemple de politique clé KMS soit efficace, l'administrateur qui met à jour le groupe d'utilisateurs doit être connecté avec une session de rôle assumé pour le rôle IAM. arn:aws:iam::111222333444:role/my-example-administrator-role

    Appliquez la politique basée sur les ressources suivante, modifiée pour votre environnement, à votre clé KMS.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/my-example-administrator-role" }, "Action": "kms:CreateGrant", "Resource": "arn:aws:kms:us-west-2:111122223333:key/1example-2222-3333-4444-999example", "Condition": { "StringEquals": { "kms:EncryptionContext:userpool-id": "us-west-2_EXAMPLE" } } }, { "Sid": "Allow Lambda to decrypt", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/my-lambda-function-role" }, "Action": "kms:Decrypt", "Resource": "*" }] }
  3. Créez une fonction Lambda pour le déclencheur d'expéditeur personnalisé. Amazon Cognito utilise le kit SDK de chiffrement AWS pour chiffrer les secrets, les mots de passe et les codes temporaires qui autorisent les demandes d'API de vos utilisateurs.

    1. Attribuez un rôle d'exécution Lambda doté, au minimum, d'kms:Decryptautorisations pour votre clé KMS.

    2. Composez le code de fonction Lambda pour envoyer vos messages. L'événement d'entrée de votre fonction contient un secret. Dans votre fonction, déchiffrez le secret avec le AWS Encryption SDK et traitez toutes les métadonnées pertinentes. Envoyez ensuite le code, votre propre message personnalisé ainsi que le numéro de téléphone de destination à l'API personnalisée qui remet votre message.

    3. Ajoutez le AWS Encryption SDK à votre fonction Lambda. Pour en savoir plus, consultez Langages de programmation du kit SDK de chiffrement AWS. Pour mettre à jour le package Lambda, effectuez les étapes suivantes.

      1. Exportez votre fonction Lambda sous forme de fichier .zip dans la AWS Management Console.

      2. Ouvrez votre fonction et ajoutez le AWS Encryption SDK. Pour obtenir des informations supplémentaires et les liens de téléchargement, consultez Langages de programmation du AWS Encryption SDK dans le Guide du développeur AWS Encryption SDK .

      3. Zippez votre fonction avec les dépendances du kit SDK et chargez-la sur Lambda. Pour en savoir plus, consultez Déploiement de fonctions Lambda sous forme d'archives de fichiers .zip dans le Guide du développeur AWS Lambda .

  4. Accordez l'accès au principal de service Amazon Cognito cognito-idp.amazonaws.com pour appeler la fonction Lambda.

    La AWS CLI commande suivante autorise Amazon Cognito à appeler votre fonction Lambda :

    aws lambda add-permission --function-name lambda_arn --statement-id "CognitoLambdaInvokeAccess" --action lambda:InvokeFunction --principal cognito-idp.amazonaws.com
  5. Générez une demande d'UpdateUserPoolAPI avec un LambdaConfig paramètre qui ajoute des déclencheurs Lambda d'expéditeur personnalisés. Vous ne pouvez pas ajouter de déclencheurs de ce type dans la console Amazon Cognito. Les déclencheurs d'expéditeur personnalisés nécessitent KMSKeyID des LambdaConfig paramètres de CustomSMSSender et/ou CustomEmailSender (ou les deux).