

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

# 監控 Amazon ElastiCache 叢集的靜態加密
<a name="monitor-amazon-elasticache-clusters-for-at-rest-encryption"></a>

*Abhishek Agawane，Amazon Web Services*

## 總結
<a name="monitor-amazon-elasticache-clusters-for-at-rest-encryption-summary"></a>

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) 通知，設定追蹤違規的變數，並將違規訊息傳送至您提供的電子郵件地址。

## 先決條件和限制
<a name="monitor-amazon-elasticache-clusters-for-at-rest-encryption-prereqs"></a>

**先決條件**
+ 作用中 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
<a name="monitor-amazon-elasticache-clusters-for-at-rest-encryption-architecture"></a>

**工作流程架構**

![\[用於監控 ElastiCache 叢集的工作流程。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/2917ebc2-3cfe-4530-887d-2c7eb7085453/images/59a36936-e9a8-4f12-a49d-776ff7959053.png)


1. 使用者透過 AWS 管理主控台、 AWS Command Line Interface (AWS CLI) 或 API 呼叫啟動 ElastiCache 複寫群組。

1. 呼叫 `CreateReplicationGroup `API 時，ElastiCache 會產生 EventBridge 事件。

1. EventBridge 規則會觸發並呼叫 Lambda 函數以進行合規檢查。

1. Lambda 函數會處理事件，並檢查 ElastiCache 叢集上是否啟用靜態加密。

1. 如果偵測到加密違規，Lambda 函數會將通知訊息發佈至 SNS 主題。

1. Amazon SNS 會將加密合規違規的電子郵件通知傳送給管理員。

**自動化和擴展**
+ 如果您使用的是 AWS Organizations，則可以使用 [AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) 將此範本部署到您要監控的多個帳戶中。

## 工具
<a name="monitor-amazon-elasticache-clusters-for-at-rest-encryption-tools"></a>

**AWS 服務**
+ [Amazon ElastiCache](https://docs.aws.amazon.com/elasticache/) 可讓您在 中輕鬆設定、管理和擴展分散式記憶體內快取環境 AWS 雲端。它提供高效能、可調整大小且符合成本效益的記憶體內快取，同時消除與部署和管理分散式快取環境相關的複雜性。ElastiCache 可與 Redis 和 Memcached 引擎搭配使用。
+ [AWS CloudFormation](https://aws.amazon.com/cloudformation/) 可協助您建立和設定 AWS 資源的模型、快速且一致地佈建資源，以及在整個生命週期中進行管理。您可以使用範本來描述您的資源及其相依性，並將它們一起啟動和設定為堆疊，而不是個別管理資源。您可以管理和佈建跨多個 和 的堆疊 AWS 帳戶 AWS 區域。
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/) 提供近乎即時的系統事件串流，描述 AWS 資源的變更。EventBridge 會在操作變更發生時得知，並視需要採取修正動作，方法是傳送訊息以回應環境、啟用 函數、進行變更，以及擷取狀態資訊。
+ [AWS Lambda](https://aws.amazon.com/lambda/) 是一種運算服務，支援執行程式碼，無需佈建或管理伺服器。Lambda 只會在需要時執行程式碼，並自動從每天的幾個請求擴展到每秒數千個請求。只需為使用的運算時間支付費用，一旦未執行程式碼，就會停止計費。 
+ [Amazon SNS](https://aws.amazon.com/sns/) 會協調和管理發佈者和用戶端之間的訊息傳送，包括 Web 伺服器和電子郵件地址。訂閱者會收到發佈到所訂閱主題的所有訊息，且某一主題的所有訂閱者均會收到相同訊息。

**Code**

此模式的程式碼可在 GitHub [Monitor Amazon ElastiCache 叢集中用於靜態加密](https://github.com/aws-samples/sample-Monitor_Amazon_ElastiCache_clusters_for_at-rest_encryption)儲存庫。如需如何使用儲存庫中檔案的資訊，請參閱 [Epics 一節](#monitor-amazon-elasticache-clusters-for-at-rest-encryption-epics)。

## 最佳實務
<a name="monitor-amazon-elasticache-clusters-for-at-rest-encryption-best-practices"></a>

**部署**
+ 在部署此控制項之前，請確定 AWS CloudTrail 正在記錄 ElastiCache API 呼叫。
+ 這是區域性控制項；在您使用 ElastiCache 的每個 AWS 區域 中部署控制項。
+ 在開發/測試環境中驗證解決方案，再將其部署到生產環境。

**安全性**
+ 若要增強對加密金鑰的控制，請使用客戶受管 KMS 金鑰。
+ Review AWS Identity and Access Management (IAM) 許可，以確保 Lambda 執行角色的最低權限存取。
+ 設定無效字母佇列中訊息的提醒。

**操作**
+ 設定適當的日誌保留，以平衡合規需求與成本。
+ 調校 Lambda 的預留並行，以根據您的 ElastiCache 建立頻率進行調整。
+ 訂閱多個電子郵件地址至 Amazon SNS 以取得團隊通知。

**監控**
+ 檢閱 Amazon CloudWatch 警示，以確保警示閾值符合您的操作需求。
+ 定期監控 Lambda 指標執行持續時間和錯誤率。
+ 定期稽核違規，以檢閱加密合規通知。

## 史詩
<a name="monitor-amazon-elasticache-clusters-for-at-rest-encryption-epics"></a>

### 部署安全控制
<a name="deploy-the-security-control"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 從 GitHub 下載程式碼。 | 從 GitHub 複製或下載[程式碼儲存庫](https://github.com/aws-samples/sample-Monitor_Amazon_ElastiCache_clusters_for_at-rest_encryption)。儲存庫包含 檔案`index.py`和 `elasticache_encryption_at_rest.yml`。 | 雲端架構師 | 
| 建立 Lambda 部署套件。 | 從 Python 程式碼建立兩個 .zip 檔案：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/monitor-amazon-elasticache-clusters-for-at-rest-encryption.html) | 雲端架構師 | 
| 將程式碼上傳至 S3 儲存貯體。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/monitor-amazon-elasticache-clusters-for-at-rest-encryption.html) | 雲端架構師  | 
| 部署 CloudFormation 範本。 | 在與 S3 儲存貯體 AWS 區域 相同的 中開啟[CloudFormation 主控台](https://console.aws.amazon.com/cloudformation/)，並部署程式碼儲存庫中提供`elasticache_encryption_at_rest.yml`的檔案。在下一個 Epic 中，提供範本參數的值。 | 雲端架構師  | 

### 完成 CloudFormation 範本中的參數
<a name="complete-the-parameters-in-the-cloudformation-template"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 提供 S3 儲存貯體名稱。 | 輸入您在第一個特徵中建立或選取的 S3 儲存貯體名稱。此 S3 儲存貯體包含 Lambda 程式碼的 .zip 檔案，且必須與要評估的 CloudFormation 範本和資源 AWS 區域 位於相同的 中。  | 雲端架構師 | 
| 提供 S3 金鑰。 | 提供 Lambda 程式碼 .zip 檔案在 S3 儲存貯體中的位置，不帶正斜線 （例如 `ElasticCache-EncryptionAtRest.zip`或 `controls/ElasticCache-EncryptionAtRest.zip`)。 | 雲端架構師  | 
| 提供電子郵件地址。 | 提供您要接收違規通知的作用中電子郵件地址。  | 雲端架構師 | 
| 指定記錄層級。 | 指定記錄層級和詳細程度。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/monitor-amazon-elasticache-clusters-for-at-rest-encryption.html) | 雲端架構師  | 

### 確認訂閱
<a name="confirm-the-subscription"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 確認電子郵件訂閱。 | 當 CloudFormation 範本成功部署時，它會傳送訂閱訊息到您提供的電子郵件地址。若要接收通知，您必須確認此電子郵件訂閱。 | 雲端架構師 | 

## 疑難排解
<a name="monitor-amazon-elasticache-clusters-for-at-rest-encryption-troubleshooting"></a>


| 問題 | 解決方案 | 
| --- | --- | 
| ** **未觸發 Lambda 函數 | **徵狀**：建立或修改 ElastiCache 叢集後CloudWatch 中沒有日誌。**解決方案：**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/monitor-amazon-elasticache-clusters-for-at-rest-encryption.html) | 
| 沒有電子郵件通知 | **徵狀**：Lambda 函數已成功執行，但您不會收到任何電子郵件通知。**解決方案：**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/monitor-amazon-elasticache-clusters-for-at-rest-encryption.html) | 
| 許可問題 | **徵狀**：*存取 Lambda 函數 CloudWatch 日誌中的拒絕*錯誤。 CloudWatch **解決方案：**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/monitor-amazon-elasticache-clusters-for-at-rest-encryption.html) | 

## 相關資源
<a name="monitor-amazon-elasticache-clusters-for-at-rest-encryption-resources"></a>
+ [從 CloudFormation 主控台建立堆疊 ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)(CloudFormation 文件）
+ [ElastiCache (Redis OSS) 中的靜態加密](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/at-rest-encryption.html) (ElastiCache 文件）