Como o Amazon Simple Email Service (Amazon SES) usa o AWS KMS - AWS Key Management Service

Como o Amazon Simple Email Service (Amazon SES) usa o AWS KMS

Você pode usar o Amazon Simple Email Service (Amazon SES) para receber e-mails e (opcionalmente) para criptografar as mensagens de e-email recebidas antes de armazená-las em um bucket do Amazon Simple Storage Service (Amazon S3) de sua escolha. Ao configurar o Amazon SES para criptografar mensagens de e-mail, você deve escolher a AWS KMS key do AWS KMS com a qual o Amazon SES criptografa as mensagens. É possível escolher a Chave gerenciada pela AWS para o Amazon SES (seu alias é aws/ses), ou você pode escolher uma chave simétrica gerenciada pelo cliente criada no AWS KMS.

Importante

O Amazon SES oferece suporte somente para chaves simétricas do KMS. Não é possível usar uma chave do KMS assimétrica para criptografar mensagens de e-mail do Amazon SES. Para obter ajuda para determinar se uma chave do KMS é simétrica ou assimétrica, consulte Identificar chaves do KMS assimétricas.

Para obter mais informações sobre o recebimento de e-mails usando o Amazon SES, acesse Receber e-mails no Amazon SES, no Guia do desenvolvedor do Amazon Simple Email Service.

Visão geral da criptografia do Amazon SES usando o AWS KMS

Quando você configura o Amazon SES para receber e-mail e criptografar as mensagens de e-mail antes de salvá-las em seu bucket do S3, o processo funciona da seguinte forma:

  1. Você cria uma regra de recebimento para o Amazon SES, especificando a ação do S3, um bucket do S3 para armazenamento e uma AWS KMS key para criptografia.

  2. O Amazon SES recebe uma mensagem de e-mail que está em conformidade com a sua regra de recebimento.

  3. O Amazon SES solicita uma chave de dados exclusiva criptografada com a chave do KMS que você especificou na regra de recebimento aplicável.

  4. AWS KMSO cria uma nova chave de dados, criptografa-a com a chave do KMS especificada e envia as cópias de texto criptografado e não criptografado da chave de dados ao Amazon SES.

  5. O Amazon SES usa a chave de dados de texto não criptografado para criptografar a mensagem de e-mail e remove a chave de dados de texto não criptografado da memória, assim que possível, após o uso.

  6. O Amazon SES coloca a mensagem de e-mail criptografada e a chave de dados criptografada no bucket do S3 especificado. A chave de dados criptografada é armazenada como metadados com a mensagem de e-email criptografada.

Para realizar Passo 3 por meio de Passo 6, o Amazon SES usa o cliente de criptografia do Amazon S3 fornecido pelo AWS. Use o mesmo cliente para recuperar suas mensagens de e-mail criptografadas do Amazon S3 e as descriptografe. Para obter mais informações, consulte Obter e descriptografar mensagens de e-mail.

Contexto de criptografia do Amazon SES

Quando o Amazon SES solicita que uma chave de dados criptografe suas mensagens de e-mail recebidas (Passo 3 no Visão geral da criptografia do Amazon SES usando o AWS KMS), ele inclui um contexto de criptografia na solicitação. O contexto de criptografia fornece dados autenticados adicionais (AAD) que o AWS KMS usa para garantir a integridade dos dados. O contexto de criptografia também é gravado em seus arquivos de log do AWS CloudTrail, o que pode ajudar você a entender por que uma determinada AWS KMS key (chave do KMS) foi usada. O Amazon SES usa o seguinte como contexto de criptografia:

  • O ID da Conta da AWS na qual você configurou o Amazon SES para receber mensagens de e-mail

  • O nome da regra do Amazon SES que invocou a ação do S3 na mensagem de e-mail

  • O ID da mensagem do Amazon SES para a mensagem de e-mail

O exemplo a seguir mostra uma representação JSON do contexto de criptografia usado pelo Amazon SES:

{ "aws:ses:source-account": "111122223333", "aws:ses:rule-name": "example-receipt-rule-name", "aws:ses:message-id": "d6iitobk75ur44p8kdnnp7g2n800" }

Conceder permissão ao Amazon SES para usar sua AWS KMS key

Para criptografar suas mensagens de e-mail, você pode usar a Chave gerenciada pela AWS na sua conta para o Amazon SES (aws/ses) ou pode usar uma chave gerenciada pelo cliente criada por você. O Amazon SES já tem permissão para usar a Chave gerenciada pela AWS em seu nome. No entanto, se você especificar uma chave gerenciada pelo cliente ao adicionar a ação do S3 à sua regra de recebimento do Amazon SES, será necessário conceder permissão ao Amazon SES para usar a chave do KMS com o objetivo de criptografar suas mensagens de e-mail.

Para conceder ao Amazon SES permissão para usar a sua chave gerenciada pelo cliente, adicione a seguinte instrução à política de chaves dessa chave do KMS:

{ "Sid": "Allow SES to encrypt messages using this KMS key", "Effect": "Allow", "Principal": {"Service": "ses.amazonaws.com"}, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "Null": { "kms:EncryptionContext:aws:ses:rule-name": false, "kms:EncryptionContext:aws:ses:message-id": false }, "StringEquals": {"kms:EncryptionContext:aws:ses:source-account": "ACCOUNT-ID-WITHOUT-HYPHENS"} } }

Substitua ACCOUNT-ID-WITHOUT-HYPHENS pelo ID de 12 dígitos da Conta da AWS na qual você configurou o Amazon SES para receber mensagens de e-mail. Essa instrução de política permite que o Amazon SES criptografe os dados com essa chave do KMS somente sob estas condições:

  • O Amazon SES deve especificar aws:ses:rule-name e aws:ses:message-id no EncryptionContext de suas solicitações da API do AWS KMS.

  • O Amazon SES deve especificar EncryptionContext no AWS KMS das solicitações de API do aws:ses:source-account, e o valor de Conta da AWS deve corresponder ao ID da aws:ses:source-account especificado na política de chaves.

Para obter mais informações sobre o contexto de criptografia usado pelo Amazon SES ao criptografar suas mensagens de e-mail, consulte Contexto de criptografia do Amazon SES. Para obter informações gerais sobre como o AWS KMS usa o contexto de criptografia, consulte contexto de criptografia.

Obter e descriptografar mensagens de e-mail

O Amazon SES não tem permissão para descriptografar suas mensagens de e-mail criptografadas e não pode descriptografá-las para você. Você deve escrever o código para obter suas mensagens de e-mail do Amazon S3 e descriptografá-las. Para tornar isso mais fácil, use o cliente de criptografia do Amazon S3. Os AWS SDKs a seguir incluem o cliente de criptografia do Amazon S3:

O cliente de criptografia do Amazon S3 simplifica o trabalho de construção das solicitações necessárias para o Amazon S3 recuperar a mensagem de e-mail criptografada e o AWS KMS descriptografar a chave de dados criptografada da mensagem, e descriptografar a mensagem de e-mail. Por exemplo, para descriptografar com êxito a chave de dados criptografada, você deve passar o mesmo contexto de criptografia que o Amazon SES passou ao solicitar a chave de dados do AWS KMS (Passo 3 na Visão geral da criptografia do Amazon SES usando o AWS KMS). O cliente de criptografia do Amazon S3 lida com isso, e muito mais das outras tarefas, para você.

Para o código de exemplo que usa o cliente de criptografia do Amazon S3 no AWS SDK for Java para fazer a descriptografia do lado do cliente, consulte o seguinte: