以下常见问题不适用于由光环新网运营的 AWS 中国(北京)区域和由西云数据运营的 AWS 中国(宁夏)区域中的 AWS KMS。请访问此常见问题链接,了解与这两处中国区域相关的内容。 

一般性问题

问:什么是 AWS Key Management Service (KMS)?
AWS KMS 是一项托管式服务,让您能够轻松地创建和控制用于加密操作的密钥。该服务为您提供可用性高的密钥生成、存储、管理和审计解决方案,让您可以在自己的应用程序内加密您的数据或以数字方式对数据签名,并在 AWS 服务之间对数据的加密进行控制。

问:为什么应该使用 AWS KMS?
如果您负责保护 AWS 服务之间的数据安全,应使用它来集中管理加密密钥以控制对数据的访问。如果您是一名需要加密应用程序中的数据的开发人员,您应该结合使用 AWS Encryption SDK 和 AWS KMS,以轻松地在代码中生成、使用和保护对称加密密钥。如果您是一名需要以数字方式对数据签名或使用非对称密钥验证数据的开发人员,应使用该服务创建和管理您将需要的私有密钥。如果您想找到一个可扩展的密钥管理基础设施来支持您的开发人员以及越来越多的应用程序,您应该使用该服务降低您的许可成本和运营负担。如果您负责证明数据安全以满足监管或合规目的,应当使用这项服务,因为它能够帮助证明数据持续受到保护。它还满足广泛的行业和区域性合规制度。

问:如何开始使用 AWS KMS?
开始使用该服务的最简单方式就是选择在受支持的 AWS 服务中使用在您的账户中为每项服务自动创建的 AWS 托管主密钥来加密您的数据。如果您希望对密钥管理进行全面控制,包括能够在账户或服务之间分享密钥访问权限,您可以在 AWS KMS 中创建自己的客户主密钥。您也可以直接在自己的应用程序中使用自己创建的 CMK。可以从 AWS 控制台的 AWS 服务主页上的“安全、身份与合规性”下的 KMS 控制台访问 AWS KMS。也可以直接通过 AWS KMS 命令行界面或用于编程访问的 AWS SDK 访问 AWS KMS API。利用 AWS Encryption SDK,AWS KMS API 还可间接用于加密您自己应用程序中的数据。有关更多信息,请访问入门页面。

问:AWS KMS 在哪些区域提供?
可用性如我们的全球按区域列出的产品和服务页面所列。

非对称密钥目前仅在弗吉尼亚北部、俄勒冈、悉尼、爱尔兰和东京提供。

问:AWS KMS 提供哪些密钥管理功能?
您可以执行以下密钥管理功能:

  • 创建对称和非对称密钥,并且密钥材料只能在该服务内部使用。
  • 创建对称密钥,并且密钥材料在您控制下的自定义密钥存储中生成和使用*
  • 导入您自己的对称密钥材料以在该服务内部使用
  • 创建对称和非对称数据密钥对以在应用程序本地使用
  • 定义哪些 IAM 用户和角色可以管理密钥
  • 定义哪些 IAM 用户和角色可以使用密钥加密和解密数据
  • 选择每年自动轮换由该服务生成的密钥
  • 临时禁用密钥,使其不能被任何人使用
  • 重新启用已禁用的密钥
  • 计划删除不再使用的密钥
  • 通过检查 AWS CloudTrail 中的日志审计密钥的使用

* 要使用自定义密钥存储,您的账户必须能够提供 CloudHSM 资源。

问:AWS KMS 是如何运行的?
首先通过请求创建 CMK 来使用该服务。由您控制 CMK 的生命周期以及哪些人员可以使用或管理 CMK。CMK 的密钥材料在 AWS KMS 管理的硬件安全模块 (HSM) 中生成。或者,您可以从自己的密钥管理基础设施导入密钥材料,然后将它与 CMK 关联。您还可以作为 AWS KMS 中的自定义密钥存储功能的一部分,在 AWS CloudHSM 集群中生成和使用密钥材料。
 
您使用上述任何一种选项创建了 CMK 之后,即可立即将数据直接提交到 AWS KMS 服务,以便使用这些 CMK 进行签名、验证、加密或解密。您可以对这些密钥设置使用策略,以决定哪些用户能够在何种情况下执行哪些操作。

集成了 AWS KMS 的 AWS 服务和客户端工具包,使用名为信封加密的方法来保护您的数据。在这种方法下,AWS KMS 生成用来在 AWS 服务或应用程序本地对数据加密的数据密钥。这些数据密钥本身使用您定义的 CMK 进行了加密。AWS KMS 不会保留或管理数据密钥。 AWS 服务会对您的数据进行加密,并将加密的数据密钥副本与加密的数据一同保存。如果某项服务需要对您的数据进行解密,则会请求 AWS KMS 使用您的 CMK 对数据密钥进行解密。如果从 AWS 服务请求数据的用户获得了使用您的 CMK 进行解密的授权,该 AWS 服务将收到来自 AWS KMS 的已解密数据密钥。然后,该 AWS 服务会对您的数据进行解密,并以纯文本形式返回。所有 CMK 使用请求都会记录在 AWS CloudTrail 中,因此您可以了解谁在什么情况下以及在何时使用了哪个密钥。

问:如果我使用了 AWS KMS,我的数据在何处加密?
对于如何使用 AWS KMS 加密数据,通常有三种情况。第一种情况,您可以利用存储在该服务中的 CMK,直接通过 AWS KMS API 加密和解密数据。第二种情况,您可以选择使用存储在该服务中的 CMK 通过 AWS 服务加密您的数据。在这种情况中,数据通过由 CMK 保护的数据密钥进行加密。第三种情况,您可以使用集成到 AWS KMS 的 AWS Encryption SDK 在您自己的应用程序中执行加密,与您的应用程序是否在 AWS 中运行无关。

问:哪些 AWS 云服务可与 AWS KMS 集成?
AWS KMS 可与大部分其他 AWS 服务无缝集成,因此在这些服务中加密数据就像选择复选框一样简单。在某些情况中,默认使用存储在 AWS KMS 中但由相关 AWS 服务拥有和管理的密钥加密数据。在许多情况下,CMK 归您所有,并在您的账户中进行管理。您可以选择某些服务,由自己来管理密钥,或允许该服务为您管理密钥。请参阅当前已集成到 AWS KMS 的 AWS 服务列表。有关集成服务如何使用 AWS KMS 的更多信息,请参阅 AWS KMS 开发人员指南

问:为什么使用信封加密? 为什么不只是将数据发送到 AWS KMS 中直接加密?
尽管 AWS KMS 支持发送最大 4KB 的数据进行直接加密,但信封加密可提供巨大的性能优势。当您使用 AWS KMS 直接加密数据时,数据必须通过网络进行传输。信封加密降低了网络负载,因为通过网络发送的只有请求,同时传输的数据密钥也更小。数据密钥只在您的应用程序内使用,或用于加密 AWS 服务,避免向 AWS KMS 发送整个数据块并遭遇网络延迟。

问:我创建的 CMK 和其他 AWS 服务自动为我创建的 CMK 之间有什么差别?
当您希望 AWS 服务为您加密数据时,可以选择使用特定的 CMK。这些就是客户管理的 CMK,您对其拥有完全控制权。您可以定义每个密钥的访问控制和使用策略,您也可以向其他账户和服务授予使用权限。如果您不指定 CMK,当您第一次尝试在服务中创建加密资源时,相关服务将创建 AWS 托管的 CMK。AWS 将为您管理与 AWS 托管的 CMK 有关的策略。您可以在自己的账户中追踪 AWS 托管的密钥,所有使用情况都会记录到 AWS CloudTrail,但您不能直接控制这些密钥。

问:为什么应该创建我自己的客户主密钥?
创建您自己的 CMK 会让您拥有的控制权高于 AWS 管理的 CMK。在您创建对称的客户托管 CMK 时,可以选择使用由 AWS KMS 生成的密钥材料、在 AWS CloudHSM 集群(自定义密钥存储)内生成的密钥材料或导入您自己的密钥材料。如果密钥是由 AWS KMS 生成的,则您可以为该密钥规定一个别名和描述,并选择让该密钥每年自动轮换一次。您还可以规定该密钥的所有权限,以对谁能使用或管理该密钥予以控制。对于非对称客户托管 CMK,有一些管理方面的警告:密钥材料只能在 AWS KMS HSM 内部生成,并且没有自动密钥轮换的选项。

问:我可以将自己的密钥导入到 AWS KMS 吗?
可以。您可以从自己的密钥管理基础设施向 AWS KMS 导入密钥副本,并通过任意集成的 AWS 产品或在自己的应用程序中对其加以使用。您无法将非对称 CMK 导入到 AWS KMS 中。

问:我什么时候可以使用导入的密钥?
您可以使用导入的密钥更好地控制 AWS KMS 中密钥的创建、生命周期管理和持久性。导入的密钥用于帮助您满足合规性要求,其中可能包括能够在您的基础设施中生成或保留安全的密钥副本,以及能够从 AWS 基础设施中立即删除导入的密钥副本。

问:我可以导入什么类型的密钥?
您可以导入 256 位对称密钥。

问:如何在传输中保护导入 AWS KMS 中的密钥?
在导入过程中,您必须使用两种 RSA PKCS#1 方案之一将密钥用 AWS KMS 提供的公有密钥包裹。这可确保您的加密密钥仅能被 AWS KMS 解密。

问:我导入的密钥和我在 AWS KMS 中生成的密钥有什么区别?
有两个主要区别:

  1. 您有责任在您的密钥管理基础设施中保留一份导入密钥的副本,以便随时重新导入这些密钥。但是,在您计划删除密钥之前,AWS 可一直确保 AWS KMS 代表您生成的密钥的可用性、安全性和持久性。
  2. 您可以为导入的密钥设置有效期。AWS KMS 将在有效期后自动删除密钥。您也可以按需删除导入的密钥材料。在这两种情况下,密钥材料本身会被删除,但 AWS KMS 中的 CMK 参考以及相关的元数据仍会保留,因此,密钥材料可在今后重新导入。AWS KMS 生成的密钥不会失效,也无法立即删除;有 7 到 30 天的强制等待期。所有客户托管的 CMK,无论密钥材料是否是导入的,均可手动禁用或计划删除。在此情况中,CMK 本身会被删除,而不仅仅是底层密钥材料。

问:我能否轮换密钥?
可以。您可以选择让 AWS KMS 每年自动轮换 CMK,前提是这些密钥都是在 AWS KMS HSM 中生成的。导入的密钥、非对称密钥或在 AWS CloudHSM 集群中使用 AWS KMS 自定义密钥存储功能生成的密钥不支持自动密钥轮换。如果您选择将密钥导入到 AWS KMS,选择使用非对称密钥或使用自定义密钥存储,则可以创建新 CMK,并将现有密钥别名从旧 CMK 映射到新 CMK 来手动轮换密钥。

问:当密钥在 AWS KMS 中轮换之后,我是否必须重新加密数据?
如果您选择让 AWS KMS 自动轮换密钥,则无需重新加密数据。AWS KMS 会自动保留旧版密钥,以用于根据旧版密钥解密已加密的数据。对 AWS KMS 中密钥的所有新加密请求都会按照最新版密钥加密。

如果您手动轮换导入的密钥或自定义密钥存储密钥,根据您是否要保留旧版密钥,可能需要重新对数据进行加密

问:我能否从 AWS KMS 中删除密钥?
是。您可以设定计划以删除在 AWS KMS 中创建的客户主密钥和相关元数据,可配置的等待期为 7 到 30 天。该等待期让您能够验证删除密钥会对依赖它的应用程序和用户产生何种影响。默认的等待期为 30 天。在等待期内,您可以取消密钥删除操作。计划删除的密钥将无法使用,直到您在等待期内取消删除操作。如果您不取消删除操作,在可配置的等待期结束时,密钥会被删除。一旦密钥被删除,您就无法再使用它。使用被删除的主密钥保护的所有数据将无法访问。

对于使用导入密钥材料的客户主密钥,您可以通过两种方式删除密钥材料,而无需删除客户主密钥 ID 或元数据。第一,您可以按需删除无等待期的导入密钥材料。第二,在将密钥材料导入客户主密钥中时,您可以规定一个到期时间,设定 AWS 在删除您导入的密钥材料前可以使用其多久。如果您需要再次使用,则可以将密钥材料重新导入客户主密钥。

问:如果我导入的密钥材料到期,或者被我意外删除,应该怎么办?
您可以在原客户主密钥下将设有有效到期时间的密钥材料副本重新导入 AWS KMS,以便使用。

问:系统会提醒我需要重新导入密钥吗?
是。将密钥导入客户主密钥之后,您每隔几分钟便会收到一项 Amazon CloudWatch 指标,显示导入密钥的到期时间倒计时。如果客户主密钥下的导入密钥到期,您还会收到一个 Amazon CloudWatch 事件。您可以构建逻辑来响应这些指标或事件,自动重新导入使用新到期时间的密钥,以免出现可用性风险。

问:我能否使用 AWS KMS 帮助加密 AWS 云服务之外的数据?
是。AWS KMS 在 AWS 开发工具包、AWS 加密开发工具包、Amazon DynamoDB 客户端加密和 Amazon S3 加密客户端中均受支持,可促进您自己的应用程序(无论其在何处运行)内的数据加密。访问 AWS Crypto ToolsAWS 上的开发网站了解更多信息。

问:我在 AWS KMS 中创建的密钥数量是否有限制?
您最多可以在每个区域的每个账户下创建 10000 个 CMK。启用和禁用的 CMK 都会被计入该限制,因此,我们建议您删除不再使用的禁用密钥。代您创建的用于受支持的 AWS 服务的 AWS 托管 CMK 不在此限值之列。对于可使用 CMK 派生并用于您的应用程序中或被 AWS 服务代您加密数据所用的数据密钥,其数量没有限制。您可以访问 AWS 支持中心请求增加 CMK 上限。

问:支持哪些类型的对称密钥和算法?
在创建 CMK 时,AWS KMS 支持 256 位密钥。返回给调用方的生成的数据密钥可以是 256 位、128 位或不超过 1024 位的任意值。 AWS KMS 代表您使用 256 位 CMK 时,将使用 Galois Counter Mode (AES-GCM) 下的 AES 算法。

问:支持哪些类型的非对称密钥类型?
AWS KMS 支持以下非对称密钥类型 - RSA 2048、RSA 3072、RSA 4096、ECC NIST P-256、ECC NIST P-384、ECC NIST-521 和 ECC SECG P-256k1。

问:支持哪些类型的非对称加密算法?
AWS KMS 支持 RSAES_OAEP_SHA_1 和 RSAES_OAEP_SHA_256 加密算法和 RSA 2048、RSA 3072 和 RSA 4096 密钥类型。加密算法不能与椭圆曲线密钥类型(ECC NIST P-256、ECC NIST P-384、ECC NIST-521 和 ECC SECG P-256k1)。一起使用

问:支持哪些类型的非对称签名算法?
使用 RSA 密钥类型时,AWS KMS 支持 RSASSA_PSS_SHA_256、RSASSA_PSS_SHA_384、RSASSA_PSS_SHA_512、RSASSA_PKCS1_V1_5_SHA_256、RSASSA_PKCS1_V1_5_SHA_384 和 RSASSA_PKCS1_V1_5_SHA_512 签名算法。
在使用椭圆曲线密钥类型时,AWS KMS 支持 ECDSA_SHA_256、ECDSA_SHA_384 和 ECDSA_SHA_512 签名算法。

问:是否可以明文形式从该服务导出对称 CMK?
不能。对称 CMK 或非对称 CMK 的私有部分不能以明文形式从 HSM 中导出。非对称 CMK 的公开部分可以从控制台导出,或者通过调用“GetPublicKey”API 导出。

问:可以明文形式从 HSM 导出数据密钥和数据密钥对吗?
可以。对称数据密钥可以使用“GenerateDataKey”API 或“GenerateDataKeyWithoutPlaintext”API 导出。非对称数据密钥对的私有和公共部分都可以使用“GenerateDataKeyPair”API 或“GenerateDataKeypairWithoutPlaintext”API 从 AWS KMS 导出。

问:数据密钥和数据密钥对是如何进行保护以便在该服务外部存储的?
在您请求 AWS KMS 生成数据密钥时,对称数据密钥或非对称数据密钥的私有部分使用您定义的对称 CMK 加密。

问:如何使用非对称 CMK 的公共部分?
非对称密钥材料的公共部分是在 AWS KMS 中生成的,可以通过调用“Verify”API 用于数字签名验证,或通过调用“Encrypt”API 用于公共密钥加密。公共密钥也可以在 AWS KMS 外部用于验证或加密。您可以调用 GetPublicKey API 检索非对称 CMK 的公共部分。

问:发送到 AWS KMS 以用于非对称运算的数据大小限制是多少?
该大小限制为 4KB。如果您想要对超过 4KB 的数据进行数字签名,您可以选择创建数据的信息摘要,并将它发送到 AWS KMS。数字签名是基于数据摘要创建的,然后返回。您可以在 Sign API 请求中作为参数指定是要发送完整信息或信息摘要。对于要求使用非对称运算的 Encrypt、Decrypt 或 Re-Encrypt API,任何提交到这些 API 的数据也不得超过 4KB。

问:如何区分我创建的非对称或对称 CMK?
在控制台中,每个密钥都有一个新字段,称作“密钥类型”。该字段将使用值“非对称密钥”或“对称密钥”指示密钥类型。“DescribeKey”API 将返回一个“KeyUsage”字段,用于指定是否可以使用密钥签名或加密。

问:是否支持自动轮换非对称 CMK?
不支持。非对称 CMK 不支持自动密钥轮换。您可以通过创建新 CMK,并将现有密钥别名从旧 CMK 映射到新 CMK 来手动轮换密钥。

问:一个非对称 CMK 是否可以同时用于加密和签名?
不可以。在创建 CMK 时,必须指定密钥是可以用于解密还是签名操作。RSA 密钥类型可以用于签名或加密操作,但不能同时用于这两个操作。椭圆曲线密钥类型只能用于签名操作。

问:非对称密钥是否有相关的服务限制?
是。不同密钥类型和算法有不同的每秒请求速率限制。有关详细信息,请参考 AWS KMS 限制页面。

问:非对称密钥可以配合 AWS KMS 自定义密钥存储或导入密钥功能一起使用吗?
不可以。不能将自定义密钥存储功能与非对称密钥一起使用,也不可以将非对称密钥导入 AWS KMS。

问:我可以将非对称 CMK 用于需要数字证书的数字签名应用程序吗?
不能直接这样使用。AWS KMS 不会存储数字证书或将数字证书与它创建的 CMK 关联起来。您可以选择让 ACM PCA 等证书颁布机构为非对称 CMK 的公共部分发布证书。这将允许使用公共密钥的实体验证公共密钥确实属于您。

问:在哪些场景下我应该使用 ACM 私有证书颁发机构,而不是AWS KMS?
使用 ACM 私有证书颁发机构 (CA) 服务的主要原因是提供公共密钥基础设施 (PKI),以用于标识实体和保护网络连接。PKI 提供一些流程和机制(主要使用 X.509 证书)围绕着公共密钥加密运算设置结构。证书提供身份和公共密钥之间的关联。证书颁发机构发放证书的认证流程让受信任的证书颁发机构通过对证书签名来声明其他实体的身份。PKI 提供身份、分布式信任、密钥生命周期管理以及通过撤销发布的证书状态。这些功能为 AWS KMS 提供的底层非对称加密密钥和算法增加了重要的流程和基础设施。

ACM 私有 CA 让您颁发证书以标识 Web 和应用服务器、服务网格、VPN 用户、内部 API 端点和 IoT 设备。证书让您可以确定这些资源的身份,并创建加密的 TLS/SSL 通信通道。如果您考虑使用非对称密钥来终止 Web 或应用服务器、Elastic Load Balancer、API Gateway 端点、EC2 示例或容器上的 TLS,应考虑使用 ACM 私有 CA 颁发证书和提供 PKI 基础设施。

相比之下,AWS KMS 让您生成、管理和使用非对称密钥进行不需要证书的数字签名和/或加密操作。虽然证书支持在不受信任参与方之间验证发送者和接收者的身份,但 AWS KMS 提供的原始非对称操作类型通常适用于您有其他机制来提供身份,或者完全不需要证明身份即可获得所需安全益处的情况。

问:我可以将 OpenSSL、JCE、Bouncy Castle 或 CNG 等应用加密 API 提供程序与 AWS KMS 一起使用吗?
AWS KMS 没有针对任何其他加密 API 提供程序提供原生集成。您必须直接使用 AWS KMS API,或者通过 AWS SDK 使用,以将签名和加密功能集成到您的应用中。

问:AWS KMS 是否提供服务等级协议 (SLA)?
是。如果客户的月度正常运行时间百分比在任何账单周期内低于我们的服务承诺,则 Amazon KMS SLA 将提供服务积分。

自定义密钥存储

问:什么是自定义密钥存储?
AWS KMS 自定义密钥存储功能既有 AWS CloudHSM 的控制能力,又有 AWS KMS 的集成性和易用性。您可以配置自己的 CloudHSM 集群,并授权 AWS KMS 将其用作您的密钥的专用密钥存储,而不是默认 AWS KMS 密钥存储。当您在 AWS KMS 中创建密钥时,可以选择在您的 CloudHSM 集群中生成密钥材料。在自定义密钥存储中生成的 CMK 绝对不会以纯文本形式离开 CloudHSM 集群中的 HSM,所有使用这些密钥的 AWS KMS 操作都仅在 HSM 中执行。在所有其他方面,存储在您的自定义密钥存储中的 CMK 都与其他 AWS KMS CMK 一致。

确定自定义密钥存储是否适用于您的其他指南可以在此博客中找到。

问:我为什么需要使用自定义密钥存储?
由于您控制自己的 AWS CloudHSM 集群,因此您可以选择独立于 AWS KMS 来管理 CMK 的生命周期。您会发现之所以自定义密钥存储很有用,主要有四个原因。第一,您可能在单租户 HSM 中或在您可以直接进行控制的 HSM 中有明确需要得到保护的密钥。第二,您可能拥有需要存储在 HSM 中并获得 FIPS 140-2 第 3 级整体验证的密钥(用于标准 AWS KMS 密钥存储的 HSM 已经或正在申请获得第 2 级验证以及第 3 级多种类别验证)。第三,您可能需要能够立即从 AWS KMS 删除密钥材料,以证明您已经通过独立方法完成了这一操作。最后,您可能需要能够独立于 AWS KMS 或 AWS CloudTrail 审计所有密钥的使用情况。

问:自定义密钥存储是否会对密钥管理方式产生影响?
与在默认 AWS KMS 密钥存储中管理密钥相比,在自定义密钥存储中管理密钥有两个不同之处。您无法将密钥材料导入自定义密钥存储,并且您无法让 AWS KMS 自动轮换密钥。在其他所有方面,包括可以生成的密钥类型、密钥使用以及策略定义方式,存储在自定义密钥存储中的密钥与所有其他 AWS KMS 客户托管的 CMK 的管理方式相同。

问:我能否使用自定义密钥存储来存储 AWS 托管的客户主密钥?
不可以,只有客户托管的 CMK 可以存储在 AWS KMS 自定义密钥存储中,并能够在其中进行管理。其他 AWS 服务为您创建的用于加密数据的 AWS 托管的 CMK 通常由 AWS KMS 默认密钥存储生成并存储在其中。

问:自定义密钥存储是否会对密钥使用方式产生影响?
不会,API 会向 AWS KMS 发出请求,要求以同样的方式使用 CMK 处理数据加密或解密。身份验证和授权运行过程与密钥的存储位置无关。所有使用自定义密钥存储中的密钥的活动也会以同样的方式记录到 AWS CloudTrail。但是,实际的加密操作只能在自定义存储或默认 AWS KMS 密钥存储中进行。

问:我如何在自定义密钥存储中审计密钥的使用情况?
除了被 AWS KMS 记录到 AWS CloudTrail 的活动,自定义密钥存储的使用情况还会提供三种深入审计机制。第一种,AWS CloudHSM 也会将所有 API 活动记录到 AWS CloudTrail,例如,创建集群并添加或删除 HSM。第二种,每个集群也会获取自己的本地日志,以记录用户和密钥管理活动第三种,每个 CloudHSM 实例都会将本地用户和密钥管理活动日志复制到 AWS CloudWatch。

问:使用自定义密钥存储会对密钥的可用性产生什么影响?
通过使用 AWS KMS 自定义密钥存储,可以确保您的密钥能够用于 AWS KMS。配置 CloudHSM 时出现的错误以及在 AWS CloudHSM 集群中意外删除密钥材料都会影响可用性。使用的 HSM 数量以及您选择的可用区 (AZ) 也会影响集群的恢复能力。和其他所有密钥管理系统一样,了解密钥可用性对恢复您的加密数据所产生的影响非常重要。

问:与自定义密钥存储相关的性能限制是什么?
存储在 AWS KMS 自定义密钥存储中的密钥可通过 AWS KMS API 调用来使用的比例低于存储在默认 AWS KMS 密钥存储中的密钥的比例。请参阅 AWS KMS 开发指南了解当前的性能限制

问:使用自定义密钥存储相关的成本是多少?
使用自定义密钥存储不会对 AWS KMS 定价产生影响。但是,每个自定义密钥存储确实需要您的 AWS CloudHSM 集群包含至少两个 HSM。将根据标准 AWS CloudHSM 定价收取 HSM 的费用。使用自定义密钥存储不会产生额外的费用。

问:配置自定义密钥存储还需要哪些技能和资源?
希望使用自定义密钥存储的 AWS KMS 用户将需要设置 AWS CloudHSM 集群添加 HSM管理 HSM 用户以及能够从备份进行 HSM 恢复。这些都是安全敏感型任务,您应该确保拥有合适的资源和适当的组织控制。

问:我能否将密钥导入自定义密钥存储?
不能,不支持将您的密钥材料导入 AWS KMS 自定义密钥存储。存储在自定义密钥存储中的密钥只能在构成您的 AWS CloudHSM 集群的 HSM 中生成。

问:我能否在默认 AWS KMS 密钥存储和自定义密钥存储间迁移密钥?
不可以,目前不支持在不同类型的 AWS KMS 密钥存储之间迁移密钥。所有密钥都必须在其使用的密钥存储中创建,您将自己的密钥材料导入默认 AWS KMS 密钥存储的情况除外。

问:我能否轮换存储在自定义密钥存储中的密钥?
不支持自动轮换 AWS KMS 自定义密钥存储中的密钥材料。密钥轮换必须手动执行,方法是创建新密钥并重新映射您的应用程序代码所使用的 AWS KMS 密钥别名,以便在今后的加密操作中使用新密钥。

问:我能否将我的 AWS CloudHSM 集群用于其他应用程序?
可以,AWS KMS 不需要获得访问 AWS CloudHSM 群集的权限。如果您已有群集,则您可以将其用作客户密钥存储,并继续将其用于您的其他应用程序。但是,如果您的集群支技非 AWS KMS 高工作负载,您可能会在您的自定义密钥存储中使用 CMK 的操作时遇到吞吐量降低的情况。同样,对自定义密钥存储的高 AWS KMS 请求速率可能会对您的其他应用程序产生影响。

问:我如何了解有关 AWS CloudHSM 的更多信息?
访问 AWS CloudHSM 网站了解服务概览,更多有关配置和使用服务的详细信息,请参考 AWS CloudHSM 用户指南。 

计费

问:使用 AWS KMS 时如何收费和计费?
使用 AWS KMS,您仅需按用量付费,而且没有最低费用。开始使用服务时,没有安装费,用户无需对服务的使用签订任何长期使用期限合约。每个月底将自动向您的信用卡收取当月使用费。

您要为您创建的所有 CMK 和每月超出免费套餐的提交给服务的 API 请求支付费用。

要了解当前定价信息,请访问 AWS KMS 定价页面。

问:有免费套餐吗?
有。使用 AWS 免费使用套餐,您可以在所有区域免费开始使用 AWS KMS。AWS 服务为您创建的 AWS 托管的 CMK 可以免费存储在您的账户中。还有每月提供至该服务的免费请求数量的免费使用套餐。要了解当前定价信息,包括免费套餐,请访问 AWS KMS 定价页面

* 免费套餐不包括涉及非对称 CMK 的 API 请求以及针对 GenerateDataKeyPair 和 GenerateDataKeyPairWithoutPlaintext API 的 API 请求。

问:价格是否含税?
除非另行说明,否则我们的价格不包含适用的税费和关税(包括增值税和适用的销售税)。使用日本账单地址的客户若要使用 AWS,则需缴纳日本消费税。您可以在此了解更多信息。

安全性

问:谁可以在 AWS KMS 中使用并管理我的密钥?
AWS KMS 执行您规定的使用和管理策略。您选择允许您账户或其他账户中的 AWS Identity and Access Management (IAM) 用户和角色使用并管理您的密钥。

问:AWS 如何保护我创建的 CMK?
AWS KMS 旨在确保包括 AWS 员工在内的任何人都无法从该服务中检索您的纯文本 CMK。无论您是使用 AWS KMS 或 AWS CloudHSM 创建密钥还是将密钥导入服务本身中,该服务都会使用经 FIPS 140-2 验证或在验证过程中的硬件安全模块 (HSM) 保护您的密钥的机密性和完整性。您的纯文本 CMK 永远不会离开 HSM,也永远不会被写入磁盘中,只会在执行您请求的加密操作期间在 HSM 的易失性内存中使用它。AWS KMS 密钥永远不会传输到创建其所在的 AWS 区域之外。对服务主机上的软件以及 AWS KMS HSM 固件的更新由 Amazon 的内部独立小组以及符合 FIPS 140-2 规定的 NIST 认证的实验审计和审核的多方访问控件控制。

有关安全控件的更多详细信息,请查看 AWS KMS 加密详情白皮书。您还可以查看适用于 AWS KMS HSM 的 FIPS 140-2 证书以及相关联的安全策略,以详细了解 AWS KMS HSM 对 FIPS 140-2 的安全要求的满足情况。此外,您还可以请求下载一份由 AWS Artifact 提供的服务组织控制 (SOC) 报告,以详细了解该服务用于保护您的 CMK 的安全控件。

问:如何迁移现有的 CMK 以使用经 FIPS 140-2 验证的 HSM?
所有 CMK(无论创建日期或来源如何)都会使用已经或正在申请获得 FIPS 140-2 验证的 HSM 进行自动保护。您不需要执行任何操作即可使用经 FIPS 140-2 验证的 HSM。

问:哪些 AWS 区域拥有经 FIPS 140-2 验证的 HSM?
在所有提供 AWS KMS 的 AWS 区域,经 FIPS 140-2 验证的 HSM 均可用。

问:经 FIPS 140-2 验证的终端节点和 AWS KMS 中经 FIPS 140-2 验证的 HSM 有何区别?
AWS KMS 是两层式服务。API 终端仅使用支持完全正向保密的 TLS 密码套件通过 HTTPS 连接接受客户端请求。这些 API 终端会先验证并授权请求,然后将加密操作请求传递至 AWS KMS HSM,如果您使用的是 KMS 自定义密钥存储功能,则会传递至 AWS CloudHSM 群集。

问:如何使用经 FIPS 140-2 验证的终端节点向 AWS KMS 发出 API 请求?
应将您的应用程序配置为连接到独特区域的经 FIPS 140-2 验证的 HTTPS 终端节点。AWS KMS 的经 FIPS 140-2 验证的 HTTPS 终端节点由 OpenSSL FIPS 对象模块提供技术支持。您可以在以下位置查看 OpenSSL 模块的安全策略:https://www.openssl.org/docs/fips/SecurityPolicy-2.0.13.pdf。经 FIPS 140-2 验证的 API 终端节点在所有提供 AWS KMS 的商业区域均可用。

问:使用 AWS KMS 就能符合支付卡行业数据安全标准 (PCI DSS 3.2.1) 中的加密和密钥管理要求吗?
可以。经过验证,AWS KMS 拥有功能和安全控件,可帮助您满足加密和密钥管理要求(主要涉及 PCI DSS 3.2.1 的第 3.5 和 3.6 节)。

如需详细了解 AWS 中符合 PCI DSS 规定的服务,请参阅 PCI DSS 常见问题

问:AWS KMS 如何保护我在应用程序中导出和使用的数据密钥?
您可以请求 AWS KMS 生成数据密钥,并返回这些密钥以用于您自己的应用程序。数据密钥按照您在 AWS KMS 中定义的主密钥加密,从而使您可以安全地存储加密的数据密钥与您的加密数据。您的加密数据密钥(以及您的源数据)只能由有权使用原主密钥的用户来为您的加密数据密钥解密。

问:我能否导出 CMK 并将其用于我自己的应用程序中?
不可以。为帮助确保 CMK 的安全,使您的策略能得到一致性实施并提供集中化的 CMK 使用日志,只能在该服务中创建和使用主密钥。

问:我的密钥存储在哪些地理区域?
AWS KMS 生成的密钥只能存储在创建区域,并在该区域使用。它们无法传输到另一区域。例如,创建于中欧(法兰克福)区域的密钥只能存储并使用于中欧(法兰克福)区域。

问:我怎么知道谁在 AWS KMS 中使用或更改了我的密钥的配置?
AWS CloudTrail 中的日志将告诉您所有 AWS KMS API 请求,包括管理请求(例如创建、轮换、禁用和策略编辑)和加密请求(例如加密/解密)。在您的账户中启用 AWS CloudTrail 以查看这些日志。

问:AWS KMS 与 AWS CloudHSM 相比如何?
AWS CloudHSM 在 Amazon Virtual Private Cloud (VPC) 中提供了一个经 FIPS 140-2 等级 3 整体验证的单租户 HSM 集群,以存储和使用您的密钥。您对如何通过独立于 AWS 的身份验证机制使用您的密钥拥有独家控制权。您与 AWS CloudHSM 集群中密钥的交互方式与您与 Amazon EC2 中运行的应用程序的交互方式相似。您可以通过 PKCS#11、Java JCE 或 Microsoft CNG 界面使用 AWS CloudHSM 支持各种使用案例,如数字权限管理 (DRM)、公有密钥基础设施 (PKI)、文档签名和加密函数。

AWS KMS 使您可以控制您的应用程序和受支持 AWS 产品通过单个控制台在全世界多个区域使用的加密密钥。该服务使用已经或正在申请获得 FIPS 140-2 验证的 FIPS HSM 来保护您的密钥的安全性。在 AWS KMS 中对您所有的密钥进行集中化管理使您可以实施关于谁能在何种条件下使用您的密钥、它们何时轮换以及谁能管理它们的策略。AWS KMS 与 AWS CloudTrail 的集成,使您能够审计您的密钥使用情况,以支持法规和合规性活动。如果您要通过与 AWS KMS 集成的其他 AWS 服务直接调用服务 API,请使用 AWS 开发工具包通过您的应用程序与 AWS KMS 交互,如果您要执行客户端加密,请使用 AWS 加密 SDK 通过您的应用程序与 AWS KMS 交互。

Product-Page_Standard-Icons_01_Product-Features_SqInk
了解有关定价的更多信息

查看定价示例并计算成本。

了解更多 
Product-Page_Standard-Icons_02_Sign-Up_SqInk
注册免费账户

立即享受 AWS 免费套餐。 

注册 
Product-Page_Standard-Icons_03_Start-Building_SqInk
开始在控制台中构建

在 AWS 控制台中使用 AWS Key Management Service 开始构建。

登录