本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用伺服器端加密設定 Amazon SNS 主題加密
Amazon SNS 支援伺服器端加密 (SSE),以使用 AWS Key Management Service () 保護訊息的內容AWS KMS。請依照下列指示,使用 Amazon SNS 主控台或 CDK 啟用 SSE。
選項 1:使用 啟用加密 AWS Management Console
-
登入 Amazon SNS 主控台
。 -
導覽至主題頁面,選取您的主題,然後選擇編輯。
-
展開 Encryption (加密) 區段並執行下列動作:
-
將加密切換為啟用。
-
選取 AWS 受管SNS金鑰 (alias/aws/sns) 做為加密金鑰。預設會選取此項。
-
-
選擇 Save changes (儲存變更)。
注意
-
如果 不存在, AWS 受管金鑰 則會自動建立 。
-
如果您沒有看到金鑰或許可不足,請向管理員詢問
kms:ListAliases
和kms: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,以確保訊息的安全傳輸。