Amazon 如何 WorkMail 使用 AWS KMS - AWS Key Management Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon 如何 WorkMail 使用 AWS KMS

本主題討論 Amazon 如何 WorkMail 用AWS KMS來加密電子郵件訊息。

Amazon WorkMail 概述

Amazon WorkMail 是安全的受管商業電子郵件和行事曆服務,可支援現有桌面和行動電子郵件用戶端。您可以建立 Amazon WorkMail 組織,並為其指派一或多個您擁有的電子郵件網域。然後,您可以為組織中的電子郵件使用者和通訊群組建立信箱。

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 key 下加密,永遠不會放任 AWS KMS 未加密。下圖顯示 AWS KMS 中在加密訊息、加密訊息金鑰、加密信箱金鑰及組織 KMS 金鑰之間的關係。

加密您的 Amazon WorkMail 信箱

組織的 KMS 金鑰

建立 Amazon 組 WorkMail 織時,您可以為組織選取AWS KMS key一個組織。這個 KMS 金鑰保護該組織中的所有信箱金鑰。

如果您使用快速設置過程來創建您的組織,Amazon WorkMail 使AWS 受管金鑰用 Amazon WorkMail (aws/workmail)在你的AWS 帳戶. 如果您使用標準設定,您可以選AWS 受管金鑰取 Amazon WorkMail 或您擁有和管理的客戶管理金鑰。您可以為每個組織選取相同的 KMS 金鑰或不同的 KMS 金鑰,但一旦選取 KMS 金鑰之後就不能變更。

重要

Amazon 僅 WorkMail 支持對稱加密 KMS 密鑰。您無法使用非對稱 KMS 金鑰來加密 Amazon 中的資料 WorkMail。如需判斷 KMS 金鑰是對稱還是不對稱的說明,請參閱 識別非對稱 KMS 金鑰

若要為您的組織尋找 KMS 金鑰,請使用 AWS CloudTrail 日誌項目,該項目記錄對 AWS KMS 的呼叫。

每個信箱的唯一加密金鑰

當您建立新信箱時,Amazon WorkMail 會為信箱產生唯一的 256 位元進階加密標準 (AES) 對稱加密金鑰 (稱為其信箱金鑰)。AWS KMSAmazon WorkMail 使用信箱金鑰來保護信箱中每個訊息的加密金鑰。

為了保護信箱金鑰,Amazon 會 WorkMail 呼叫AWS KMS在組織的 KMS 金鑰下加密信箱金鑰。然後,它會將加密的信箱金鑰存放在信箱中繼資料。

注意

Amazon WorkMail 使用對稱信箱加密金鑰來保護訊息金鑰。之前,Amazon 會使用非對稱 key pair 來 WorkMail 保護每個信箱。它使用公有金鑰來加密每個訊息金鑰,並使用私有金鑰來解密金鑰。私有信箱金鑰由組織的 KMS 金鑰保護。現有的信箱可能仍使用非對稱信箱金鑰對。此變更不會影響信箱或其訊息的安全性。

每個訊息的唯一加密金鑰

將訊息新增至信箱時,Amazon WorkMail 會為其外的訊息產生唯一的 256 位元 AES 對稱加密金鑰。AWS KMS它會使用此訊息金鑰來加密訊息。Amazon WorkMail 會加密信箱金鑰下的訊息金鑰,並將加密的訊息金鑰與訊息一起儲存。然後,它在組織的 KMS 金鑰下加密信箱金鑰。

建立新信箱

Amazon WorkMail 建立新信箱時,會使用下列程序準備信箱以保存加密訊息。

  • Amazon WorkMail 會為外部的信箱產生唯一的 256 位元 AES 對稱加密金鑰。AWS KMS

  • Amazon WorkMail 調用加AWS KMS操作。它傳入信箱金鑰和組織的 AWS KMS key 識別符。AWS KMS 傳回在 KMS 金鑰下加密之信箱金鑰的加密文字。

  • Amazon 會將加密的信箱金鑰與信箱中繼資料一起 WorkMail 儲存。

加密信箱訊息

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

  1. Amazon 為消息 WorkMail 生成一個唯一的 256 位 AES 對稱密鑰。它使用純文字訊息金鑰和進階加密標準 (AES) 演算法,在 AWS KMS 外部加密訊息。

  2. 為了保護信箱金鑰下的訊息金鑰,Amazon WorkMail 需要解密信箱金鑰,信箱金鑰一律以其加密形式儲存。

    Amazon WorkMail 呼叫「AWS KMS解密」作業,並傳入加密的信箱金鑰。 AWS KMS使用組織的 KMS 金鑰解密信箱金鑰,並將純文字信箱金鑰傳回給 Amazon。 WorkMail

  3. Amazon WorkMail 使用純文字信箱金鑰和進階加密標準 (AES) 演算法來加密外部的訊息金鑰。AWS KMS

  4. Amazon 會將加密的訊息金鑰 WorkMail 儲存在加密訊息的中繼資料中,以便對其進行解密。

解密信箱訊息

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

  1. Amazon WorkMail 呼叫「AWS KMS解密」作業,並傳入加密的信箱金鑰。 AWS KMS使用組織的 KMS 金鑰解密信箱金鑰,並將純文字信箱金鑰傳回給 Amazon。 WorkMail

  2. Amazon WorkMail 使用純文字信箱金鑰和進階加密標準 (AES) 演算法來解密外部的加密訊息金鑰。AWS KMS

  3. Amazon WorkMail 使用純文字訊息金鑰來解密加密的訊息。

快取信箱金鑰

為了提升效能並將呼叫減至最少AWS KMS,Amazon 會在本機 WorkMail 快取每個用戶端的每個純文字信箱金鑰,最長可達一分鐘。在快取期間結束時,就會移除信箱金鑰。如果在快取期間需要該用戶端的信箱金鑰,Amazon WorkMail 可以從快取取取得金鑰,而不必呼叫AWS KMS。信箱金鑰放在快取中保護,絕對不會以純文字形式寫入磁碟。

授權使用 KMS 金鑰

當 Amazon WorkMail 使用密碼編譯作業時,它會代表信箱管理員執行動作。AWS KMS key

若要代表您對機密使用 AWS KMS key,管理員必須擁有以下許可。您可以在 IAM 政策或金鑰策略中指定這些必要的許可。

  • kms:Encrypt

  • kms:Decrypt

  • kms:CreateGrant

若要允許 KMS 金鑰僅用於源自 Amazon 的請求 WorkMail,您可以使用帶有workmail.<region>.amazonaws.com值的 kms: ViaService 條件金鑰。

您也可以使用加密內容中的金鑰或值作為條件,以便將 KMS 金鑰用於密碼編譯操作。例如,您可以在 IAM 或金鑰政策文件中使用字串條件運算子,或在授權中使用授權限制。

AWS 受管金鑰 的金鑰政策

適用於 Amazon 的金鑰政策授 WorkMail 予使用者僅在 Amazon 代表使用者發出請求時,才允許 WorkMail 使用者將 KMS 金鑰用於指定的作業。AWS 受管金鑰金鑰政策不允許任何使用者直接使用 KMS 金鑰。

此金鑰政策與所有 AWS 受管金鑰 的政策一樣,都是由服務建立。您無法變更金鑰政策,但可以隨時進行檢視。如需詳細資訊,請參閱 檢視金鑰政策

金鑰政策中的政策陳述式具有下列效果:

  • 允許帳戶和區域中的使用者使用 KMS 金鑰進行加密操作和建立授權,但只有當請求來自 Amazon WorkMail 代表他們。kms:ViaService 條件金鑰會強制實施此限制。

  • 允許 AWS 帳戶 建立 IAM 政策,以便使用者檢視 KMS 金鑰屬性和撤銷授予。

以下是 Amazon 示例AWS 受管金鑰的關鍵政策 WorkMail。

{ "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 使用授權將許可新增至每個組織的 KMS 金鑰。若要檢視您帳戶中 KMS 金鑰的授權,請使用ListGrants作業。

Amazon WorkMail 使用授權將下列許可新增至組織的 KMS 金鑰。

  • 新增允許 Amazon WorkMail 加密信箱金鑰的kms:Encrypt權限。

  • 新增允許 Amazon 使 WorkMail 用 KMS 金鑰解密信箱金鑰的kms:Decrypt權限。Amazon 在授權中 WorkMail 需要此權限,因為讀取信箱訊息的請求會使用讀取訊息之使用者的安全內容。請求不會使用 AWS 帳戶 的憑證。Amazon WorkMail 會在您為組織選取 KMS 金鑰時建立此授權。

若要建立贈款,Amazon 會代表建立組織的使用者 WorkMail 呼叫CreateGrant。建立授與的許可來自金鑰政策。此政策允許帳戶使用者CreateGrant在 Amazon 代表授權使用者提出要求時, WorkMail 使用組織的 KMS 金鑰呼叫。

金鑰政策也允許帳戶根使用者在 AWS 受管金鑰 上撤銷授予。但是,如果您撤銷授權,Amazon 將 WorkMail 無法解密信箱中的加密資料。

Amazon WorkMail 加密環境

加密內容是一組金鑰/值對,其中包含任意非私密資料。在加密資料的請求中包含加密內容時,AWS KMS 會以密碼編譯方式將加密內容繫結至加密的資料。若要解密資料,您必須傳遞相同的加密內容。

Amazon 在所AWS KMS有加密操作中 WorkMail 使用相同的加密內容格式。您可以使用加密內容來識別稽核記錄和日誌 (例如 AWS CloudTrail) 中的這些密碼編譯操作,以及在政策和授與中做為授權的條件。

在其加密解密請求中AWS KMS,Amazon WorkMail 使用密鑰所在的加密上下文,值是組織的 Amazon 資源名稱(ARN)。aws:workmail:arn

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

例如,以下加密內容包含美國東部 (俄亥俄) (us-east-2) 區域中的範例組織 ARN。

"aws:workmail:arn":"arn:aws:workmail:us-east-2:111122223333:organization/m-68755160c4cb4e29a2b2f8fb58f359d7"

監控 Amazon WorkMail 互動 AWS KMS

您可以使用AWS CloudTrail和 Amazon CloudWatch 日誌來跟踪 Amazon 代表您 WorkMail 發送到AWS KMS的請求。

加密

當您建立新信箱時,Amazon WorkMail 會產生信箱金鑰並呼叫AWS KMS以加密信箱金鑰。Amazon WorkMail 會將加請求傳送至,其中AWS KMS包含純文字信箱金鑰和 Amazon WorkMail 組織 KMS 金鑰的識別碼。

記錄 Encrypt 操作的事件類似於以下範例事件。用戶是 Amazon WorkMail 服務。這些參數包括 Amazon WorkMail 組織的 KMS 金鑰 ID (keyId) 和加密內容。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-c6981ff7642446fa8772ba99c690e455" }, "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" }

解密

當您新增、檢視或刪除信箱訊息時,Amazon WorkMail 會AWS KMS要求您解密信箱金鑰。Amazon WorkMail 會將解密請求傳送至,其中AWS KMS包含加密信箱金鑰和 Amazon WorkMail 組織 KMS 金鑰的識別碼。

記錄 Decrypt 操作的事件類似於以下範例事件。用戶是 Amazon WorkMail 服務。這些參數包括未記錄在記錄中的加密信箱金鑰 (做為密文 Blob),以及 Amazon WorkMail 組織的加密內容。 AWS KMS從加密文字衍生出 KMS 金鑰的識別碼。

{ "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-c6981ff7642446fa8772ba99c690e455" } }, "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" }