

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

# 市場分佈的安全檢查清單
<a name="ecommerce-security-checklist"></a>

電子商務和市場應用程式會處理敏感資料：客戶工作階段、付款流程和進階內容。此檢查清單涵蓋具有 ElastiCache (Valkey) 快取層的 CloudFront 分佈特定的安全控制。除了 中所述的一般 CloudFront 安全最佳實務之外，請套用這些控制項[設定安全存取和限制對內容的存取](SecurityAndPrivateContent.md)。

## 高級內容的已簽署 URLs 和 Cookie
<a name="ecommerce-sec-signed-urls"></a>

使用簽章URLs 或簽章的 Cookie 來限制存取需要授權的內容：高級產品預覽、購買的數位商品、限時促銷內容或賣方特定的資產。


**簽章的 URL 和簽章的 Cookie 比較**  

| Method | 使用時機 | 電子商務範例 | 
| --- | --- | --- | 
| 已簽章的 URL | 限制對個別檔案的存取。共用下載連結。不支援 Cookie 的用戶端。 | 已購買數位產品的一次性下載連結。已驗證賣方對高解析度產品映像的有限時間存取。 | 
| 已簽章的 Cookie | 提供對多個檔案的存取 （例如，高級方案中的所有資產）。避免現有內容的 URL 變更。 | 存取整個數位內容目錄的高級成員資格。跨多個頁面的訂閱者限定產品預覽。 | 

組態需求：
+ 使用 RSA 公有金鑰建立金鑰群組 （最低 2048 位元）。將私有金鑰存放在 AWS Secrets Manager 中，讓您的應用程式產生簽章。
+ 將快取行為**的限制檢視器存取**設定為**是**，並關聯金鑰群組。
+ 設定適合內容類型的過期時間：下載連結的分鐘數、瀏覽工作階段的小時數、訂閱存取的天數。
+ 當您需要依 IP 範圍限制或允許萬用字元路徑時，請使用自訂政策 （非標準政策）。

如需實作的詳細資訊，請參閱 [使用已簽署 URL 和已簽署 Cookie 提供私有內容](PrivateContent.md)。

## Amazon S3 的原始存取控制 (OAC)
<a name="ecommerce-sec-oac"></a>

原始存取控制可防止使用者繞過 CloudFront 直接存取您的 Amazon S3 儲存貯體。如果沒有 OAC，則發現儲存貯體 URL 的任何人都可以存取資產，而無需通過已簽署的 URL/Cookie 強制執行、WAF 規則或地理限制。如需完整的組態步驟，請參閱 [限制對 AWS 原始伺服器的存取](private-content-restricting-access-to-origin.md)。

**為所有 Amazon S3 原始伺服器啟用 OAC**  
建立 OAC，並將其與分佈中的每個 Amazon S3 原始伺服器建立關聯。更新儲存貯體政策，只允許具有符合您分佈 ARN 條件的 CloudFront 服務主體 (`cloudfront.amazonaws.com`)。

**移除公開存取**  
在 Amazon Simple Storage Service 主控台中，啟用儲存貯體上的 Amazon S3 封鎖公開存取。這是 Amazon S3 設定，而不是 CloudFront 設定。儲存貯體政策僅授予 CloudFront 的存取權 — 不需要公ACLs 或政策。如需詳細資訊，請參閱《[Amazon Simple Storage Service 使用者指南》中的封鎖對 Amazon S3 儲存體的公開存取](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)。 **

**使用 Amazon S3 REST API 端點**  
使用儲存貯體的 REST API 端點 (`bucket-name.s3.amazonaws.com`) 而非 Amazon S3 網站端點來設定原始伺服器。OAC 僅適用於 REST API 端點。

## 傳輸中加密
<a name="ecommerce-sec-encryption-transit"></a>

加密請求路徑中的所有連線：檢視者到 CloudFront、CloudFront 到原始伺服器，以及應用程式到 ElastiCache 快取。


**傳輸中加密組態**  

| 連線 | 設定 | 組態 | 
| --- | --- | --- | 
| 檢視器 → CloudFront | 檢視器通訊協定政策：僅限 HTTPS | 在所有快取行為`https-only`上將檢視器通訊協定政策設定為 `redirect-to-https`或 。使用 TLS 1.2 最低安全政策 (`TLSv1.2_2021`)。 | 
| CloudFront → S3 原始伺服器 | 原始通訊協定：HTTPS | S3 REST API 端點預設支援 HTTPS。當您使用 REST API 端點和 OAC 設定原始伺服器時，CloudFront 會使用 HTTPS。 | 
| CloudFront → ALB 原始伺服器 | 原始通訊協定：僅限 HTTPS | 將原始通訊協定政策設定為 `https-only`。在 ALB 上安裝有效的 TLS 憑證 （使用 AWS Certificate Manager)。CloudFront 會在連線時驗證憑證。 | 
| 應用程式 → ElastiCache | 傳輸中加密：已啟用 | 在 ElastiCache 主控台中，在複寫群組`TransitEncryptionEnabled`上啟用 。這是 ElastiCache 設定。從您的應用程式程式碼使用 TLS 連線。Valkey 和 Redis OSS 6.0 及更新版本原生支援傳輸中加密。 | 

## 快取叢集的 VPC 安全群組
<a name="ecommerce-sec-vpc-cache"></a>

ElastiCache 叢集會在 VPC 中執行，且只能接受來自您應用程式伺服器的連線。使用安全群組鏈結來限制存取。


**ElastiCache 的安全群組組態**  

| 安全群組 | 傳入規則 | 理由 | 
| --- | --- | --- | 
| 快取叢集 SG | 僅限 Application SG 的 TCP 6379 | 只有應用程式伺服器可以連線到快取。無法存取網際網路，也無法存取其他 服務。使用連接埠 6379 （預設 Valkey/Redis 連接埠） 或您設定的連接埠。 | 
| 應用程式 SG | 僅限來自 ALB SG 的 TCP 443 | 應用程式伺服器僅接受來自 ALB 的流量。結合快取叢集 SG，這會建立鏈結：CloudFront → ALB → 應用程式 → 快取。 | 

其他 VPC 強化：
+ 在沒有網際網路閘道路由的私有子網路中部署 ElastiCache 叢集。
+ 使用涵蓋至少 2 個可用區域的子網路群組，以獲得高可用性。
+ 為安全群組以外的其他身分驗證層啟用 ElastiCache 驗證字符 （密碼）。
+ 停用對 ElastiCache 叢集的公開存取 （預設，但驗證）。

## 其他安全控制
<a name="ecommerce-sec-additional"></a>

**限制僅限 CloudFront 的 ALB 存取**  
新增 CloudFront 隨每個請求傳送的自訂原始伺服器標頭 (`X-Origin-Verify`)。設定 ALB 或應用程式以拒絕不包含此標頭的請求。將標頭值存放在 中， AWS Secrets Manager 並定期輪換。或者，使用 CloudFront 受管字首清單，將 ALB 安全群組傳入規則限制為 CloudFront IP 範圍。

**在 分佈 AWS WAF 上啟用**  
將 AWS WAF Web ACL 與速率限制規則建立關聯，以防止購物車濫用、登入 APIs上的登入資料填充，以及庫存湊集。針對常見威脅 (SQL Injection、XSS) 使用受管規則群組，並針對應用程式特定模式使用自訂規則。

**合規的地理限制**  
如果您的市場在特定國家/地區營運，請啟用地理限制來封鎖來自您無權銷售或運送之區域的請求。在分佈層級套用。對於每個路徑的地理限制，請在 AWS WAF 具有 URL 路徑條件的 Web ACL 規則中使用地理比對條件。

**存取記錄**  
啟用 CloudFront 標準記錄或即時記錄，以偵測異常存取模式：下載連結用量突然遽增、從非預期區域存取，或在 API 端點上重複失敗的身分驗證嘗試。