適用於 Amazon 的靜態資料加密 SES - Amazon Simple Email Service

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

適用於 Amazon 的靜態資料加密 SES

根據預設,Amazon SES 會加密所有靜態資料。預設情況下加密有助於降低保護資料所涉及的營運負荷和複雜性。加密也可讓您建立符合嚴格加密法規遵循和法規需求的郵件管理員封存檔。

SES提供下列加密選項:

  • AWS 擁有的金鑰 — 預設SES會使用這些金鑰。您無法檢視、管理或使用 AWS 擁有的密鑰,或審核其使用。不過,您不需要採取任何動作或變更任何程式,即可保護加密您資料的金鑰。如需詳細資訊,請參閱 AWS 中擁有的金鑰 AWS Key Management Service 開發人員指南

  • 客戶管理金鑰 — SES 支援使用您建立、擁有和管理的對稱客戶管理金鑰。由於您可以完全控制加密,因此您可以執行以下工作:

    • 建立和維護金鑰政策

    • 建立和維護IAM政策和補助金

    • 啟用和停用金鑰政策

    • 輪換金鑰密碼編譯資料

    • 新增標籤

    • 建立金鑰別名

    • 安排金鑰供刪除

    若要使用您自己的金鑰,請在建立SES資源時選擇客戶管理的金鑰。

    如需詳細資訊,請參閱中的客戶管理金鑰 AWS Key Management Service 開發人員指南

注意

SES自動啟用靜態加密 AWS 擁有免費的密鑰。

然而, AWS KMS 使用客戶管理的金鑰需要支付費用。如需有關定價的詳細資訊,請參閱 AWS Key Management Service 定價

建立客戶受管金鑰

您可以使用 AWS Management Console,或 AWS KMS APIs.

建立對稱客戶受管金鑰

遵循中建立對稱加密KMS金鑰的步驟 AWS Key Management Service 開發人員指南

注意

若要封存,您的金鑰必須符合下列需求:

  • 金鑰必須是對稱的。

  • 關鍵材料原點必須是AWS_KMS

  • 金鑰用法必須是ENCRYPT_DECRYPT

金鑰政策

金鑰政策會控制客戶受管金鑰的存取權限。每個客戶受管金鑰都必須只有一個金鑰政策,其中包含決定誰可以使用金鑰及其使用方式的陳述式。在建立客戶受管金鑰時,可以指定金鑰政策。如需詳細資訊,請參閱「管理客戶受管金鑰的存取」AWS Key Management Service 開發人員指南

若要將客戶受管金鑰與 Mail Manager 封存搭配使用,您的金鑰原則必須允許下列API作業:

  • kms:DescribeKey— 提供客戶管理的金鑰詳細資料,SES以驗證金鑰。

  • kms:GenerateDataKey— 允許生SES成用於加密靜態數據的數據密鑰。

  • KMS: 解密 — 允許在將儲存的資料傳回SES給用戶端之前先解密。API

下列範例顯示典型的金鑰原則:

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

如需詳細資訊,請參閱在原則中指定權限 AWS Key Management Service 開發人員指南

如需疑難排解的詳細資訊,請參閱 < 疑難排解金鑰存取AWS Key Management Service 開發人員指南

指定用於郵件管理員封存的客戶管理金鑰

您可以指定客戶管理的金鑰作為使用的替代方案 AWS 擁有的密鑰。建立封存時,您可以輸入金鑰來指定資料金KMS鑰 ARN,Mail Manager 封存會使用該金鑰來加密封存中的所有客戶資料。

  • KMSkey ARN-一個密鑰標識符 AWS KMS 客戶管理的金鑰。輸入金鑰 ID、金鑰ARN、別名或別名ARN。

Amazon SES 加密環境

加密內容是一組選用的金鑰值對,包含資料的其他相關內容資訊。

AWS KMS 使用加密內容作為其他驗證資料,以支援已驗證的加密。當您在加密資料的要求中包含加密內容時, AWS KMS 將加密內容繫結至加密的資料。若要解密資料,您必須在請求中包含相同的加密內容。

注意

Amazon SES 不支援存檔建立的加密內容。而是使用IAM或KMS原則。例如:策略歸檔建立原則,請參閱本節稍後的。

Amazon SES 加密環境

SES在所有使用相同的加密上下文 AWS KMS 加密操作,其中密鑰是aws:ses:arn,值是資源 Amazon 資源名稱(ARN)。

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

使用加密內容進行監控

當您使用對稱的客戶管理金鑰來加密SES資源時,您也可以在稽核記錄和記錄中使用加密內容,以識別客戶管理金鑰的使用方式。加密內容也會出現在由 AWS CloudTrail 或 Amazon CloudWatch 日誌

使用加密內容控制對客戶受管金鑰的存取

您可以在金鑰政策和IAM政策中使用加密內容,conditions以控制對稱客戶管理金鑰的存取。您也可以在授予中使用加密內容條件。

SES在授權中使用加密內容限制來控制對您帳戶或地區中客戶管理金鑰的存取。授予條件會要求授予允許的操作使用指定的加密內容。

以下是授予特定加密內容之客戶受管金鑰存取權的金鑰政策陳述式範例。此政策陳述式中的條件會要求具有指定加密內容的加密內容條件。

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

歸檔建立原則

下列範例原則顯示如何啟用歸檔建立。這些政策適用於所有資產。

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

AWS KMS 政策

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

監控 Amazon 的加密金鑰 SES

當您使用 AWS KMS 客戶管理密鑰與您的 Amazon SES 資源,您可以使用 AWS CloudTrailAmazon CloudWatch 日誌來跟踪SES發送到的請求 AWS KMS.

下面的例子是 AWS CloudTrail 事件GenerateDataKeyDecryptDescribeKey以及KMS監控所呼叫以存取由SES客戶管理金鑰加密之資料的作業:

GenerateDataKey

當您啟用 AWS KMS 客戶管理的資源密鑰,SES創建一個唯一的表鍵。它發送一個GenerateDataKey請求 AWS KMS 指定 AWS KMS客戶管理的資源密鑰。

當您啟用 AWS KMS 用於 Mail Manager 封存資源的客戶管理金鑰,在靜態加密封存資料GenerateDataKey時會使用此金鑰。

下面的範例事件會記錄 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

當您存取加密資源時,會SES呼叫Decrypt作業以使用儲存的加密資料金鑰存取加密資料。

下面的範例事件會記錄 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使用DescribeKey操作來驗證是否 AWS KMS 與您的資源相關聯的客戶管理金鑰存在於帳戶和區域中。

下面的範例事件會記錄 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" }

進一步了解

下列資源會提供有關靜態資料加密的詳細資訊。