本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
監控 Amazon ElastiCache 叢集的靜態加密
Abhishek Agawane,Amazon Web Services
總結
Amazon ElastiCache 是一種 Amazon Web Services (AWS) 服務,可提供高效能、可擴展且符合成本效益的快取解決方案,用於在雲端中分發記憶體內資料存放區或快取環境。它會從高輸送量和低延遲的記憶體內資料存放區擷取資料。此功能使其成為即時使用案例的熱門選擇,例如快取、工作階段存放區、遊戲、地理空間服務、即時分析和佇列。ElastiCache 提供 Redis 和 Memcached 資料存放區,兩者都提供低於毫秒的回應時間。
資料加密有助於防止未經授權的使用者讀取 Redis 叢集及其相關聯快取儲存系統上可用的敏感資料。這包括儲存至持久性媒體的資料,稱為靜態資料,以及可在用戶端與快取伺服器之間透過網路傳輸時攔截的資料,稱為傳輸中的資料。
您可以在建立複寫群組時,將 AtRestEncryptionEnabled參數設定為 ,以啟用 ElastiCache (Redis OSS) 的靜態加密true。啟用此參數時,它會在同步、備份和交換操作期間加密磁碟,並加密存放在 Amazon Simple Storage Service (Amazon S3) 中的備份。您無法在現有的複寫群組上啟用靜態加密。當您建立複寫群組時,您可以透過下列兩種方式啟用靜態加密:
透過選擇預設選項,該選項使用服務受管靜態加密。
使用客戶受管金鑰並提供來自 () 的金鑰 ID 或 Amazon Resource Name AWS Key Management Service (ARN)AWS KMS。
此模式提供監控 API 呼叫的安全性控制項,並在CreateReplicationGroup操作上產生 Amazon EventBridge Events 事件。此事件會呼叫執行 Python 指令碼的 AWS Lambda 函數。函數會從事件 JSON 輸入取得複寫群組 ID,並執行下列檢查,以判斷是否有未加密的叢集:
檢查
AtRestEncryptionEnabled金鑰是否存在。如果
AtRestEncryptionEnabled存在, 會檢查值,以查看其是否為true。如果
AtRestEncryptionEnabled值設定為false, 會使用 Amazon Simple Notification Service (Amazon SNS) 通知,設定追蹤違規的變數,並將違規訊息傳送至您提供的電子郵件地址。
先決條件和限制
先決條件
作用中 AWS 帳戶。
上傳所提供 Lambda 程式碼的 S3 儲存貯體。
您想要接收違規通知的電子郵件地址。
已啟用 ElastiCache 記錄,以存取所有 API 日誌。
限制
此偵測性控制是區域性的,必須部署在您要監控 AWS 區域 的每個 中。
控制項支援在虛擬私有雲端 (VPC) 中執行的複寫群組。
控制項支援執行下列節點類型的複寫群組:
R7g, R6gd, R6g, R5, R4, R3
M7g, M6g, M5, M4, M3
T4g、T3、T2
C7gn
產品版本
支援 ElastiCache (Redis OSS) 3.2.6 版或更新版本,以及 Valkey 7.2 版或更新版本
Architecture
工作流程架構

使用者透過 AWS 管理主控台、 AWS Command Line Interface (AWS CLI) 或 API 呼叫啟動 ElastiCache 複寫群組。
呼叫
CreateReplicationGroupAPI 時,ElastiCache 會產生 EventBridge 事件。EventBridge 規則會觸發並呼叫 Lambda 函數以進行合規檢查。
Lambda 函數會處理事件,並檢查 ElastiCache 叢集上是否啟用靜態加密。
如果偵測到加密違規,Lambda 函數會將通知訊息發佈至 SNS 主題。
Amazon SNS 會將加密合規違規的電子郵件通知傳送給管理員。
自動化和擴展
如果您使用的是 AWS Organizations,則可以使用 AWS CloudFormation StackSets 將此範本部署到您要監控的多個帳戶中。
工具
AWS 服務
Amazon ElastiCache 可讓您在 中輕鬆設定、管理和擴展分散式記憶體內快取環境 AWS 雲端。它提供高效能、可調整大小且符合成本效益的記憶體內快取,同時消除與部署和管理分散式快取環境相關的複雜性。ElastiCache 可與 Redis 和 Memcached 引擎搭配使用。
AWS CloudFormation
可協助您建立和設定 AWS 資源的模型、快速且一致地佈建資源,以及在整個生命週期中進行管理。您可以使用範本來描述您的資源及其相依性,並將它們一起啟動和設定為堆疊,而不是個別管理資源。您可以管理和佈建跨多個 和 的堆疊 AWS 帳戶 AWS 區域。 Amazon EventBridge 提供近乎即時的系統事件串流,描述 AWS 資源的變更。EventBridge 會在操作變更發生時得知,並視需要採取修正動作,方法是傳送訊息以回應環境、啟用 函數、進行變更,以及擷取狀態資訊。
AWS Lambda
是一種運算服務,支援執行程式碼,無需佈建或管理伺服器。Lambda 只會在需要時執行程式碼,並自動從每天的幾個請求擴展到每秒數千個請求。只需為使用的運算時間支付費用,一旦未執行程式碼,就會停止計費。 Amazon SNS
會協調和管理發佈者和用戶端之間的訊息傳送,包括 Web 伺服器和電子郵件地址。訂閱者會收到發佈到所訂閱主題的所有訊息,且某一主題的所有訂閱者均會收到相同訊息。
Code
此模式的程式碼可在 GitHub Monitor Amazon ElastiCache 叢集中用於靜態加密
最佳實務
部署
在部署此控制項之前,請確定 AWS CloudTrail 正在記錄 ElastiCache API 呼叫。
這是區域性控制項;在您使用 ElastiCache 的每個 AWS 區域 中部署控制項。
在開發/測試環境中驗證解決方案,再將其部署到生產環境。
安全性
若要增強對加密金鑰的控制,請使用客戶受管 KMS 金鑰。
Review AWS Identity and Access Management (IAM) 許可,以確保 Lambda 執行角色的最低權限存取。
設定無效字母佇列中訊息的提醒。
操作
設定適當的日誌保留,以平衡合規需求與成本。
調校 Lambda 的預留並行,以根據您的 ElastiCache 建立頻率進行調整。
訂閱多個電子郵件地址至 Amazon SNS 以取得團隊通知。
監控
檢閱 Amazon CloudWatch 警示,以確保警示閾值符合您的操作需求。
定期監控 Lambda 指標執行持續時間和錯誤率。
定期稽核違規,以檢閱加密合規通知。
史詩
| 任務 | Description | 所需的技能 |
|---|---|---|
從 GitHub 下載程式碼。 | 從 GitHub 複製或下載程式碼儲存庫 | 雲端架構師 |
建立 Lambda 部署套件。 | 從 Python 程式碼建立兩個 .zip 檔案:
| 雲端架構師 |
將程式碼上傳至 S3 儲存貯體。 |
| 雲端架構師 |
部署 CloudFormation 範本。 | 在與 S3 儲存貯體 AWS 區域 相同的 中開啟CloudFormation 主控台 | 雲端架構師 |
| 任務 | Description | 所需的技能 |
|---|---|---|
提供 S3 儲存貯體名稱。 | 輸入您在第一個特徵中建立或選取的 S3 儲存貯體名稱。此 S3 儲存貯體包含 Lambda 程式碼的 .zip 檔案,且必須與要評估的 CloudFormation 範本和資源 AWS 區域 位於相同的 中。 | 雲端架構師 |
提供 S3 金鑰。 | 提供 Lambda 程式碼 .zip 檔案在 S3 儲存貯體中的位置,不帶正斜線 (例如 | 雲端架構師 |
提供電子郵件地址。 | 提供您要接收違規通知的作用中電子郵件地址。 | 雲端架構師 |
指定記錄層級。 | 指定記錄層級和詳細程度。
| 雲端架構師 |
| 任務 | Description | 所需的技能 |
|---|---|---|
確認電子郵件訂閱。 | 當 CloudFormation 範本成功部署時,它會傳送訂閱訊息到您提供的電子郵件地址。若要接收通知,您必須確認此電子郵件訂閱。 | 雲端架構師 |
疑難排解
| 問題 | 解決方案 |
|---|---|
未觸發 Lambda 函數 | 徵狀:建立或修改 ElastiCache 叢集後CloudWatch 中沒有日誌。 解決方案:
|
沒有電子郵件通知 | 徵狀:Lambda 函數已成功執行,但您不會收到任何電子郵件通知。 解決方案:
|
許可問題 | 徵狀:存取 Lambda 函數 CloudWatch 日誌中的拒絕錯誤。 CloudWatch 解決方案:
|
相關資源
從 CloudFormation 主控台建立堆疊 (CloudFormation 文件)
ElastiCache (Redis OSS) 中的靜態加密 (ElastiCache 文件)