

# SEC08-BP01 實作安全金鑰管理
<a name="sec_protect_data_rest_key_mgmt"></a>

 安全金鑰管理包括儲存、輪換、存取控制及監控保護工作負載的靜態資料所需的金鑰資料。

 **預期成果：**您擁有可擴展、可重複且自動化的金鑰管理機制。此機制會對金鑰資料強制執行最低權限存取，並且在金鑰可用性、機密性和完整性之間取得正確的平衡。您會監控金鑰的存取情況，若需要輪換金鑰資料，您可以使用自動化程序進行輪換。您不允許真人操作員存取金鑰資料。

**常見的反模式：**
+  真人存取未加密的金鑰資料。
+  建立自訂加密演算法。
+  存取金鑰資料的許可過於廣泛。

 **建立此最佳實務的優勢：**透過為工作負載建立安全的金鑰管理機制，就可以協助保護您的內容，防止未經授權的存取。此外，您可能需要依法加密您的資料。有效的金鑰管理解決方案能夠提供符合這些法規的技術機制，以保護金鑰資料。

 **未建立此最佳實務時的曝險等級：**高 

## 實作指引
<a name="implementation-guidance"></a>

 靜態資料加密是基本的安全控制。為了實作此控制，您的工作負載須採取某種機制，以安全儲存和管理用於加密靜態資料的金鑰資料。

 AWS 提供 AWS Key Management Service (AWS KMS) 來為 AWS KMS 金鑰提供耐用、安全和備援儲存。[許多 AWS 服務會與 AWS KMS 整合](https://aws.amazon.com/kms/features/#integration)，以支援資料加密。AWS KMS 使用 FIPS 140-3 3 級驗證的硬體安全模組來保護您的金鑰。沒有任何機制可將 AWS KMS 金鑰匯出為純文字。

 使用多帳戶策略部署工作負載時，您應將 AWS KMS 金鑰與使用金鑰的工作負載保存在相同的帳戶中。[這個分散式模型](https://docs.aws.amazon.com/prescriptive-guidance/latest/security-reference-architecture/application.html#app-kms)會將管理 AWS KMS 金鑰的責任歸在您的團隊身上。在其他使用案例中，您的組織可能會選擇將 AWS KMS 金鑰儲存到集中式帳戶中。此集中式結構須實施其他政策來實現跨帳戶存取權，才能讓工作負載帳戶存取儲存在集中式帳戶中的金鑰，但此結構可能較適合跨多個 AWS 帳戶 共用單一金鑰的使用案例。

 無論金鑰資料儲存在何處，您都應透過使用[金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)和 IAM 政策嚴格控管金鑰存取權。金鑰政策是控制 AWS KMS 金鑰存取權的主要方式。此外，AWS KMS 金鑰授權可提供 AWS 服務的存取權，以代表您加密和解密資料。檢閱 [AWS KMS 金鑰存取控制指引](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies-best-practices.html)。

 您應監控加密金鑰的使用情況，以偵測不尋常的存取模式。使用儲存在 AWS KMS 中 AWS 管理的金鑰和客戶管理的金鑰執行的操作可記錄在 AWS CloudTrail 中，並且應定期審查。務必特別注意監控金鑰銷毀事件。為了減少意外或惡意銷毀金鑰資料的情況，金鑰銷毀事件並不會立即刪除金鑰資料。嘗試刪除 AWS KMS 中的金鑰會受到[等待期](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html#deleting-keys-how-it-works)的約束 (預設為 30 天，最短 7 天)，讓管理員有時間檢閱這些動作，並在必要時撤回請求。

 大多數 AWS 服務會以顯而易見的方式使用 AWS KMS，您唯一要做的就是決定要使用 AWS 管理或客戶管理的金鑰。如果您的工作負載要求直接使用 AWS KMS 來加密或解密資料，則您應使用[封套加密](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)來保護您的資料。此 [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html) 可為您的應用程式提供用戶端加密基本類型，以實作封套加密並與 AWS KMS 整合。

### 實作步驟
<a name="implementation-steps"></a>

1.  確定金鑰的適當[金鑰管理選項](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt) (AWS 受管或客戶自管)。

   1.  為了方便使用，AWS 為大多數服務提供了 AWS 擁有和 AWS 管理的金鑰，其提供靜態加密功能，而不需要管理金鑰資料或金鑰政策。

   1.  使用客戶管理的金鑰時，請考慮使用預設金鑰存放區，以便在敏捷性、安全性、資料主權與可用性之間達到最佳平衡。其他使用案例可能會要求使用自訂金鑰存放區搭配 [AWS CloudHSM](https://aws.amazon.com/cloudhsm/) 或[外部金鑰存放區](https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html)。

1.  審核您用於工作負載的服務清單，以了解 AWS KMS 與服務整合的方式。例如，EC2 執行個體可以使用加密的 EBS 磁碟區，因此要確認從這些磁碟區建立的 Amazon EBS 快照同樣是使用客戶管理的金鑰加密，並減少意外洩漏未加密的快照資料。

   1.  [AWS 服務使用 AWS KMS 的方式](https://docs.aws.amazon.com/kms/latest/developerguide/service-integration.html) 

   1.  如需 AWS 服務提供之加密選項的詳細資訊，請參閱該服務之使用者指南或開發人員指南中的靜態加密主題。

1.  實作 AWS KMS：AWS KMS 可讓您輕鬆建立和管理金鑰，並控制多種 AWS 服務和應用程式中的加密使用方式。

   1.  [入門：AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html) 

   1.  審核 [AWS KMS 金鑰存取控制的最佳實務](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies-best-practices.html)。

1.  考慮使用 AWS Encryption SDK：當您的應用程式需要在用戶端對資料進行加密時，可使用整合 AWS KMS 的 AWS Encryption SDK。

   1.  [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html) 

1.  啟用 [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) 以自動審核並在發現有過度廣泛的 AWS KMS 金鑰政策時發出通知。

   1.  考慮使用[自訂政策檢查](https://docs.aws.amazon.com/access-analyzer/latest/APIReference/API_CheckNoPublicAccess.html)，以確認資源政策更新未將公開存取權授予 KMS 金鑰。

1.  啟用 [Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/kms-controls.html) 以在金鑰政策設定錯誤、有排定要刪除的金鑰，或有未啟用自動輪替的金鑰時收到通知。

1.  確定適合 AWS KMS 金鑰的日誌記錄層級。由於 AWS KMS 的呼叫 (包括唯讀事件) 會加以記錄，因此與 AWS KMS 關聯的 CloudTrail 日誌可能會變得很龐大。

   1.  有些組織偏好將 AWS KMS 日誌記錄活動分隔為單獨的追蹤。如需詳細資訊，請參閱《AWS KMS 開發人員指南》的 [Logging AWS KMS API calls with CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html)。

## 資源
<a name="resources"></a>

 **相關文件：**
+  [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 
+  [AWS 加密服務和工具](https://docs.aws.amazon.com/crypto/latest/userguide/awscryp-overview.html) 
+  [使用加密保護 Amazon S3 資料](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingEncryption.html) 
+  [封套加密](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping) 
+  [數位主權承諾](https://aws.amazon.com/blogs/security/aws-digital-sovereignty-pledge-control-without-compromise/) 
+  [揭密 AWS KMS 金鑰操作、攜帶自有金鑰、自訂金鑰存放區，以及密文可攜性](https://aws.amazon.com/blogs/security/demystifying-kms-keys-operations-bring-your-own-key-byok-custom-key-store-and-ciphertext-portability/) 
+  [AWS Key Management Service 密碼編譯詳細資訊](https://docs.aws.amazon.com/kms/latest/cryptographic-details/intro.html) 

 **相關影片：**
+  [在 AWS 中加密如何運作](https://youtu.be/plv7PQZICCM) 
+  [保護 AWS 上的區塊儲存安全](https://youtu.be/Y1hE1Nkcxs8) 
+  [AWS 資料保護：使用鎖定、金鑰、簽章和憑證](https://www.youtube.com/watch?v=lD34wbc7KNA) 

 **相關範例：**
+  [使用 AWS KMS 實作進階存取控制機制](https://catalog.workshops.aws/advkmsaccess/en-US/introduction) 