

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

# 建立 KMS 金鑰
<a name="create-keys"></a>

您可以在 AWS KMS keys 中 AWS 管理主控台或使用 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 操作或 [AWS::KMS::Key AWS CloudFormation 資源](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html)來建立 。在此過程中，您可以設定 KMS 金鑰的金鑰政策，您可以隨時變更。您也可以選取下列值來定義您建立的 KMS 金鑰類型。建立 KMS 金鑰之後即無法變更這些屬性。

**KMS 金鑰類型**  
*金鑰類型*是一種屬性，可決定建立的密碼編譯金鑰類型。 AWS KMS 提供三種金鑰類型來保護資料：  
+ 進階加密標準 (AES) 對稱金鑰

  256 位元金鑰，用於 AES 的 Galois 計數器模式 (GCM) 模式，以提供大小小於 4KB 的資料經過驗證的加密/解密。這是最常見的金鑰類型，用於保護應用程式中使用的其他資料加密金鑰 AWS 服務 ，以及代表您加密資料的方式。
+ RSA、橢圓曲線或 SM2 （僅限中國區域） 非對稱金鑰

  這些金鑰提供各種大小，並支援許多演算法。它們可用於加密和解密、簽署和驗證，或根據演算法選擇衍生共用秘密操作。
+ 用於執行雜湊型訊息驗證碼 (HMAC) 操作的對稱金鑰

  這些金鑰是用於簽署和驗證操作的 256 位元金鑰。

  KMS 金鑰無法以純文字從服務匯出。它們是由 產生，並且只能在 服務使用的硬體安全模組 HSMs) 內使用。這是 的基本安全屬性 AWS KMS ，以確保金鑰不會洩露。

**金鑰用量**  
*金鑰用途*是決定該金鑰支援之密碼編譯操作的屬性。KMS 金鑰的金鑰使用量可以是 `ENCRYPT_DECRYPT`、`GENERATE_VERIFY_MAC`、 `SIGN_VERIFY`或 `KEY_AGREEMENT`。每個 KMS 金鑰都僅有一種金鑰用途。這遵循美國[國家標準技術研究所 (NIST) 特別出版物 800-57 的金鑰管理建議](https://csrc.nist.gov/pubs/sp/800/57/pt1/r5/final)第 5.2 節金鑰用量的金鑰使用最佳實務。使用 KMS 金鑰執行多種類型的操作，會使得兩種操作的產品更容易受到攻擊。

**金鑰規格**  
*金鑰規格*是一種代表金鑰密碼編譯組態的屬性。金鑰規格的含義與金鑰類型不同。  
對於 KMS 金鑰，*金鑰規格*會決定 KMS 金鑰是對稱或非對稱。其也會決定其金鑰材料的類型，及其支援的演算法。  
預設金鑰規格 [SYMMETRIC\_DEFAULT](symm-asymm-choose-key-spec.md#symmetric-cmks) 表示 256 位元對稱加密金鑰。如需所有支援金鑰規格的詳細說明，請參閱 [金鑰規格參考](symm-asymm-choose-key-spec.md)。

**金鑰材料來源**  
*金鑰材料來源* 是 KMS 金鑰屬性，用於識別 KMS 金鑰中金鑰材料的來源。您可以在建立 KMS 金鑰時選擇金鑰材料來源，之後便無法進行變更。金鑰材料的來源會影響 KMS 金鑰的安全性、耐久性、可用性、延遲和輸送量特性。  
每個 KMS 金鑰在中繼資料中都包含對其金鑰資料的引用。對稱加密 KMS 金鑰的金鑰資料來源可能會有所不同。您可以使用 AWS KMS 產生的金鑰材料、在[自訂金鑰存放](key-store-overview.md#custom-key-store-overview)區中產生的金鑰材料，或[匯入您自己的金鑰材料](importing-keys.md)。  
根據預設，每個 KMS 金鑰都有唯一的金鑰材料。不過，您可以建立一組具有相同金鑰材料的[多區域金鑰](multi-region-keys-overview.md)。  
KMS 金鑰可以具有下列其中一個金鑰材料來源值：`AWS_KMS`、 `EXTERNAL`([匯入的金鑰材料](importing-keys.md))、 `AWS_CLOUDHSM` ([AWS CloudHSM 金鑰存放區中的 KMS 金鑰](keystore-cloudhsm.md)) 或 `EXTERNAL_KEY_STORE`（外部金鑰存放區中的 KMS 金鑰）。[外部金鑰存放區](keystore-external.md)

**Topics**
+ [建立 KMS 金鑰的許可](#create-key-permissions)
+ [選擇要建立的 KMS 金鑰類型](#symm-asymm-choose)
+ [建立對稱加密 KMS 金鑰](create-symmetric-cmk.md)
+ [建立非對稱 KMS 金鑰](asymm-create-key.md)
+ [建立 HMAC KMS 金鑰](hmac-create-key.md)
+ [建立多區域主索引鍵](create-primary-keys.md)
+ [建立多區域複本金鑰](multi-region-keys-replicate.md)
+ [使用匯入的金鑰材料建立 KMS 金鑰](importing-keys-conceptual.md)
+ [在 金鑰存放區中建立 KMS AWS CloudHSM 金鑰](create-cmk-keystore.md)
+ [在外部金鑰存放區中建立 KMS 金鑰](create-xks-keys.md)

## 建立 KMS 金鑰的許可
<a name="create-key-permissions"></a>

若要在主控台或使用 API 建立 KMS 金鑰，您必須在 IAM 政策中具有下列許可。盡可能使用[條件金鑰](policy-conditions.md)以限制許可。例如，您可使用 IAM 政策中的 [kms:KeySpec](conditions-kms.md#conditions-kms-key-spec) 條件金鑰，以僅允許主體建立對稱加密 KMS 金鑰。

如需建立金鑰之主體的 IAM 政策範例，請參閱 [允許使用者建立 KMS 金鑰](customer-managed-policies.md#iam-policy-example-create-key)。

**注意**  
授予主體管理標籤和別名的許可時，請務必謹慎。變更標記或別名可允許或拒絕客戶受管金鑰的許可。如需詳細資訊，請參閱[適用於 的 ABAC AWS KMS](abac.md)。
+ [kms:CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 是必要項目。
+ [kms:CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html) 是在主控台中建立 KMS 金鑰的必要項目，其中每個新 KMS 金鑰都需要別名。
+ [kms:TagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html) 是建立 KMS 金鑰時新增標籤的必要項目。
+ [iam:CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) 是建立多區域主要金鑰的必要項目。如需詳細資訊，請參閱[控制對多區域金鑰的存取](multi-region-keys-auth.md)。

建立 KMS 金鑰時，不需要 [kms:PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) 許可。`kms:CreateKey` 許可包含設定初始金鑰政策的許可。但是，您必須在建立 KMS 金鑰時將此許可新增至金鑰政策，以確保您可以控制對 KMS 金鑰的存取。另一種方法是使用 [BypassLockoutSafetyCheck](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-BypassPolicyLockoutSafetyCheck) 參數，但不建議使用。

KMS 金鑰屬於建立金鑰 AWS 的帳戶。建立 KMS 金鑰的 IAM 使用者不會被視為金鑰擁有者，而且他們不會自動擁有使用或管理他們建立之 KMS 金鑰的許可。與任何其他主體一樣，金鑰建立者必須透過金鑰政策、IAM 政策或授予取得許可。不過，擁有 `kms:CreateKey` 許可的主體可以設定初始金鑰政策，並授予自己使用或管理金鑰的許可。

## 選擇要建立的 KMS 金鑰類型
<a name="symm-asymm-choose"></a>

您建立的 KMS 金鑰類型，主要取決於您計劃如何使用 KMS ** 金鑰、您的安全需求，以及您的授權需求。KMS 金鑰的金鑰類型和金鑰用量決定金鑰可執行哪些密碼編譯操作。每個 KMS 金鑰僅有一個金鑰用途。使用 KMS 金鑰執行多種類型的操作，會使得所有操作的產品更容易受到攻擊。

若要允許主體僅為特定金鑰用途建立 KMS 金鑰，請使用 [kms:KeyUsage](conditions-kms.md#conditions-kms-key-usage) 條件金鑰。您也可以使用 `kms:KeyUsage` 條件索引鍵來允許委託人根據金鑰使用情形呼叫 KMS 金鑰的 API 操作。例如，您可以允許只有在金鑰使用情形為 SIGN\_VERIFY 時，才能停用 KMS 金鑰的許可。

根據您的使用案例，使用下列指導判斷您需要的 KMS 金鑰類型。

**加密和解密資料**  
請使用[對稱 KMS 金鑰](symm-asymm-choose-key-spec.md#symmetric-cmks)處理對於大多數需要加密和解密資料的使用案例。 AWS KMS 使用的對稱加密演算法快速又有效率，並可確保資料的機密性和真實性。其支援經定義為[加密內容](encrypt_context.md)之額外的驗證資料 (AAD) 所驗證的加密。這種類型的 KMS 金鑰需要加密資料的寄件者和收件人擁有有效的 AWS 登入資料才能呼叫 AWS KMS。  
如果您的使用案例需要在 外部 AWS 由無法呼叫 的使用者加密 AWS KMS，[非對稱 KMS 金鑰](symmetric-asymmetric.md)是不錯的選擇。您可以分配非對稱 KMS 金鑰的公有金鑰，讓這些使用者加密資料。而需要解密該資料的應用程式，則可以使用 AWS KMS內的非對稱 KMS 金鑰私有金鑰。

**簽署訊息及驗證簽章**  
若要簽署訊息及驗證簽章，您必須使用[非對稱 KMS 金鑰](symmetric-asymmetric.md)。您可以使用 KMS 金鑰搭配代表 RSA 金鑰對、橢圓曲線 (ECC) 金鑰對、ML-DSA 金鑰對或 SM2 金鑰對的[金鑰規格](symm-asymm-choose-key-spec.md) （僅限中國區域）。您選擇的金鑰規格取決於您要使用的簽署演算法。ECC 金鑰對支援的 ECDSA 簽章演算法優於 RSA 簽章演算法。從 RSA 或 ECC 金鑰遷移至後量子金鑰時，請使用 ML-DSA 金鑰對。但是，您可能需要使用特定的金鑰規格和簽章演算法，以支援在 AWS以外驗證簽章的使用者。

**使用非對稱金鑰對加密**  
若要使用非對稱金鑰對加密資料，您必須使用非[對稱 KMS 金鑰](symmetric-asymmetric.md)搭配 [RSA 金鑰規格](symm-asymm-choose-key-spec.md#key-spec-rsa-encryption)或 [SM2 金鑰規格](symm-asymm-choose-key-spec.md#key-spec-sm) （僅限中國區域）。若要使用 KMS 金鑰的公有金鑰加密 AWS KMS 的資料，請使用 [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) 操作。您也可以[下載公有金鑰](download-public-key.md)，並與需要在 外部加密資料的各方共用 AWS KMS。  
當您下載非對稱 KMS 金鑰的公有金鑰時，您可以在 AWS KMS之外使用。但是，它不再受保護 KMS 金鑰的安全控制約束 AWS KMS。例如，您無法使用 AWS KMS 金鑰政策或授權來控制公有金鑰的使用。您也無法控制金鑰是否僅用於使用 AWS KMS 支援的加密演算法進行加密和解密。如需詳細資訊，請參閱[下載公有金鑰的特殊考量](offline-public-key.md#download-public-key-considerations)。  
若要解密在 外部使用公有金鑰加密的資料 AWS KMS，請呼叫 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 操作。如果資料是以公有金鑰從 KMS 金鑰加密，且金鑰使用量為 ，`Decrypt`則操作會失敗`SIGN_VERIFY`。如果使用 AWS KMS 不支援您所選金鑰規格的演算法加密，則也會失敗。如需金鑰規格和支援的演算法的詳細資訊，請參閱 [金鑰規格參考](symm-asymm-choose-key-spec.md)。  
為了避免這些錯誤，在 外部使用公有金鑰的任何人 AWS KMS 都必須存放金鑰組態。 AWS KMS 主控台和 [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html) 回應提供共用公有金鑰時必須包含的資訊。

**衍生共用秘密**  
若要衍生共用秘密，請使用 KMS 金鑰搭配 [NIST 標準橢圓曲線](symm-asymm-choose-key-spec.md#key-spec-ecc)或 [SM2](symm-asymm-choose-key-spec.md#key-spec-sm) （僅限中國區域） 金鑰材料。 AWS KMS 會使用[橢圓曲線密碼編譯 Cofactor Diffie-Hellman 基本 ](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf#page=60)(ECDH)，透過從橢圓曲線公有私有金鑰對衍生共用秘密，在兩個對之間建立金鑰協議。您可以使用 [ DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html) 操作傳回的原始共用秘密來衍生對稱金鑰，以加密和解密在兩方之間傳送的資料，或產生和驗證 HMACs。 AWS KMS 當您使用原始共用秘密衍生對稱金鑰時，建議您遵循[金鑰衍生的 NIST 建議](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Cr2.pdf)。

**產生和驗證 HMAC 代碼**  
若要產生和驗證雜湊訊息驗證碼，請使用 HMAC KMS 金鑰。當您在 中建立 HMAC 金鑰時 AWS KMS， 會 AWS KMS 建立並保護您的金鑰材料，並確保您為金鑰使用正確的 MAC 演算法。HMAC 代碼也可以用來作為虛擬亂數，並在特定情況下用於對稱簽署和字符化。  
HMAC KMS 金鑰為對稱金鑰。在 AWS KMS 主控台中建立 HMAC KMS 金鑰時，請選擇 `Symmetric` 金鑰類型。

**搭配 AWS 服務使用**  <a name="cmks-aws-service"></a>
若要建立 KMS 金鑰以與 [AWS 整合 AWS KMS](service-integration.md)的 服務搭配使用，請參閱 service. AWS services 的文件。加密資料的 需要[對稱加密 KMS 金鑰](symm-asymm-choose-key-spec.md#symmetric-cmks)。

除了這些考量外，具有不同金鑰規格的 KMS 金鑰的密碼編譯操作也有不同的定價和不同的請求配額。如需 AWS KMS 定價的資訊，請參閱 [AWS Key Management Service 定價](https://aws.amazon.com/kms/pricing/)。如需請求配額的詳細資訊，請參閱 [請求配額](requests-per-second.md)。