建立KMS金鑰 - AWS Key Management Service

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

建立KMS金鑰

您可以使用 CreateKey操作 AWS Management Console或 AWS::KMS::Key AWS CloudFormation 資源,在 或 AWS KMS keys 中建立 。在此過程中,您可以設定金鑰的KMS金鑰政策,您可以隨時變更。您也可以選取下列值來定義您建立的KMS金鑰類型。您無法在建立KMS金鑰後變更這些屬性。

KMS 金鑰類型

金鑰類型是決定建立哪種類型密碼編譯金鑰的屬性。 AWS KMS 提供三種金鑰類型來保護資料:

  • 進階加密標準 (AES) 對稱金鑰

    在 Galois 計數器模式 (GCM) 模式下使用的 256 位元金鑰AES,可提供大小小於 4KB 的資料經過驗證的加密/解密。這是最常見的金鑰類型,用於保護應用程式中使用的其他資料加密金鑰 AWS 服務 ,以及代表您加密資料的方式。

  • RSA、橢圓曲線或 SM2(僅限中國區域) 非對稱金鑰

    這些金鑰有多種大小,並支援許多演算法。它們可用於加密和解密、簽署和驗證,或根據演算法選擇衍生共用秘密操作。

  • 用於執行雜湊型訊息驗證碼 (HMAC) 操作的對稱金鑰

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

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

金鑰用量

金鑰用途是決定該金鑰支援之密碼編譯操作的屬性。KMS 金鑰可以具有 ENCRYPT_DECRYPTSIGN_VERIFYGENERATE_VERIFY_MAC或 的金鑰用量KEY_AGREEMENT。每個KMS金鑰只能有一個金鑰用量。將KMS金鑰用於多種類型的操作,會讓這兩個操作的產品更容易受到攻擊。

金鑰規格

金鑰規格是一種代表金鑰密碼編譯組態的屬性。金鑰規格的含義與金鑰類型不同。

對於KMS金鑰,金鑰規格會決定KMS金鑰是對稱或非對稱。其也會決定其金鑰材料的類型,及其支援的演算法。

預設金鑰規格 SYMMETRIC_DEFAULT 代表 256 位元對稱加密金鑰。如需所有支援金鑰規格的詳細說明,請參閱 金鑰規格參考

金鑰材料來源

金鑰材料來源是金鑰KMS屬性,可識別KMS金鑰中金鑰材料的來源。您可以在建立金鑰時選擇KMS金鑰材料來源,而且無法變更。金鑰材料的來源會影響KMS金鑰的安全性、耐久性、可用性、延遲和輸送量特性。

每個KMS金鑰都會在其中繼資料中包含其金鑰資料的參考。對稱加密金鑰的KMS金鑰材料來源可能會有所不同。您可以使用 AWS KMS 產生的金鑰材料、自訂金鑰存放區中產生的金鑰材料,或匯入您自己的金鑰材料。

根據預設,每個KMS金鑰都有唯一的金鑰材料。不過,您可以建立一組具有相同金鑰材料的多區域金鑰

KMS 金鑰可以具有下列其中一個金鑰材料來源值:AWS_KMSEXTERNAL匯入的金鑰材料 )、 AWS_CLOUDHSMKMS 金鑰存放區中的 AWS CloudHSM 金鑰) EXTERNAL_KEY_STOREKMS外部金鑰存放區中的金鑰 )。

建立KMS金鑰的許可

若要在主控台中或使用 建立KMS金鑰APIs,您必須在 IAM政策中擁有下列許可。盡可能使用條件金鑰以限制許可。例如,您可以使用IAM政策中的 km:KeySpec 條件金鑰,允許主體僅建立對稱加密金鑰。

如需建立金鑰之主體IAM的政策範例,請參閱 允許使用者建立KMS金鑰

注意

授予主體管理標籤和別名的許可時,請務必謹慎。變更標記或別名可允許或拒絕客戶受管金鑰的許可。如需詳細資訊,請參閱 ABAC 適用於 AWS KMS

kms:PutKeyPolicy建立KMS金鑰不需要許可。kms:CreateKey 許可包含設定初始金鑰政策的許可。但是,您必須在建立金鑰時將此許可新增至KMS金鑰政策,以確保您可以控制對KMS金鑰的存取。替代方案是使用 BypassLockoutSafetyCheck 參數,不建議使用。

KMS 金鑰屬於建立金鑰 AWS 的帳戶。建立KMS金鑰IAM的使用者不被視為金鑰擁有者,而且他們沒有自動使用或管理所建立KMS金鑰的許可。如同任何其他主體,金鑰建立者需要透過金鑰政策、IAM政策或授予取得許可。不過,擁有 kms:CreateKey 許可的主體可以設定初始金鑰政策,並授予自己使用或管理金鑰的許可。

選擇要建立的KMS金鑰類型

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

若要允許主體僅針對特定KMS金鑰使用量建立金鑰,請使用 km:KeyUsage 條件金鑰。您也可以使用 kms:KeyUsage 條件金鑰,允許主體根據KMS金鑰用量呼叫金鑰API的操作。例如,只有在KMS金鑰用量為 SIGN_ 時,您才能允許 停用金鑰VERIFY。

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

加密和解密資料

針對大多數需要加密和解密資料的使用案例,請使用對稱KMS金鑰。 AWS KMS 使用的對稱加密演算法快速又有效率,並可確保資料的機密性和真實性。它支援使用其他已驗證資料 (AAD) 進行驗證加密,定義為加密內容 。這種類型的KMS金鑰需要加密資料的寄件者和收件人擁有有效的 AWS 憑證,才能呼叫 AWS KMS。

如果您的使用案例需要在 之外 AWS 由無法呼叫 的使用者加密 AWS KMS,非對稱KMS金鑰是不錯的選擇。您可以分發非對稱金鑰的公KMS有金鑰,以允許這些使用者加密資料。而且需要解密資料的應用程式可以使用 內非對稱金鑰的私有KMS金鑰 AWS KMS。

簽署訊息及驗證簽章

若要簽署訊息並驗證簽章,您必須使用非對稱KMS金鑰 。您可以使用KMS金鑰搭配代表RSA金鑰對、橢圓曲線 (ECC) 金鑰對或SM2金鑰對的金鑰規格 (僅限中國區域)。您選擇的金鑰規格取決於您要使用的簽署演算法。建議使用ECC金鑰對支援的ECDSA簽署演算法取代RSA簽署演算法。不過,您可能需要使用特定的金鑰規格和簽署演算法,以支援驗證 外部簽章的使用者 AWS。

使用非對稱金鑰對加密

若要使用非對稱金鑰對加密資料,您必須使用非對稱KMS金鑰搭配RSA金鑰規格SM2金鑰規格 (僅限中國區域)。若要 AWS KMS 使用KMS金鑰對的公有金鑰加密 中的資料,請使用加密操作。您也可以下載公有金鑰,並與需要加密 外部資料的各方共用 AWS KMS。

當您下載非對稱金鑰的公有KMS金鑰時,您可以在 之外使用它 AWS KMS。但是,它不再受保護 中KMS金鑰的安全控制所約束 AWS KMS。例如,您不能使用 AWS KMS 金鑰政策或授予來控制公有金鑰的使用。您也無法控制金鑰是否僅用於使用 AWS KMS 支援的加密演算法進行加密和解密。如需詳細資訊,請參閱下載公有金鑰的特殊考量

若要解密在 外部使用公有金鑰加密的資料 AWS KMS,請呼叫解密操作。如果資料是在公有金鑰下加密,且金鑰使用量為 的KMS金鑰,Decrypt則操作會失敗SIGN_VERIFY。如果使用 AWS KMS 不支援您所選金鑰規格的演算法加密,也會失敗。如需金鑰規格和支援演算法的詳細資訊,請參閱 金鑰規格參考

為了避免這些錯誤,在 之外使用公有金鑰的任何人 AWS KMS 都必須存放金鑰組態。 AWS KMS 主控台和GetPublicKey回應提供您在共用公有金鑰時必須包含的資訊。

Derive 共用秘密

若要衍生共用密碼,請使用具有 NIST建議的橢圓曲線SM2(僅限中國區域) 金鑰材料的KMS金鑰。 AWS KMS 使用橢圓曲線密碼編譯 Cofactor Diffie-Hellman Primitive (ECDH),透過從橢圓曲線公有私有金鑰對衍生共用密碼,在兩個對之間建立金鑰協議。您可以使用 DeriveSharedSecret操作傳回的原始共用密碼,來衍生對稱金鑰,以加密和解密在兩方之間傳送的資料,或產生和驗證 HMACs. AWS KMS recommends,表示您在使用原始共用密碼衍生對稱金鑰時遵循NIST金鑰衍生的建議

產生並驗證HMAC程式碼

若要產生和驗證雜湊型訊息驗證碼,請使用 HMACKMS金鑰。當您在 中建立HMAC金鑰時 AWS KMS, 會 AWS KMS 建立並保護您的金鑰材料,並確保您使用正確的金鑰MAC演算法。HMAC 代碼也可以用作虛擬隨機數字,在某些情況下用於對稱簽署和權杖化。

HMAC KMS 金鑰是對稱金鑰。在主控台中建立HMACKMS金鑰時 AWS KMS ,請選擇Symmetric金鑰類型。

搭配 AWS 服務使用

若要建立 KMS金鑰,以便與與 AWS 整合的服務 AWS KMS搭配使用,請參閱 service. AWS services 的文件。加密資料的 需要對稱加密KMS金鑰

除了這些考量之外,對具有不同KMS金鑰規格的金鑰進行密碼編譯操作時,其價格和請求配額也不同。如需 AWS KMS 定價的資訊,請參閱 AWS Key Management Service 定價。如需請求配額的詳細資訊,請參閱 請求配額