使用伺服器端加密設定 Amazon SNS 主題加密 - Amazon Simple Notification Service

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

使用伺服器端加密設定 Amazon SNS 主題加密

Amazon SNS 支援伺服器端加密 (SSE),以使用 AWS Key Management Service () 保護訊息的內容AWS KMS。請依照下列指示,使用 Amazon SNS 主控台或 CDK 啟用 SSE。

選項 1:使用 啟用加密 AWS Management Console

  1. 登入 Amazon SNS 主控台

  2. 導覽至主題頁面,選取您的主題,然後選擇編輯

  3. 展開 Encryption (加密) 區段並執行下列動作:

    • 將加密切換為啟用

    • 選取 AWS 受管SNS金鑰 (alias/aws/sns) 做為加密金鑰。預設會選取此項。

  4. 選擇 Save changes (儲存變更)。

注意
  • 如果 不存在, AWS 受管金鑰 則會自動建立 。

  • 如果您沒有看到金鑰或許可不足,請向管理員詢問 kms:ListAliaseskms:DescribeKey

選項 2:使用 啟用加密 AWS CDK

若要在 CDK 應用程式中使用 AWS 受管SNS 金鑰,請新增下列程式碼片段:

import software.amazon.awscdk.services.sns.*; import software.amazon.awscdk.services.kms.*; import software.amazon.awscdk.core.*; public class SnsEncryptionExample extends Stack { public SnsEncryptionExample(final Construct scope, final String id) { super(scope, id); // Define the managed SNS key IKey snsKey = Alias.fromAliasName(this, "helloKey", "alias/aws/sns"); // Create the SNS Topic with encryption enabled Topic.Builder.create(this, "MyEncryptedTopic") .masterKey(snsKey) .build(); } }

其他資訊

  • 自訂 KMS 金鑰 – 您可以視需要指定自訂金鑰。在 Amazon SNS 主控台中,從清單中選取您的自訂 KMS 金鑰或輸入 ARN。

  • 自訂 KMS 金鑰的許可 – 如果使用自訂 KMS 金鑰,請在金鑰政策中包含下列項目,以允許 Amazon SNS 加密和解密訊息:

{ "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:service:region:customer-account-id:resource-type/customer-resource-id" }, "StringEquals": { "kms:EncryptionContext:aws:sns:topicArn": "arn:aws:sns:your_region:customer-account-id:your_sns_topic_name" } } }

對消費者的影響

啟用 SSE 不會變更訂閱者以透明方式使用 message. AWS manages 加密和解密的方式。訊息會保持靜態加密,並在交付給訂閱者之前自動解密。為了獲得最佳安全性, AWS 建議為所有端點啟用 HTTPS,以確保訊息的安全傳輸。