本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon SNS 的安全最佳實務
AWS 為 Amazon SNS 提供許多安全功能。在您自己的安全政策內容中檢閱這些安全功能。
注意
這些安全功能的指引適用於一般使用案例和實作。我們建議您在特定使用案例、架構和威脅模型的內容中檢閱這些最佳實務。
預防性最佳實務
以下是 Amazon SNS 的預防性安全最佳實務。
主題
確保主題無法公開存取
除非您明確要求網際網路上的任何人能夠讀取或寫入您的 Amazon SNS 主題,否則您應該確保您的主題不可公開存取 (全球所有人或任何已驗證 AWS 的使用者皆可存取)。
-
避免建立
Principal
設定為""
的政策。 -
避免使用萬用字元 (
*
)。請改為命名特定使用者或使用者。
實作最低權限存取
當您授與許可時,您可決定接收許可的人員、許可適用的主題,以及您要對這些主題允許的特定 API 動作。實作最低權限原則對於降低安全風險非常重要。它還有助於減少錯誤或惡意意圖的負面影響。
遵循授與最低權限的標準安全建議。也就是說,只授與執行特定工作所需的許可。您可以使用與使用者存取相關的安全政策組合來實作最低權限。
Amazon SNS 會使用發布者訂閱者模型,並需要三種類型的使用者帳戶存取權:
-
管理員 – 建立、修改和刪除主題的存取權。管理員也會控制主題政策。
-
發布者 – 傳送訊息至主題的存取權。
-
訂閱者 – 訂閱主題的存取權。
如需詳細資訊,請參閱下列章節:
針對需要 Amazon SNS 存取的應用程式 AWS 和服務使用 IAM 角色
對於 Amazon EC2 等應用程式 AWS 或服務,若要存取 Amazon SNS 主題,他們必須在其 AWS API 請求中使用有效的 AWS 登入資料。由於這些登入資料不會自動輪換,因此您不應直接將 AWS 登入資料存放在應用程式或 EC2 執行個體中。
反之,您應使用 IAM 角色來為需存取 Amazon SNS 的應用程式和服務管理暫時性登入資料。使用角色時,您不必將長期憑證 (如使用者名稱、密碼和存取金鑰) 分發至 EC2 執行個體或 AWS Lambda等 AWS 服務。相反地,該角色提供暫時性許可,讓應用程式在呼叫其他 AWS 資源時可以使用。
如需詳細資訊,請參閱 IAM 角色和常見的角色方案:使用者、應用程式和服務中的 IAM 使用者指南。
實作伺服器端加密
若要減輕資料外洩問題,請使用靜態加密,並利用與訊息儲存在不同位置的金鑰來加密訊息。伺服器端加密 (SSE) 會提供靜態資料加密。Amazon SNS 會在儲存資料時於訊息層級進行加密,並在您存取訊息時為您進行解密。SSE 使用 中管理的金鑰 AWS Key Management Service。當您驗證請求並具備存取許可時,存取加密與未加密主題的方式並無不同。
如需更多詳細資訊,請參閱 使用伺服器端加密保護 Amazon SNS 資料 及 管理 Amazon SNS 加密金鑰和成本。
強制加密傳輸中的資料
有可能 (但不建議) 發佈使用 HTTP 在傳輸期間未加密的訊息。不過,使用靜態加密主題時 AWS KMS,必須使用 HTTPS 來發佈訊息,以確保靜態和傳輸中加密。雖然主題不會自動拒絕 HTTP 訊息,但必須使用 HTTPS 來維護安全標準。
AWS 建議您使用 HTTPS 而非 HTTP。使用 HTTPS 時,郵件會在傳輸期間自動加密,即使 SNS 主題本身並未加密。如果沒有 HTTPS,則網路型攻擊者可以利用中間人之類的攻擊,竊聽網路流量或操控它。
若只要透過 HTTPS 強制執行加密連線,請將 aws:SecureTransport
新增至未加密 SNS 主題的 IAM 政策中的條件。這會強制訊息發佈者使用 HTTPS 而非 HTTP。您可使用以下範例政策做為指南:
{ "Id": "ExamplePolicy", "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPublishThroughSSLOnly", "Action": "SNS:Publish", "Effect": "Deny", "Resource": [ "arn:aws:sns:us-east-1:1234567890:test-topic" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } }, "Principal": "*" } ] }
考慮使用 VPC 端點來存取 Amazon SNS
如果您的主題必須能夠與之互動,但是這些主題絕對不能公開於網際網路,請使用 VPC 端點,將主題存取權限制為特定 VPC 內的主機。您可以使用主題政策,從特定的 VPC 端點或特定的 VPC 控制對主題的存取。
Amazon SNS VPC 端點會提供兩種控制訊息存取的方式:
-
您可以控制經由特定 VPC 端點允許的請求、使用者或群組。
-
您可以使用主題政策,控制哪些 VPC 或 VPC 端點可存取您的主題。
如需更多詳細資訊,請參閱 建立端點 及 為 Amazon SNS 建立 VPC 端點政策。
確保訂閱未設定為傳遞至原始 http 端點
避免將訂閱設定為傳遞至原始 http 端點。永遠有訂閱傳遞至端點網域名稱。例如,設定為傳遞至端點的訂閱 http://1.2.3.4/my-path
,應該更改為http://my.domain.name/my-path
。