Acionadores do Lambda remetente personalizado - Amazon Cognito

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Acionadores do Lambda remetente personalizado

Os acionadores do Lambda CustomEmailSender e CustomSMSSender permitem notificações por e-mail e SMS de terceiros em grupos de usuários. Você pode escolher provedores de SMS e e-mail para enviar notificações aos usuários de dentro do código de sua função do Lambda. Quando o Amazon Cognito envia convites, códigos de MFA, códigos de confirmação, códigos de verificação e senhas temporárias aos usuários, os eventos ativam suas funções configuradas do Lambda. O Amazon Cognito envia o código e senhas temporárias (segredos) para suas funções ativadas do Lambda. O Amazon Cognito criptografa esses segredos com uma chave gerenciada pelo AWS KMS cliente e o. AWS Encryption SDK AWS Encryption SDK É uma biblioteca de criptografia do lado do cliente que ajuda você a criptografar e descriptografar dados genéricos.

CustomEmailSender

O Amazon Cognito invoca esse acionador para enviar notificações por e-mail aos usuários.

PersonalizadoSMSSender

O Amazon Cognito invoca esse acionador para enviar notificações SMS aos usuários.

Conceitos de criptografia

O Amazon Cognito não envia códigos de usuários em texto simples nos eventos que envia para acionadores personalizados do remetente. As funções do Lambda devem descriptografar códigos nos eventos. Os conceitos a seguir são a arquitetura de criptografia que sua função deve usar para obter códigos que possam ser entregues aos usuários.

AWS KMS

AWS KMS é um serviço gerenciado para criar e controlar AWS KMS chaves. Essas chaves criptografam seus dados. Para obter mais informações, consulte O que é o AWS Key Management Service?.

Chave KMS

Uma chave do KMS é uma representação lógica de uma chave criptográfica. A chave do KMS inclui metadados, como o ID da chave, a data de criação, a descrição e o estado da chave. A chave do KMS também contém o material de chave usado para criptografar e descriptografar dados. Para obter mais informações, consulte, Chaves do AWS KMS.

Chaves simétricas do KMS

Uma chave simétrica do KMS é uma chave de criptografia de 256 bits que não sai do AWS KMS sem ser criptografada. Para usar uma chave KMS simétrica, você deve ligar. AWS KMS O Amazon Cognito usa chaves simétricas. A mesma chave criptografa e descriptografa. Para obter mais informações, consulte Chaves simétricas do KMS.

O que é importante saber sobre acionadores do Lambda de remetente personalizado

  • Para configurar seus grupos de usuários para usar esses acionadores do Lambda, é possível usar a AWS CLI ou o SDK. Essas configurações não estão disponíveis no console do Amazon Cognito.

    A operação UpdateUserPool define a configuração do Lambda. As solicitações para essa operação exige todos os parâmetros do grupo de usuários e os parâmetros que você deseja modificar. Se você não fornecer todos os parâmetros relevantes, o Amazon Cognito assumirá os valores padrão para todos os parâmetros ausentes. Conforme demonstrado no exemplo de AWS CLI a seguir, inclua entradas para todas as funções do Lambda que você deseja adicionar ou manter em seu grupo de usuários. Para obter mais informações, consulte Como atualizar a configuração do grupo de usuários e do cliente da aplicação.

    #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"

    Para solicitações que usam o corpo JSON do UpdateUserPool, o trecho LambdaConfig a seguir atribui funções personalizadas de remetente de SMS e e-mail.

    "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" }
  • Para remover um gatilho Lambda personalizado do remetente com update-user-pool AWS CLI um comando, omita CustomSMSSender o parâmetro CustomEmailSender --lambda-config or e inclua todos os outros gatilhos que você deseja usar com seu grupo de usuários.

    Para remover um acionador do Lambda de remetente personalizado com uma solicitação da API UpdateUserPool, omita o parâmetro CustomSMSSender ou CustomEmailSender do corpo da solicitação que contém o restante da configuração do grupo de usuários.

  • O Amazon Cognito faz escapes de caracteres reservados de HTML < (&lt;) e > (&gt;) na senha temporária do usuário. Esses caracteres podem aparecer em senhas temporárias que o Amazon Cognito envia para à função personalizada de remetente de e-mail, mas não aparecem nos códigos de verificação temporários. Para enviar senhas temporárias, a função do Lambda deve liberar esses caracteres depois de decifrar a senha e antes de enviar a mensagem ao usuário.

Ativar acionadores do Lambda de remetente personalizado

Para usar lógica personalizada para enviar mensagens de SMS ou e-mail ao grupo de usuários, configure acionadores de remetente personalizado. O procedimento a seguir atribui um acionador de SMS personalizado, um acionador de e-mail personalizado ou ambos ao seu grupo de usuários. Depois de adicionar o acionador de remetente de SMS personalizado, o Amazon Cognito sempre envia atributos do usuário, incluindo o número de telefone e o código único para a função do Lambda, em vez do comportamento padrão que envia uma mensagem SMS ou de e-mail.

  1. Crie uma chave de criptografia simétrica em AWS Key Management Service (AWS KMS). O Amazon Cognito gera segredos (senhas temporárias, códigos de verificação, senhas de autenticação de uso único e códigos de autorização) e usa essa chave do KMS para criptografá-los com AWS Encryption SDK. Em seguida, você pode usar o AWS Encryption SDK em sua função Lambda para descriptografar os segredos e enviá-los ao usuário em texto simples.

  2. A entidade principal do IAM que cria ou atualiza seu grupo de usuários cria uma concessão única com base na chave KMS que o Amazon Cognito usa para criptografar o código. Conceda essas permissões CreateGrant da entidade principal à sua chave KMS. Para que esse exemplo de política de chaves do KMS seja efetivo, o administrador que atualiza o grupo de usuários deve estar conectado com uma sessão de perfil assumido para o perfil do IAM arn:aws:iam::111222333444:role/my-example-administrator-role.

    Aplique a política baseada em recursos a seguir, modificada para seu ambiente, à chave do KMS.

    JSON
    { "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. Crie uma função do Lambda para o acionador de remetente personalizado. O Amazon Cognito usa o SDK de criptografia da AWS para criptografar os segredos, as senhas temporárias e os códigos que autorizam as solicitações de API dos usuários.

    1. Atribua um perfil de execução do Lambda que tenha, no mínimo, as permissões kms:Decrypt para a chave do KMS.

    2. Componha o código da função do Lambda para enviar as mensagens. O evento de entrada para sua função contém um segredo. Em sua função, decifre o segredo com o AWS Encryption SDK e processe todos os metadados relevantes. Depois, envie o código, sua própria mensagem personalizada e o número de telefone de destino para a API personalizada que entrega a mensagem.

    3. Adicione o AWS Encryption SDK à sua função Lambda. Para ter mais informações, consulte Linguagens de programação do AWS  Encryption SDK. Para atualizar o pacote do Lambda, conclua as etapas a seguir.

      1. Exporte a função do Lambda como um arquivo .zip no Console de gerenciamento da AWS.

      2. Abra sua função e adicione AWS Encryption SDK o. Para ter mais informações e links de download, consulte Linguagens de programação do AWS Encryption SDK no Guia do desenvolvedor do AWS Encryption SDK .

      3. Compacte a função com as dependências do SDK e faça upload da função para o Lambda. Para obter mais informações, consulte Implantar funções do Lambda como arquivos .zip no Guia do desenvolvedor do AWS Lambda .

  4. Conceda à entidade principal cognito-idp.amazonaws.com do serviço do Amazon Cognito acesso para invocar a função do Lambda.

    O AWS CLI comando a seguir concede ao Amazon Cognito permissão para invocar sua função Lambda:

    aws lambda add-permission --function-name lambda_arn --statement-id "CognitoLambdaInvokeAccess" --action lambda:InvokeFunction --principal cognito-idp.amazonaws.com
  5. Gere uma solicitação de UpdateUserPoolAPI com um LambdaConfig parâmetro que adiciona gatilhos Lambda personalizados do remetente. Não é possível adicionar acionadores desse tipo no console do Amazon Cognito. Os acionadores de remetente personalizado exigem parâmetros LambdaConfig de KMSKeyID e CustomSMSSender ou CustomEmailSender (ou ambos).