Amazon WorkMail 中的数据保护 - Amazon WorkMail

Amazon WorkMail 中的数据保护

AWS 责任共担模式适用于 Amazon WorkMail 中的数据保护。如该模式中所述,AWS 负责保护运行所有 AWS 云 的全球基础结构。您负责维护对托管在此基础结构上的内容的控制。您还负责您所使用的 AWS 服务 的安全配置和管理任务。有关数据隐私的更多信息,请参阅数据隐私常见问题有关欧洲数据保护的信息,请参阅 AWS Security Blog 上的 AWS Shared Responsibility Model and GDPR 博客文章。

出于数据保护目的,建议您保护 AWS 账户 凭证并使用 AWS IAM Identity Center 或 AWS Identity and Access Management(IAM)设置单个用户。这样,每个用户只获得履行其工作职责所需的权限。还建议您通过以下方式保护数据:

  • 对每个账户使用多重身份验证(MFA)。

  • 使用 SSL/TLS 与 AWS 资源进行通信。我们要求使用 TLS 1.2,建议使用 TLS 1.3。

  • 使用 AWS CloudTrail 设置 API 和用户活动日记账记录。有关使用 CloudTrail 跟踪来捕获 AWS 活动的信息,请参阅《AWS CloudTrail 用户指南》中的使用 CloudTrail 跟踪

  • 使用 AWS 加密解决方案以及 AWS 服务中的所有默认安全控制。

  • 使用高级托管安全服务(例如 Amazon Macie),它有助于发现和保护存储在 Amazon S3 中的敏感数据。

  • 如果在通过命令行界面或 API 访问 AWS 时需要经过 FIPS 140-3 验证的加密模块,请使用 FIPS 端点。有关可用的 FIPS 端点的更多信息,请参阅《美国联邦信息处理标准(FIPS)第 140-3 版》

强烈建议您切勿将机密信息或敏感信息(如您客户的电子邮件地址)放入标签或自由格式文本字段(如名称字段)。这包括当您使用控制台、API、AWS CLI 或 AWS SDK 使用 Amazon WorkMail 或其他 AWS 服务时。在用于名称的标签或自由格式文本字段中输入的任何数据都可能会用于计费或诊断日志。如果您向外部服务器提供网址,强烈建议您不要在网址中包含凭证信息来验证对该服务器的请求。

Amazon WorkMail 如何使用 AWS KMS

Amazon WorkMail 在将所有 Amazon WorkMail 组织的邮箱中的所有邮件写入磁盘之前会以透明方式对这些邮件进行加密,并在用户访问这些邮件时以透明方式对其进行解密。您不能禁用加密。为了确保用于保护消息的加密密钥的安全,Amazon WorkMail 将与 AWS Key Management Service (AWS KMS) 集成。

Amazon WorkMail 还提供了一个使用户能够发送已签名或加密的电子邮件的选项。此加密功能不使用 AWS KMS。有关更多信息,请参阅 启用已签名或已加密的电子邮件

Amazon WorkMail 加密

在 Amazon WorkMail 中,每个组织可以包含多个邮箱,组织中的每个用户都有一个邮箱。所有消息(包括电子邮件和日历项)都存储在用户的邮箱中。

为了保护 Amazon WorkMail 组织中邮箱的内容,Amazon WorkMail 会在所有邮箱消息写入磁盘之前对其进行加密。任何客户提供的信息均为明文形式存储。

每条消息都使用唯一的数据加密密钥进行加密。邮件密钥受邮箱密钥保护,邮箱密钥是仅用于该邮箱的唯一加密密钥。对于始终对 AWS KMS 加密的组织,使用 AWS KMS 客户主密钥 (CMK) 对邮箱密钥进行加密。下图显示了 AWS KMS 中加密消息、加密消息密钥、加密邮箱密钥和组织中 CMK 之间的关系。

加密您的 Amazon WorkMail 邮箱

为组织设置 CMK

在创建 Amazon WorkMail 组织时,您可以为组织选择 AWS KMS 客户主密钥 (CMK)。此 CMK 保护该组织中的所有邮箱密钥。

您可以为 Amazon WorkMail 选择默认的 AWS 托管 CMK,也可以选择自己拥有和管理的现有客户托管 CMK。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》中的客户主密钥 (CMKs)您可以为每个组织选择相同的 CMK 或不同的 CMK,但一旦选择 CMK,就无法更改它。

重要

Amazon WorkMail 仅支持对称 CMK。您不能使用非对称 CMK。要获取确定 CMK 是对称还是非对称密钥的帮助,请参阅《AWS Key Management Service 开发人员指南》中的识别对称和非对称 CMK

要查找组织的 CMK,请使用记录对 AWS CloudTrail 的调用的 AWS KMS 日志条目。

每个邮箱的唯一加密密钥

当您创建邮箱时,Amazon WorkMail 会在 AWS KMS 外部为邮箱生成唯一的 256 位高级加密标准 (AES) 对称加密密钥,称为其“邮箱密钥”。Amazon WorkMail 使用邮箱密钥来保护邮箱中每封邮件的加密密钥。

为了保护邮箱密钥,Amazon WorkMail 调用 AWS KMS 来使用组织的 CMK 加密邮箱密钥。然后,它将加密的邮箱密钥存储在邮箱元数据中。

注意

Amazon WorkMail 使用对称邮箱加密密钥来保护消息密钥。以前,Amazon WorkMail 使用非对称密钥对来保护每个邮箱。它使用公有密钥加密每个消息密钥,并使用私有密钥解密该密钥。私有邮箱密钥受组织的 CMK 保护。较旧的邮箱可能使用非对称邮箱密钥对。此更改不会影响邮箱或其消息的安全。

加密每封邮件

当用户将邮件添加到邮箱时,Amazon WorkMail 会在 AWS KMS 外部为邮件生成一个唯一的 256 位 AES 对称加密密钥。它使用这个消息密钥对消息进行加密。Amazon WorkMail 会在邮箱密钥下加密消息密钥,并将加密的消息密钥与消息一起存储。然后,它使用组织的 CMK 加密邮箱密钥。

创建新邮箱

当 Amazon WorkMail 创建邮箱时,它会使用以下过程准备邮箱以保存加密的邮件。

  • Amazon WorkMail 会在 AWS KMS 外部为邮箱生成一个唯一的 256 位 AES 对称加密密钥。

  • Amazon WorkMail 调用 AWS KMS Encrypt 操作。它为组织传入邮箱密钥和客户主密钥 (CMK) 的标识符。AWS KMS 返回使用 CMK 加密的邮箱密钥的密文。

  • Amazon WorkMail 将加密的邮箱密钥与邮箱元数据一起存储。

加密邮箱消息

要加密消息,Amazon WorkMail 使用以下过程。

  1. Amazon WorkMail 为消息生成一个唯一的 256 位 AES 对称密钥。它使用明文消息密钥和高级加密标准 (AES) 算法在 AWS KMS 外加密消息。

  2. 为保护邮箱密钥下的消息密钥,Amazon WorkMail 需要解密邮箱密钥(它始终以加密形式存储)。

    Amazon WorkMail 调用 AWS KMS Decrypt 操作,并传入加密的邮箱密钥。AWS KMS 使用组织的 CMK 解密邮箱密钥,并将明文邮箱密钥返回到 Amazon WorkMail。

  3. Amazon WorkMail 使用明文邮箱密钥和高级加密标准 (AES) 算法在 AWS KMS 外加密消息密钥。

  4. Amazon WorkMail 将加密的消息密钥存储在加密消息的元数据中,以便对其进行解密。

解密邮箱消息

要解密消息,Amazon WorkMail 使用以下过程。

  1. Amazon WorkMail 调用 AWS KMS Decrypt 操作,并传入加密的邮箱密钥。AWS KMS 使用组织的 CMK 解密邮箱密钥,并将明文邮箱密钥返回到 Amazon WorkMail。

  2. Amazon WorkMail 使用明文邮箱密钥和高级加密标准 (AES) 算法在 AWS KMS 外对加密的消息密钥进行解密。

  3. Amazon WorkMail 使用明文消息密钥来解密加密的消息。

缓存邮箱密钥

为了提高性能并最大限度地减少对 AWS KMS 的调用,Amazon WorkMail 在本地为每个客户端缓存每个明文邮箱密钥最多 1 分钟。在缓存期结束时,将删除邮箱密钥。如果在缓存期间需要该客户端的邮箱密钥,则 Amazon WorkMail 可以从缓存中获取它而不是调用 AWS KMS。邮箱密钥在缓存中受保护,并且永远不会以明文形式写入磁盘中。

授权使用 CMK

当 Amazon WorkMail 在加密操作中使用客户主密钥 (CMK) 时,它代表邮箱管理员。

要代表您将 AWS KMS 客户主密钥 (CMK) 用于密钥,管理员必须拥有以下权限。您可以在 IAM 策略或密钥策略中指定这些所需的权限。

  • kms:Encrypt

  • kms:Decrypt

  • kms:CreateGrant

要仅允许将 CMK 用于源自 Amazon WorkMail 的请求,可将 kms:ViaService 条件键与 workmail.<region>.amazonaws.com 值结合使用。

您还可以在加密上下文中将密钥或值用作将 CMK 用于加密操作的条件。例如,可在 IAM 或密钥策略文档中使用字符串条件运算符,或在授权中使用授权约束。

AWS 托管 CMK 的密钥策略

仅当 Amazon WorkMail 代表用户发出请求时,用于 Amazon WorkMail 的 AWS 托管 CMK 的密钥策略才向用户授予将 CMK 密钥用于指定操作的权限。密钥策略不允许任何用户直接使用 CMK。

此密钥策略与所有 AWS 托管密钥的策略类似,均由该服务来建立。您无法更改密钥策略,但可以随时查看。有关详细信息,请参阅《AWS Key Management Service 开发人员指南》中的查看密钥策略

密钥策略中的策略语句具有以下影响:

  • 仅当 Amazon WorkMail 代表账户和区域中的用户发出请求时,才允许这些用户使用 CMK 执行加密操作和创建授权。kms:ViaService 条件密钥可强制实施此限制。

  • 允许 AWS 创建 IAM 策略以允许用户查看 CMK 属性和撤销授权。

下面是用于 Amazon WorkMail 的 AWS 托管 CMK 示例的密钥策略。

JSON
{ "Version":"2012-10-17", "Id" : "auto-workmail-1", "Statement" : [ { "Sid" : "Allow access through WorkMail for all principals in the account that are authorized to use WorkMail", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:Decrypt", "kms:CreateGrant", "kms:ReEncrypt*", "kms:DescribeKey", "kms:Encrypt" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "workmail.us-east-1.amazonaws.com", "kms:CallerAccount" : "111122223333" } } }, { "Sid" : "Allow direct access to key metadata to the account", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:Describe*", "kms:List*", "kms:Get*", "kms:RevokeGrant" ], "Resource" : "*" } ] }

使用授权来授权 Amazon WorkMail

除了密钥策略之外,Amazon WorkMail 还使用授权向每个组织的 CMK 添加权限。要查看有关账户中 CMK 的授权,请使用 ListGrants 操作。

Amazon WorkMail 使用授权向组织的 CMK 添加以下权限。

  • 添加 kms:Encrypt 权限以允许 Amazon WorkMail 加密邮箱密钥。

  • 添加 kms:Decrypt 权限以允许 Amazon WorkMail 使用 CMK 解密邮箱密钥。Amazon WorkMail 在授予中需要此权限,因为读取邮箱消息的请求使用正在阅读消息的用户的安全上下文。该请求不使用 AWS 账户的凭证。当您选择组织的 CMK 时,Amazon WorkMail 会创建此授权。

为了创建授权,Amazon WorkMail 代表创建组织的用户调用 CreateGrant。用于创建授权的权限来自密钥策略。此策略允许账户用户在 Amazon WorkMail 代表授权用户发出请求时对组织的 CMK 调用 CreateGrant

该密钥策略还允许账户根用户撤销对 AWS 托管密钥的授权。但是,如果您撤销授权,Amazon WorkMail 将无法解密邮箱中的已加密数据。

Amazon WorkMail 加密上下文

加密上下文是一组包含任意非机密数据的键值对。在请求中包含加密上下文以加密数据时,AWS KMS 以加密方式将加密上下文绑定到加密的数据。要解密数据,您必须传入相同的加密上下文。有关更多信息,请参阅 AWS Key Management Service 开发人员指南中的加密内容

Amazon WorkMail 在所有 AWS KMS 加密操作中使用相同的加密上下文格式。您可以使用加密上下文在审计记录和日志中标识加密操作(例如 AWS CloudTrail),并将加密上下文用作在策略和授权中进行授权的条件。

在其对 AWS KMS 的 EncryptDecrypt 请求中,Amazon WorkMail 使用加密上下文,其中密钥为 aws:workmail:arn,值是组织的 Amazon Resource Name (ARN)。

"aws:workmail:arn":"arn:aws:workmail:region:account ID:organization/organization-ID"

例如,以下加密上下文将示例组织 ARN 包含在欧洲地区(爱尔兰) (eu-west-1) 区域中。

"aws:workmail:arn":"arn:aws:workmail:eu-west-1:111122223333:organization/m-a123b4c5de678fg9h0ij1k2lm234no56"

监控 Amazon WorkMail 与 AWS KMS 的交互

您可以使用 AWS CloudTrail 和 Amazon CloudWatch Logs 跟踪 Amazon WorkMail 代表您发送到 AWS KMS 的请求。

Encrypt

当您创建邮箱时,Amazon WorkMail 会生成一个邮箱密钥并调用 AWS KMS 来加密邮箱密钥。Amazon WorkMail 使用明文邮箱密钥和 Amazon WorkMail 组织的 CMK 的标识符将 Encrypt 请求发送到 AWS KMS。

记录 Encrypt 操作的事件与以下示例事件类似。该用户是 Amazon WorkMail 服务。参数包含 CMK ID (keyId) 和 Amazon WorkMail 组织的加密上下文。Amazon WorkMail 还传入邮箱密钥,而不是将它记录在 CloudTrail 日志中。

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService", "invokedBy": "workmail.eu-west-1.amazonaws.com" }, "eventTime": "2019-02-19T10:01:09Z", "eventSource": "kms.amazonaws.com", "eventName": "Encrypt", "awsRegion": "eu-west-1", "sourceIPAddress": "workmail.eu-west-1.amazonaws.com", "userAgent": "workmail.eu-west-1.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:workmail:arn": "arn:aws:workmail:eu-west-1:111122223333:organization/m-a123b4c5de678fg9h0ij1k2lm234no56" }, "keyId": "arn:aws:kms:eu-west-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" }, "responseElements": null, "requestID": "76e96b96-7e24-4faf-a2d6-08ded2eaf63c", "eventID": "d5a59c18-128a-4082-aa5b-729f7734626a", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:eu-west-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333", "sharedEventID": "d08e60f1-097e-4a00-b7e9-10bc3872d50c" }

Decrypt

当您添加、查看或删除邮箱邮件时,Amazon WorkMail 会要求 AWS KMS 来解密邮箱密钥。Amazon WorkMail 使用加密邮箱密钥和 Amazon WorkMail 组织的 CMK 的标识符将 Decrypt 请求发送到 AWS KMS。

记录 Decrypt 操作的事件与以下示例事件类似。该用户是 Amazon WorkMail 服务。参数包含未记录在日志中的加密邮箱密钥(作为加密文字 blob)和 Amazon WorkMail 组织的加密上下文。AWS KMS 从加密文字派生 CMK 的 ID。

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService", "invokedBy": "workmail.eu-west-1.amazonaws.com" }, "eventTime": "2019-02-20T11:51:10Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "eu-west-1", "sourceIPAddress": "workmail.eu-west-1.amazonaws.com", "userAgent": "workmail.eu-west-1.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:workmail:arn": "arn:aws:workmail:eu-west-1:111122223333:organization/m-a123b4c5de678fg9h0ij1k2lm234no56" } }, "responseElements": null, "requestID": "4a32dda1-34d9-4100-9718-674b8e0782c9", "eventID": "ea9fd966-98e9-4b7b-b377-6e5a397a71de", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:eu-west-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333", "sharedEventID": "241e1e5b-ff64-427a-a5b3-7949164d0214" }