Cifrado de datos en reposo en Amazon SES - Amazon Simple Email Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Cifrado de datos en reposo en Amazon SES

De forma predeterminada, Amazon SES cifra todos los datos en reposo. El cifrado de forma predeterminada ayuda a reducir la sobrecarga operativa y la complejidad que implica la protección de los datos. El cifrado también permite crear archivos del Administrador de correo electrónico que cumplen con los estrictos requisitos normativos y de cumplimiento en materia de cifrado.

SES proporciona las siguientes opciones de cifrado:

  • Claves propiedad de AWS: SES las utiliza de forma predeterminada. No puede ver, administrar ni usar las llaves propiedad de AWS ni auditar su uso. Sin embargo, no tiene que realizar ninguna acción ni cambiar ningún programa para proteger las claves que cifran sus datos. Para obtener más información, consulte las claves propiedad de AWS en la Guía para desarrolladores de AWS Key Management Service.

  • Claves administradas por el cliente: SES admite el uso de una clave simétrica administrada por el cliente que usted crea, posee y administra. Como usted tiene el control total del cifrado, puede realizar tareas como las siguientes:

    • Establecer y mantener políticas de claves

    • Establecer y mantener concesiones y políticas de IAM

    • Habilitar y deshabilitar políticas de claves

    • Rotar el material criptográfico

    • Agregar etiquetas.

    • Crear alias de clave

    • Programar la eliminación de claves

    Para usar su propia clave, elija una clave administrada por el cliente al crear sus recursos de SES.

    Para más información, consulte las claves administradas por el cliente en la Guía para desarrolladores de AWS Key Management Service.

nota

SES activa automáticamente el cifrado en reposo mediante claves propiedad de AWS sin costo alguno.

Sin embargo, se aplicarán cargos de AWS KMS por el uso de una clave administrada por el cliente. Para obtener más información acerca de los precios, consulte Precios de AWS Key Management Service.

Crear una clave administrada por el cliente

Puede crear una clave simétrica administrada por el cliente a través de la AWS Management Console o las API de AWS KMS.

Para crear una clave simétrica administrada por el cliente

Siga los pasos de Creación de claves de KMS de cifrado simétricas en la Guía para desarrolladores de AWS Key Management Service.

nota

Para el archivado, la clave debe cumplir los siguientes requisitos:

  • La clave debe ser simétrica.

  • El origen del material de claves debe ser AWS_KMS.

  • El uso de la clave debe ser ENCRYPT_DECRYPT.

Política de claves

Las políticas de clave controlan el acceso a la clave administrada por el cliente. Cada clave administrada por el cliente debe tener exactamente una política de clave, que contiene instrucciones que determinan quién puede usar la clave y cómo puede utilizarla. Cuando crea la clave administrada por el cliente, puede especificar una política de clave. Para obtener más información, consulte Administración del acceso a las claves en la Guía para desarrolladores de AWS Key Management Service.

Para utilizar la clave administrada por el cliente con el archivado del Administrador de correo electrónico, en la política de claves deben permitirse las siguientes operaciones de API:

  • kms:DescribeKey: proporciona los detalles de la clave administrada por el cliente que permiten que SES valide la clave.

  • kms:GenerateDataKey: permite que SES genere una clave de datos para cifrar los datos en reposo.

  • kms:Decrypt: permite que SES descifre los datos almacenados antes de devolvérselos a los clientes de API.

En el ejemplo siguiente, se muestra una política de claves típica:

{ "Sid": "Allow SES to encrypt/decrypt", "Effect": "Allow", "Principal": { "Service": "ses.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" },

Para obtener más información, consulte la forma de especificar permisos en una política en la Guía para desarrolladores de AWS Key Management Service.

Para obtener más información sobre cómo solucionar problemas, consulte la solución de problemas de acceso a las claves en la Guía para desarrolladores de AWS Key Management Service.

Especificación de una clave administrada por el cliente para la operación de archivado del Administrador de correo electrónico

Puede especificar una clave administrada por el cliente como alternativa al uso de claves propiedad de AWS. Al crear un archivo, puede especificar la clave de datos introduciendo un ARN de la clave de KMS, que la operación de archivado del Administrador de correo electrónico utiliza para cifrar todos los datos de los clientes del archivo.

  • ARN de la clave de KMS: identificador de clave de una clave de AWS KMS administrada por el cliente. Introduzca el ID de la clave, el ARN de la clave, el nombre de alias o el ARN del alias.

Contexto de cifrado de Amazon SES

Un contexto de cifrado es un conjunto opcional de pares clave-valor que pueden contener información contextual adicional sobre los datos.

AWS KMS utiliza el contexto de cifrado como datos autenticados adicionales para admitir el cifrado autenticado. Cuando se incluye un contexto de cifrado en una solicitud para cifrar datos, AWS KMS vincula el contexto de cifrado a los datos cifrados. Para descifrar los datos, debe incluir el mismo contexto de cifrado en la solicitud.

nota

Amazon SES no admite los contextos de cifrado para la creación de archivos. En su lugar, utiliza una política de IAM o KMS. Para obtener ejemplos de políticas, consulte Políticas de creación de archivos más adelante en esta sección.

Contexto de cifrado de Amazon SES

SES utiliza el mismo contexto de cifrado en todas las operaciones criptográficas de AWS KMS, donde la clave es aws:ses:arn y el valor es el nombre de recurso de Amazon (ARN) del recurso.

"encryptionContext": { "aws:ses:arn": "arn:aws:ses:us-west-2:111122223333:ExampleResourceName/ExampleResourceID" }

Uso del contexto de cifrado para la supervisión

Si utiliza una clave simétrica administrada por el cliente para cifrar un recurso de SES, también puede utilizar el contexto de cifrado en los registros y registros de auditoría para identificar cómo se está utilizando la clave administrada por el cliente. El contexto de cifrado también aparece en los registros generados por AWS CloudTrail o registros de Amazon CloudWatch.

Utilizar el contexto de cifrado para controlar el acceso a la clave administrada por el cliente

Puede utilizar el contexto de cifrado en las políticas de claves y las políticas de IAM como conditions para controlar el acceso a la clave simétrica administrada por el cliente. Puede usar también una restricción de contexto de cifrado en una concesión.

SES utiliza el contexto de cifrado para restringir las concesiones que permiten el acceso a la clave administrada por el cliente en su cuenta o región. La restricción de concesión requiere que las operaciones que permite la concesión utilicen el contexto de cifrado especificado.

Los siguientes son ejemplos de declaraciones de política de claves para conceder acceso a una clave administrada por el cliente para un contexto de cifrado específico. La condición de esta declaración de política exige que las concesiones tengan una restricción de contexto de cifrado que especifique el contexto de cifrado.

{ "Sid": "Enable DescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "Enable CreateGrant", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:ses:arn": "arn:aws:ses:us-west-2:111122223333:ExampleResourceName/ExampleResourceID" } } }

Políticas de creación de archivos

Los siguientes ejemplos de políticas muestran cómo activar la creación de archivos. Las políticas funcionan con todos los activos.

Política de IAM

{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ses:CreateArchive", "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "ses.us-east-1.amazonaws.com", "kms:CallerAccount": "012345678910" } } }

Política de AWS KMS

{ "Sid": "Allow SES to encrypt/decrypt", "Effect": "Allow", "Principal": { "Service": "ses.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" },

Supervisión de las claves de cifrado de Amazon SES

Cuando utiliza una clave administrada por el cliente de AWS KMS con sus recursos de Amazon SES, puede utilizar AWS CloudTrail o Registros de Amazon CloudWatch para realizar un seguimiento de las solicitudes que SES envía a AWS KMS.

Los siguientes ejemplos son eventos de AWS CloudTrail para GenerateDataKey, Decrypt y DescribeKey para supervisar las operaciones de KMS solicitadas por SES para acceder a los datos que se han cifrado con su clave administrada por el cliente:

GenerateDataKey

Cuando activa una clave administrada por el cliente de AWS KMS para su recurso, SES crea una clave de tabla única. Envía una solicitud de GenerateDataKey a AWS KMS que especifica la clave administrada por el AWS KMS cliente para el recurso.

Si activa una clave administrada por el cliente de AWS KMS para un recurso de archivado del Administrador de correo electrónico, utilizará GenerateDataKey para cifrar los datos en reposo archivados.

El siguiente evento de ejemplo registra la operación GenerateDataKey:

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "ses.amazonaws.com" }, "eventTime": "2021-04-22T17:07:02Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "172.12.34.56", "userAgent": "ExampleDesktop/1.0 (V1; OS)", "requestParameters": { "encryptionContext": { "aws:ses:arn": "arn:aws:ses:us-west-2:111122223333:ExampleResourceName/ExampleResourceID" }, "keySpec": "AES_256", "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "111122223333", "sharedEventID": "57f5dbee-16da-413e-979f-2c4c6663475e" }
Decrypt

Cuando accede a un recurso cifrado, SES llama a la operación Decrypt para utilizar la clave de datos cifrados almacenada y acceder a los datos cifrados.

El siguiente evento de ejemplo registra la operación Decrypt:

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "ses.amazonaws.com" }, "eventTime": "2021-04-22T17:10:51Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "172.12.34.56", "userAgent": "ExampleDesktop/1.0 (V1; OS)", "requestParameters": { "encryptionContext": { "aws:ses:arn": "arn:aws:ses:us-west-2:111122223333:ExampleResourceName/ExampleResourceID" }, "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE", "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "111122223333", "sharedEventID": "dc129381-1d94-49bd-b522-f56a3482d088" }
DescribeKey

SES utiliza la operación DescribeKey para verificar si la clave administrada por el cliente de AWS KMS asociada al recurso existe en la cuenta y la región.

El siguiente evento de ejemplo registra la operación DescribeKey:

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE3", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2021-04-22T17:02:00Z" } }, "invokedBy": "ses.amazonaws.com" }, "eventTime": "2021-04-22T17:07:02Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-west-2", "sourceIPAddress": "172.12.34.56", "userAgent": "ExampleDesktop/1.0 (V1; OS)", "requestParameters": { "keyId": "00dd0db0-0000-0000-ac00-b0c000SAMPLE" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "111122223333" }

Más información

Los siguientes recursos proporcionan más información sobre cifrado de datos en reposo.