

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

# 當 AWS KMS 金鑰的金鑰狀態變更時，取得 Amazon SNS 通知
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes"></a>

*Shubham Harsora、Aromal Raj Jayarajan 和 Navdeep Pareek，Amazon Web Services*

## 總結
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-summary"></a>

刪除該金鑰時，會遺失與 AWS Key Management Service (AWS KMS) 金鑰相關聯的資料和中繼資料。刪除是不可復原的，您無法復原遺失的資料 （包括加密的資料）。您可以設定通知系統，提醒您 AWS KMS 金鑰的[金鑰狀態](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html#key-state-cmk-type)變更，以防止資料遺失。

此模式說明如何使用 Amazon EventBridge 和 Amazon Simple Notification Service (Amazon SNS) 來監控 AWS KMS 金鑰的狀態變更，以便在 AWS KMS 金鑰的金鑰狀態變更為 `Disabled`或 時發出自動通知`PendingDeletion`。例如，如果使用者嘗試停用或刪除 AWS KMS 金鑰，您將收到一封電子郵件通知，其中包含嘗試狀態變更的詳細資訊。您也可以使用此模式來排程刪除 AWS KMS 金鑰。

## 先決條件和限制
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-prereqs"></a>

**先決條件**
+ 具有 AWS Identity and Access Management (IAM) 使用者的作用中 AWS 帳戶
+ [AWS KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html)

## Architecture
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-architecture"></a>

**技術堆疊**
+ Amazon EventBridge
+ AWS Key Management Service (AWS KMS)
+ Amazon Simple Notification Service (Amazon SNS)

**目標架構**

下圖顯示用於建置自動化監控和通知程序的架構，用於偵測 AWS KMS 金鑰狀態的任何變更。

![\[建置自動化監控和通知程序的架構\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/2534df87-a6fd-4360-9b5d-4a8b1f533de3/images/0cb6a6b0-405b-4d26-ad04-2067176aa086.png)


該圖顯示以下工作流程：

1. 使用者停用或排程刪除 AWS KMS 金鑰。

1. EventBridge 規則會評估排程的 `Disabled`或 `PendingDeletion`事件。

1. EventBridge 規則會叫用 Amazon SNS 主題。

1. Amazon SNS 會傳送電子郵件通知訊息給使用者。

**注意**  
您可以自訂電子郵件訊息，以滿足組織的需求。我們建議您包含使用 AWS KMS 金鑰之實體的相關資訊。這可協助使用者了解刪除 AWS KMS 金鑰的影響。您也可以排定在刪除 AWS KMS 金鑰前一或兩天傳送的提醒電子郵件通知。

**自動化和擴展**

AWS CloudFormation 堆疊會部署所有必要的資源和服務，此模式才能運作。您可以在單一帳戶中獨立實作模式，或在 [AWS Organizations 中使用多個獨立帳戶或組織單位的 AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html)。 [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_ous.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_ous.html) AWS Organizations

## 工具
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-tools"></a>
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 可協助您設定 AWS 資源、快速且一致地佈建資源，以及在 AWS 帳戶和 AWS 區域的整個生命週期中管理這些資源。此模式的 CloudFormation 範本說明您想要的所有 AWS 資源，而 CloudFormation 會為您佈建和設定這些資源。
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) 是一種無伺服器事件匯流排服務，可協助您將應用程式與來自各種來源的即時資料連線。EventBridge 會從您自己的應用程式和 AWS 服務提供即時資料串流，並將該資料路由到 AWS Lambda 等目標。EventBridge 可簡化建置事件驅動型架構的程序。
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 可協助您建立和控制密碼編譯金鑰，以協助保護您的資料。
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 可協助您協調和管理發佈者和用戶端之間的訊息交換，包括 Web 伺服器和電子郵件地址。

**Code**

此模式的程式碼可在 GitHub [Monitor AWS KMS 金鑰停用和排程刪除](https://github.com/aws-samples/aws-kms-deletion-notification)儲存庫中使用。

## 史詩
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-epics"></a>

### 部署 CloudFormation 範本
<a name="deploy-the-cloudformation-template"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 複製儲存庫。 | 執行下列命令，將 GitHub [Monitor AWS KMS 金鑰停用並排程刪除](https://github.com/aws-samples/aws-kms-deletion-notification)儲存庫複製到本機電腦：`git clone https://github.com/aws-samples/aws-kms-deletion-notification` | AWS 管理員、雲端架構師 | 
| 更新範本的參數。 | 在程式碼編輯器中，開啟您從儲存庫複製的 `Alerting-KMS-Events.yaml` CloudFormation 範本，然後更新下列參數：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.html) | AWS 管理員、雲端架構師 | 
| 部署 CloudFormation 範本。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.html) | AWS 管理員、雲端架構師 | 

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


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 確認訂閱電子郵件。 | CloudFormation 範本成功部署後，Amazon SNS 會將訂閱確認訊息傳送至您在 CloudFormation 範本中提供的電子郵件地址。若要接收通知，您必須確認此電子郵件訂閱。如需詳細資訊，請參閱《Amazon SNS 開發人員指南》中的[確認訂閱](https://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.confirm.html)。 | AWS 管理員、雲端架構師 | 

### 測試訂閱通知
<a name="test-the-subscription-notification"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 停用 AWS KMS 金鑰。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.html) | AWS 管理員 | 
| 驗證訂閱。 | 確認您已收到 Amazon SNS 通知電子郵件。 | AWS 管理員 | 

### 清除資源
<a name="clean-up-resources"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 刪除 CloudFormation 堆疊。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.html) | AWS 管理員 | 

## 相關資源
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-resources"></a>
+ [AWS CloudFormation](https://aws.amazon.com/cloudformation/) (AWS 文件）
+ [在 AWS CloudFormation 主控台上建立堆疊](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) (AWS CloudFormation 文件）
+ 在 [AWS 上建置事件驅動型架構](https://catalog.us-east-1.prod.workshops.aws/workshops/63320e83-6abc-493d-83d8-f822584fb3cb/en-US) (AWS Workshop Studio 文件）
+ [AWS Key Management Service 最佳實務](https://d1.awsstatic.com/whitepapers/aws-kms-best-practices.pdf) (AWS 白皮書）
+ [AWS Key Management Service 的安全最佳實務](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html) (AWS KMS 開發人員指南）

## 其他資訊
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-additional"></a>

Amazon SNS 預設提供傳輸中加密。若要符合安全最佳實務，您也可以使用 AWS KMS 客戶受管金鑰啟用 Amazon SNS 的伺服器端加密。