本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon ElastiCache Well-Architected Lens 安全支柱
安全支柱著重於保護資訊和系統。重要主題包括資料的機密性和完整性、識別和管理誰可以透過權限為主的管理做什麼、保護系統,以及建立控制項來偵測安全事件。
主題
SEC 1:您採取哪些步驟來控制授權存取 ElastiCache 資料的行為?
問題難易度簡介:所有 ElastiCache 叢集都設計為可從 VPC 中的 Amazon Elastic Compute Cloud 執行個體、無伺服器函數 (AWS Lambda) 或容器 (Amazon Elastic Container Service) 進行存取。最常遇到的情況是從同一個 Amazon Virtual Private Cloud (Amazon Virtual Private Cloud) 內的 Amazon Elastic Compute Cloud 執行個體存取 ElastiCache 叢集。您必須先授權讓 Amazon EC2 執行個體存取叢集,才能從 Amazon EC2 執行個體連線至叢集。若要存取 VPC 中執行的 ElastiCache 叢集,則必須對叢集的網路輸入權限。
問題難易度優點:進入叢集的網路輸入是透過 VPC 安性群組控制。安全群組會做為您 Amazon EC2 執行個體的虛擬防火牆,負責控制傳入及傳出流量。傳入規則會控制傳入至您的執行個體的流量,以及傳出規則會控制從您的執行個體傳出的流量。以 ElastiCache 為例,啟動叢集時,它需要與安全群組建立關聯。這樣可確保組成叢集的所有節點都已設有傳入和傳出流量規則。此外,ElastiCache 會設定為只能在私有子網路上部署,如此就只能透過 VPC 的私有網路存取這些子網路。
-
[必要] 與叢集相關聯的安全群組會控制叢集的網路輸入和存取。根據預設,安全群組不會定義任何傳入規則,因此沒有 ElastiCache 的輸入路徑。若要啟用此功能,請在安全群組上設定傳入規則,指定來源 IP 地址/範圍、TCP 類型流量和 ElastiCache 叢集的連接埠 (例如 ElastiCache for Valkey 和 Redis OSS 的預設連接埠 6379)。雖然可以允許非常廣泛的輸入來源,例如 VPC (0.0.0.0/0) 中的所有資源,但建議在定義傳入規則時盡可能精細,例如僅授權對與特定安全群組關聯之 Amazon EC2 執行個體上執行的 Valkey 或 Redis OSS 用戶端的傳入存取。
[資源]:
-
【必要】 AWS Identity and Access Management 政策可指派給允許它們存取 ElastiCache 資料的 AWS Lambda 函數。若要啟用此功能,請使用
AWSLambdaVPCAccessExecutionRole
許可建立 IAM 執行角色,然後將該角色指派給 AWS Lambda 函數。[資源]:設定 Lambda 函數使其能夠存取 Amazon VPC 中的 Amazon ElastiCache:教學課程:設定 Lambda 函數使其能夠存取 Amazon VPC 中的 Amazon ElastiCache
SEC 2:您的應用程式是否需有額外的授權才能對 ElastiCache 進行網路為主及更高的控制?
問題難易度簡介:在需要限制或控制對個別用戶端層級叢集的存取的情況下,建議透過 AUTH 命令進行驗證。ElastiCache 身分驗證字符搭配選用的使用者和使用者群組管理,可讓 ElastiCache 在允許用戶端執行命令和存取金鑰之前要求密碼,藉此改善資料平面安全性。
問題難易度優點:為了協助保護資料的安全,ElastiCache 提供機制來防止未經授權存取您的資料。當中包括強制執行角色型存取控制 (RBAC) AUTH,或是強制用戶端使用 AUTH 字符 (密碼) 來連線到 ElastiCache,然後才能執行授權的命令。
-
【最佳】 對於適用於 Redis OSS 的 ElastiCache 6.x 版和更新版本,以及適用於 Valkey 的 ElastiCache 7.2 版和更新版本,請透過定義使用者群組、使用者和存取字串來定義身分驗證和授權控制。將使用者指派至使用者群組,然後將使用者群組指派至叢集。若要使用 RBAC,則必須在建立叢集時選取它,並且必須啟用傳輸中加密。確保您使用的是支援 TLS 的 Valkey 或 Redis OSS 用戶端,能夠利用 RBAC。
[資源]:
-
【最佳】 對於適用於 Redis OSS 的 6.x 之前的 ElastiCache 版本,除了設定強式字符/密碼和維護 AUTH 的嚴格密碼政策之外,最佳實務是輪換密碼/字符。ElastiCache 在任一特定時間點最多可管理兩 (2) 個身分驗證字符。您也可以修改叢集,以明確要求使用身分驗證字符。
SEC 3:是否存在可能不小心執行命令而造成資料遺失或故障的風險?
問題難易度簡介:有許多 Valkey 或 Redis OSS 命令,如果錯誤執行或由惡意執行者執行,可能會對操作產生負面影響。從效能和資料安全的角度來看,這些命令可能會產生預料之外的後果。例如,開發人員可能會在開發環境中例行呼叫 FLUSHALL 命令,而由於錯誤可能會在生產系統上不小心嘗試呼叫此命令,進而導致意外的資料遺失。
問題難易度優點:從適用於 Redis OSS 的 ElastiCache 5.0.3 版開始,您可以重新命名可能會對工作負載造成干擾的特定命令。重新命名命令有助於防止它們在叢集上意外執行。
-
[必要]
[資源]:
SEC 4:如何使用 ElastiCache 確保靜態資料加密
問題難易度簡介:雖然 ElastiCache 是記憶體內資料存放區,但可以加密任何可能作為叢集標準操作一部分而保留 (在儲存上) 的資料。這包括寫入 Amazon S3 的排程和手動備份,以及因同步和交換操作而儲存到磁碟儲存空間的資料。M6g 和 R6g 系列中的執行個體類型也具有永遠開啟記憶體內加密功能。
問題難易度優點:ElastiCache 提供選用的靜態加密,以提高資料安全性。
-
[必要] 只有在建立 ElastiCache 叢集 (複寫群組) 後,才能啟用靜態加密。無法藉由修改現有叢集來開始加密靜態資料。根據預設,ElastiCache 會提供和管理靜態加密中使用的金鑰。
[資源]:
-
[最佳] 利用 Amazon EC2 執行個體類型,它會在資料位於記憶體中時加密資料 (例如 M6g 或 R6g)。盡可能考慮管理自己的靜態加密金鑰。對於更嚴格的資料安全環境, AWS Key Management Service (KMS) 可用於自我管理客戶主金鑰 (CMK)。透過與 ElastiCache 整合 AWS Key Management Service,您可以建立、擁有和管理用於 ElastiCache 叢集靜態資料加密的金鑰。
[資源]:
SEC 5:如何使用 ElastiCache 加密傳輸中的資料?
問題難易度簡介:一般常會要求在傳輸過程中減少資料遭到入侵的情況。這代表分散式系統元件內的資料,以及應用程式用戶端和叢集節點之間的資料。ElastiCache 允許在用戶端和叢集之間以及叢集節點本身之間加密傳輸中的資料,以支援此要求。M6g 和 R6g 系列中的執行個體類型也具有永遠開啟記憶體內加密功能。
問題難易度優點:Amazon ElastiCache 傳輸中加密是一項選用功能,可讓您在資料最易遭受攻擊的點,也就是資料在地點間傳輸時,增加資料的安全性。
-
【必要】 只有在建立叢集 (複寫群組) 時,才能啟用傳輸中加密。請注意,由於加密/解密資料需要進行額外處理,因此實作傳輸中加密會對效能造成一些影響。若要了解其影響,建議您分別在啟用傳輸中加密之前和之後建立工作負載的基準。
[資源]:
SEC 6:如何限制對控制平面資源的存取權?
問題難易度簡介:IAM 政策和 ARN 為 ElastiCache for Valkey 和 Redis OSS 啟用精細存取控制,允許更嚴格的控制來管理叢集的建立、修改和刪除。
問題難易度優點:Amazon ElastiCache 資源 (例如複寫群組、節點等) 的管理工作可根據 IAM 政策限於具有特定許可的 AWS 帳戶,藉此改善資源的安全和可靠性。
-
【必要】 透過將特定 AWS Identity and Access Management政策指派給使用者來 AWS 管理對 Amazon ElastiCache 資源的存取,從而更精確地控制哪些帳戶可以在叢集上執行哪些動作。
[資源]:
SEC 7:如何偵測和回應安全事件?
問題難易度簡介:在啟用 RBAC 的情況下進行部署時,ElastiCache 會匯出 CloudWatch 指標以通知使用者有安全事件。這些指標有助於找出企圖進行驗證、存取金鑰,或連線的 RBAC 使用者企圖執行未獲授權之命令的失敗嘗試。
此外, AWS 產品和服務資源可透過自動化部署並記錄所有動作和修改,以供日後檢閱/稽核,協助保護整體工作負載。
問題難易度優點:藉由監控事件可讓您的組織根據您的需求、政策和程序做出回應。自動監控和回應這些安全事件,可強化您的整體安全態勢。
-
[必要] 熟悉與 RBAC 身分驗證和授權失敗相關的已發佈 CloudWatch 指標。
-
AuthenticationFailures = 嘗試向 Valkey 或 Redis OSS 驗證失敗
-
KeyAuthorizationFailures = 使用者嘗試在未經許可的情況下存取金鑰失敗
-
CommandAuthorizationFailures = 使用者嘗試在未經許可的情況下執行命令失敗
[資源]:
-
-
[最佳] 建議在這些指標上設定警示和通知,並視需要做出回應。
[資源]:
-
【最佳】 使用 Valkey 或 Redis OSS ACL LOG 命令來收集更多詳細資訊
[資源]:
-
[最佳] 熟悉 AWS 產品和服務功能,因為它與監控、記錄及分析 ElastiCache 部署和事件相關
[資源]: