密钥存储 - AWS Key Management Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

密钥存储

密钥存储是用于存储和使用加密密钥的安全位置。中的默认密钥存储区 AWS KMS 还支持生成和管理其存储的密钥的方法。默认情况下,您在中创建的加密密钥材料 AWS KMS 是在硬件安全模块 (HSMs) 中生成并受其保护,这些模块是NIST联邦信息处理标准 () 140 加密模块验证计划 (FIPSFIPS) 140-2 3 级验证的加密模块。 AWS KMS keys 密钥的KMS密钥材料永远不会留下HSMs未加密的内容。

AWS KMS 支持多种类型的密钥存储来保护您的密钥。 AWS KMS 用于创建和管理加密密钥时的材料。提供的所有密钥存储选项 AWS KMS 均在安全等级 3 中持续在 FIPS 140 以下进行验证,旨在防止任何人(包括 AWS 操作员)在未经您许可的情况下访问或使用您的纯文本密钥。

AWS KMS 标准密钥库

默认情况下,使用标准创建KMS密钥 AWS KMS HSM。从你的角度来看,这种HSM类型可以看作是一个多租户队伍HSMs,它允许最具可扩展性、最低成本和最容易管理的密钥存储。如果您想创建一个用于一个或多个KMS密钥, AWS 服务 以便服务可以代表您加密您的数据,则需要创建一个对称密钥。如果您在自己的应用程序设计中使用KMS密钥,则可以选择创建对称加密密钥、非对称密钥或HMAC密钥。

在标准密钥存储选项中, AWS KMS 创建您的密钥,然后使用服务内部管理的密钥对其进行加密。然后,您密钥的加密版本的多个副本将存储在系统中,系统旨在保障持久性。在标准密钥库类型中生成和保护密钥材料可让您充分利用密钥存储库的可扩展性、可用性和耐久性, AWS KMS 同时将操作负担和成本降至最低。 AWS

AWS KMS 带有导入密钥材料的标准密钥库

您可以选择将 AWS KMS密钥材料导入,从而生成自己的 256 位对称加密密钥、椭圆曲线 (ECC) 密钥RSA或基于哈希的消息身份验证码 () 密钥 () 密钥,并将其应用于密钥标识符 (),而不是要求 AWS KMS 生成和存储给定密钥的唯一副本。HMAC KMS keyId这有时被称为自带密钥 (BYOK)。必须使用颁发的公钥 AWS KMS、支持的加密封装算法和提供的基于时间的导入令牌来保护从本地密钥管理系统导入的密钥材料。 AWS KMS此过程将验证您的已加密导入的密钥只有在离开您的环境 AWS KMS HSM后才能解密。

如果您对生成密钥的系统有特定的要求,或者想要在外部保存密钥副本 AWS 作为备份,则导入的密钥材料可能会很有用。请注意,您需要对导入的密钥材料的整体可用性和持久性负责。虽然 AWS KMS 有您导入的密钥的副本,并且可以在需要时保持高度可用,但导入的密钥提供了一个特殊API的删除功能— DeleteImportedKeyMaterial。API这将立即删除导入的密钥材料的所有副本 AWS KMS ,但无法选择 AWS 恢复密钥。此外,您还可以为导入的密钥设置过期时间,过期后密钥将无法使用。要使密钥在中再次有用 AWS KMS,您必须重新导入密钥材料并将其分配给相同的keyId密钥材料。这种针对导入密钥的删除操作与代表您 AWS KMS 生成和存储的标准密钥不同。在标准情况下,密钥删除过程有一个强制性的等待期,在此期间,计划删除的密钥将首先被禁止使用。此操作允许您在可能需要该密钥才能访问数据的任何应用程序或 AWS 服务的日志中查看访问被拒绝的错误。如果您看到此类访问请求,可以选择取消计划删除并重新启用该密钥。经过可配置的等待期(7 到 30 天)后,才会KMS真正删除密钥材料、KeyID 和与密钥关联的所有元数据。有关可用性和耐用性的更多信息,请参阅AWS KMS 开发人员指南中的保护导入的密钥材料

导入的密钥材料还有一些其他限制需要注意。由于 AWS KMS 无法生成新的密钥材料,因此无法对导入密钥配置自动轮换。您需要使用新的密钥创建新KMS密钥keyId,然后导入新的密钥材料以实现有效的轮换。此外,在导入的对称密钥 AWS KMS 下创建的密文无法使用外部的本地密钥副本轻松解密。 AWS这是因为使用的经过身份验证的加密格式会将额外的元数据 AWS KMS 附加到密文中,以便在解密操作期间保证密文是由之前的加密操作下的预期KMS密钥创建的。大多数外部加密系统不了解如何通过解析这些元数据来获得原始加密文字,从而使用其对称密钥副本。在导入的非对称密钥(例如RSA或ECC)下创建的密文可以在密钥 AWS KMS 的匹配(公共或私有)部分之外使用,因为没有 AWS KMS 向密文添加额外的元数据。

AWS KMS 自定义密钥库

但是,如果您需要对的更多控制HSMs,则可以创建自定义密钥库。

自定义密钥存储库是内部的密钥存储库 AWS KMS ,由外部的密钥管理器提供支持 AWS KMS,您拥有并管理该密钥管理器。自定义密钥存储区将便捷而全面的密钥管理界面 AWS KMS 与拥有和控制密钥材料和加密操作的能力相结合。当您在自定义KMS密钥存储库中使用密钥时,加密操作由您的密钥管理器使用您的加密密钥执行。因此,您对加密密钥的可用性和持久性以及其操作承担更多责任。HSMs

拥有您的密钥HSMs可能有助于满足某些监管要求,这些要求尚不允许多租户 Web 服务(例如标准KMS密钥存储)保存您的加密密钥。自定义密钥存储并不比使用 AWS-managed 的KMS密钥存储更安全HSMs,但它们具有不同(且更高)的管理和成本影响。因此,您对加密密钥的可用性和持久性以及其操作承担更多责任。HSMs无论您是使用标准密钥存储库 AWS KMS HSMs还是自定义密钥存储库,该服务的设计都确保任何人(包括 AWS 员工)都无法在未经您许可的情况下检索或使用您的纯文本密钥。 AWS KMS 支持两种类型的自定义密钥库:

不支持的功能

AWS KMS 不支持自定义密钥存储库中的以下功能。

AWS CloudHSM 钥匙库

您可以在KMS密钥库中创建AWS CloudHSM密钥,在您拥有和管理的 AWS CloudHSM 集群中生成、存储和使用根用户密钥。使用密钥进行某些加密操作的请求会被转发到您的 AWS CloudHSM 集群以执行该操作。 AWS KMS 虽然集 AWS CloudHSM 群由托管 AWS,但它是由您直接管理和操作的单租户解决方案。您拥有 AWS CloudHSM 集群中KMS密钥的大部分可用性和性能。要查看 AWS CloudHSM 自定义密钥库是否适合您的要求,请阅读AWS KMS 自定义密钥存储是否适合您? 在 AWS 安全博客上。

外部密钥存储

您可以配置 AWS KMS 为使用外部密钥存储 (XKS),在外部的密钥管理系统中生成、存储和使用根用户密钥 AWS Cloud。向 AWS KMS 提出的使用密钥进行某些加密操作的请求将转到您的外部托管系统以执行操作。具体而言,请求会被转发到您网络中的XKS代理,然后代理将请求转发到您使用的任何加密系统。XKSProxy 是一个开源规范,任何人都可以与之集成。许多商业密钥管理供应商都支持XKS代理规范。由于外部密钥存储由您或第三方托管,因此您负责系统中密钥的所有可用性、持久性和性能。要查看外部密钥存储是否符合您的要求,请阅读AWS 新闻博客上的 “宣布 AWS KMS 外部密钥存储” (XKS)

主题