

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

# 的加密最佳實務 AWS Key Management Service
<a name="kms"></a>

[AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 可協助您建立和控制密碼編譯金鑰，以協助保護您的資料。 與大多數 AWS 服務 可以加密資料的其他 AWS KMS 整合。如需完整清單，請參閱[AWS 服務 與 整合 AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration)。 AWS KMS 也與 AWS CloudTrail 整合，以記錄 KMS 金鑰的使用情形，用於稽核、法規和合規需求。

KMS 金鑰是 中的主要資源 AWS KMS，也是密碼編譯金鑰的邏輯表示法。KMS 金鑰有三種主要類型：
+ 客戶受管金鑰是您建立的 KMS 金鑰。
+ AWS 受管金鑰是在帳戶中代表您 AWS 服務 建立的 KMS 金鑰。
+ AWS 擁有的金鑰是 AWS 服務 擁有和管理的 KMS 金鑰，可用於多個 AWS 帳戶。

如需有關這些金鑰類型的詳細資訊，請參閱[客戶金鑰和 AWS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)。

在 中 AWS 雲端，政策用於控制誰可以存取資源和服務。例如，在 AWS Identity and Access Management (IAM) 中，*身分型政策*會定義使用者、使用者群組或角色的許可，以及連接至資源*的資源型政策*，例如 S3 儲存貯體，並定義哪些主體允許存取、支援的動作，以及必須符合的任何其他條件。與 IAM 政策類似， AWS KMS 會使用[金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)來控制對 KMS 金鑰的存取。每個 KMS 金鑰都必須具有金鑰政策，且每個金鑰只能具有一個金鑰政策。定義允許或拒絕存取 KMS 金鑰的政策時，注意下列事項：
+ 您可以控制客戶受管金鑰的金鑰政策，但無法直接控制 AWS 受管金鑰或 AWS 擁有金鑰的金鑰政策。
+ 金鑰政策允許授予 內 AWS KMS API 呼叫的精細存取權 AWS 帳戶。除非金鑰政策明確允許，否則您不能使用 IAM 政策來允許存取 KMS 金鑰。如果沒有金鑰政策的許可，允許許可的 IAM 政策將不起作用。如需詳細資訊，請參閱[允許 IAM 政策存取 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html#key-policy-default-allow-root-enable-iam)。
+ 您可以使用 IAM 政策拒絕對客戶受管金鑰的存取，而無需金鑰政策的對應許可。
+ 針對多區域金鑰設計金鑰政策和 IAM 政策時，請考慮下列事項：
  + 金鑰政策不是多區域金鑰的[共用屬性](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-sync-properties)，且不會在相關的多區域金鑰之間複製或同步。
  + 使用 `CreateKey` 和 `ReplicateKey` 動作建立多區域金鑰時，將套用[預設金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html)，除非在請求中指定了金鑰政策。
  + 您可以實作條件金鑰 (例如 [aws:RequestedRegion](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requestedregion))，以限制特定 AWS 區域的許可。
  + 您可以使用授予來允許多區域主要金鑰或複本金鑰的許可。但是，您無法使用單一授予來允許多個 KMS 金鑰的許可，即使這些金鑰是相關的多區域金鑰。

使用 AWS KMS 和建立金鑰政策時，請考慮下列加密最佳實務和其他安全最佳實務：
+ 遵循下列資源中 AWS KMS 有關最佳實務的建議：
  + [AWS KMS 授予的最佳實務 ](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#grant-best-practices)(AWS KMS 文件）
  + [IAM 政策的最佳實務](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies-best-practices.html) (AWS KMS 文件)
+ 根據職責分離最佳實務，為管理金鑰的人員和使用金鑰的人員維護個別身分：
  + 建立和刪除金鑰的管理員角色不應具有使用金鑰的能力。
  + 部分服務可能只需要加密資料，而不應授予使用金鑰解密資料的能力。
+ 金鑰政策應永遠遵循最低權限的模型。請勿將 `kms:*` 用於 IAM 或金鑰政策中的動作，因為這會授予主體管理和使用金鑰的許可。
+ 在金鑰政策中使用 [kms:ViaService](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service) AWS 服務 條件金鑰，將客戶受管金鑰的使用限制為特定。
+ 如果您可以在金鑰類型之間進行選擇，則優先客戶受管金鑰，因為其會提供最精細的控制選項，包括下列選項：
  + [管理身分驗證和存取控制](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html)
  + [啟用和停用金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html)
  + [輪換 AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)
  + [標記金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html)
  + [建立別名](https://docs.aws.amazon.com/kms/latest/developerguide/programming-aliases.html)
  + [刪除 AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html)
+ AWS KMS 管理和修改許可必須明確拒絕給未經核准的委託人，且 AWS KMS 修改許可不應存在於任何未經授權委託人的允許陳述式中。如需詳細資訊，請參閱[適用於 AWS Key Management Service的動作、資源和條件鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html)。
+ 為了偵測未經授權使用 KMS 金鑰，請在 中 AWS Config實作 [iam-customer-policy-blocked-kms-actions](https://docs.aws.amazon.com/config/latest/developerguide/iam-customer-policy-blocked-kms-actions.html) 和 [iam-inline-policy-blocked-kms-actions](https://docs.aws.amazon.com/config/latest/developerguide/iam-inline-policy-blocked-kms-actions.html) 規則。這可防止主體在所有資源上使用 AWS KMS 解密動作。
+ 在 中實作服務控制政策 SCPs)， AWS Organizations 以防止未經授權的使用者或角色直接以命令或透過主控台刪除 KMS 金鑰。如需詳細資訊，請參閱[使用 SCPs做為預防性控制](https://aws.amazon.com/blogs/mt/identity-guide-preventive-controls-with-aws-identity-scps/) (AWS 部落格文章）。
+ 在 CloudTrail 日誌中記錄 AWS KMS API 呼叫。這會記錄相關的事件屬性，例如發出的請求內容、發出請求的來源 IP 地址以及發出請求的人。如需詳細資訊，請參閱[使用 記錄 AWS KMS API 呼叫 AWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html)。
+ 如果您使用[加密內容](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)，它不應包含任何敏感資訊。CloudTrail 將加密內容儲存在純文字 JSON 檔案中，有權存取包含此資訊的 S3 儲存貯體的任何人都可以檢視該檔案。
+ 監控客戶受管金鑰的使用情況時，設定事件以在偵測特定動作 (例如建立金鑰、更新客戶受管金鑰政策或匯入金鑰材料) 時通知您。也建議您實作自動回應，例如停用金鑰或執行組織政策規定的任何其他事件回應動作的 AWS Lambda 函數。
+ [多區域金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-auth.html)建議用於特定案例，例如合規、災難復原或備份。多區域金鑰的安全屬性與單一區域金鑰顯著不同。授權建立、管理和使用多區域金鑰時，採用下列建議：
  + 允許委託人只將多區域金鑰複寫至需要的 AWS 區域 中。
  + 只將多區域金鑰的許可授予需要這些金鑰的委託人，並且僅為需要這些金鑰的任務授予。