本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
计划导入密钥材料
导入的密钥材料允许您在生成的加密密钥下保护您的 AWS 资源。您导入的密钥材料与特定的 KMS 密钥相关联。您可以将相同的密钥材料重新导入到同一 KMS 密钥中,但不能将不同的密钥材料导入 KMS 密钥,也无法将专为导入的密钥材料设计的 KMS 密钥转换为带有密钥材料的 KMS AWS KMS 密钥。
了解更多:
关于导入的密钥材料
在决定将密钥材料导入之前 AWS KMS,您应该了解导入的密钥材料的以下特征。
- 您可以生成密钥材料
-
您负责使用符合您的安全要求的随机源来生成密钥材料。
- 您可以删除密钥材料
-
您可以从 KMS 密钥中删除导入的密钥材料,以便立即使 KMS 密钥不可用。此外,当您将密钥材料导入 KMS 密钥中时,您可以确定密钥是否到期,并设置其到期时间。到期时间到来时, AWS KMS 删除密钥材料。如果没有密钥材料,则该 KMS 密钥无法用于任何加密操作。要还原密钥,必须将相同密钥材料重新导入到密钥中。
- 您无法更改密钥材料
-
当您将密钥材料导入 KMS 密钥中时,该 KMS 密钥将与该密钥材料永久关联。您可以重新导入相同的密钥材料,但不能将不同的密钥材料导入该 KMS 密钥。而且,您不能为具有导入密钥材料的 KMS 密钥启用自动密钥轮换。但是,您可以手动轮换带有导入密钥材料的 KMS 密钥。
- 您无法更改密钥材料源
-
专用于导入的密钥材料的 KMS 密钥拥有一个
EXTERNAL
的源值,该值无法更改。您不能将导入的密钥材料的 KMS 密钥转换为使用任何其他来源(包括)的密钥材料 AWS KMS。同样,您不能将包含密钥材料的 KMS AWS KMS 密钥转换为专为导入的密钥材料而设计的密钥。 - 您无法导出密钥材料
-
您无法导出您导入的任何密钥材料。 AWS KMS 无法以任何形式将导入的密钥材料退还给您。您必须在外部保存导入的密钥材料的副本 AWS,最好是在密钥管理器中,例如硬件安全模块 (HSM),以便在删除密钥材料或密钥材料过期时可以重新导入。
- 您可创建具有导入密钥材料的多区域密钥
-
具有导入密钥材料的多区域具有包含导入密钥材料的 KMS 密钥的功能,并且可以在 AWS 区域之间进行互操作。要创建具有导入密钥材料的多区域密钥,您必须将相同的密钥材料导入 KMS 主密钥和每个副本密钥。有关更多信息,请参阅 将密钥材料导入到多区域密钥中。
- 非对称密钥和 HMAC 密钥具有可移植性和互操作性
-
您可以在外部使用非对称密钥材料和 HMAC 密钥材料,与具有相同导入密钥材料的 AWS AWS KMS 密钥进行互操作。
与 AWS KMS 对称密文不同,对称密文与算法中使用的 KMS 密钥密不可分,它 AWS KMS 使用标准 HMAC 和非对称格式进行加密、签名和 MAC 生成。因此,这些密钥是可移植的,并且支持传统的托管密钥方案。
当您的 KMS 密钥导入了密钥材料后,您可以使用外部导入的密钥材料 AWS 来执行以下操作。
-
HMAC 密钥 – 您可以使用导入的密钥材料验证由 HMAC KMS 密钥生成的 HMAC 标签。您还可以将 HMAC KMS 密钥与导入的密钥材料一起使用,以验证由外部的密钥材料生成的 HMAC 标签。 AWS
-
非对称加密密钥 — 您可以使用外部的私有非对称加密密钥 AWS 来解密由 KMS 密钥和相应的公钥加密的密文。您还可以使用非对称 KMS 密钥来解密在外部生成的非对称密文。 AWS
-
非对称签名密钥 — 您可以使用带有导入密钥材料的非对称签名 KMS 密钥来验证由您的私有签名密钥在外部生成的数字签名。 AWS您还可以在外部使用非对称公有签名密钥 AWS 来验证非对称 KMS 密钥生成的签名。
-
非对称密钥协议密钥 — 您可以将非对称公钥协议 KMS 密钥与导入的密钥材料一起使用,与外部的对等方派生共享密钥。 AWS
如果您在相同的 AWS 区域中将相同的密钥材料导入不同的 KMS 密钥中,则这些密钥也是可以互操作的。要在不同版本中创建可互操作的 KMS 密钥 AWS 区域,请使用导入的密钥材料创建多区域密钥。
-
- 对称加密密钥不可移植或互操作
-
生 AWS KMS 成的对称密文不可移植或互操作。 AWS KMS 不会发布可移植性所需的对称密文格式,并且格式可能会更改,恕不另行通知。
-
AWS KMS 即使您使用已导入的密钥材料,也无法解密您在外部加密的 AWS对称密文。
-
AWS KMS 不支持解密外部的任何 AWS KMS 对称密文,即使密文是在 KMS 密钥下使用导入的密钥材料加密的。 AWS KMS
-
具有相同导入密钥材料的 KMS 密钥不可互操作。 AWS KMS 生成每个 KMS 密钥特有的密文的对称密文。此加密文字格式保证只有加密数据的 KMS 密钥才能解密数据。
此外,您不能使用任何 AWS 工具(例如AWS Encryption SDK或 Amazon S3 客户端加密)来解密对称密文 AWS KMS 。
因此,您不能使用带有导入密钥材料的密钥来支持密钥托管安排,在这种安排中,有权有条件访问密钥材料的授权第三方可以在外部解密某些密文。 AWS KMS要支持密钥托管,请使用 AWS Encryption SDK 来通过独立于 AWS KMS的密钥加密您的消息。
-
- 您需要对可用性和持久性负责
-
AWS KMS 旨在保持导入的密钥材料的高可用性。但是 AWS KMS 不能将进口密钥材料的耐久性保持在与 AWS KMS 生成的密钥材料相同的水平。有关更多信息,请参阅 保护导入的密钥材料。
保护导入的密钥材料
您导入的密钥材料在传输中和静态时都受到保护。在导入密钥材料之前,您需要使用在 FIPS 140-2
收到后,使用 HSM 中的相应私钥对 AWS KMS 密钥材料进行解密,然后使用仅存在于 AWS KMS HSM 易失性存储器中的 AES 对称密钥对其进行重新加密。您的密钥材料绝不会让 HSM 处于纯文本状态。它仅在使用时解密,并且仅在 HSM 中 AWS KMS 解密。
您的 KMS 密钥与导入的密钥材料的使用完全取决于您在 KMS 密钥上设置的访问控制策略。此外,您还可以使用别名和标签来识别和控制对 KMS 密钥的访问。您可以启用和禁用密钥,查看和编辑其属性,并使用类似于 AWS CloudTrail的服务对其进行监控。
但是,您将保留密钥材料的唯一故障保护副本。作为这种额外控制措施的回报,您应对进口密钥材料的耐用性和整体可用性负责。 AWS KMS 旨在保持导入的密钥材料的高可用性。但是 AWS KMS 不能将进口密钥材料的耐久性保持在与 AWS KMS 生成的密钥材料相同的水平。
在以下情况下,这种持久性的差异是有意义的:
-
当您为导入的密钥材料设置过期时间时,将在密钥材料到期后将其 AWS KMS 删除。 AWS KMS 不会删除 KMS 密钥或其元数据。您可以创建一个 Amazon CloudWatch 警报,在导入的密钥材料即将到期时通知您。
您无法删除为 KMS 密钥 AWS KMS 生成的密钥材料,也不能将 AWS KMS 密钥材料设置为过期,但您可以轮换密钥材料。
-
手动删除导入的密钥材料时, AWS KMS 会删除密钥材料,但不会删除 KMS 密钥或其元数据。相比之下,计划密钥删除需要 7 到 30 天的等待期限,之后, AWS KMS 将永久删除密钥材料、其元数据及其密钥材料。
-
万一发生某些影响整个地区的故障 AWS KMS (例如完全断电), AWS KMS 则无法自动恢复导入的密钥材料。但是, AWS KMS 可以恢复 KMS 密钥及其元数据。
您必须在您控制的系统之外保留一份导入 AWS 的密钥材料的副本。我们建议您将导入的密钥材料的可导出副本存储在密钥管理系统中,例如 HSM。如果您导入的密钥材料被删除或过期,则其关联的 KMS 密钥将无法使用,直到您重新导入相同的密钥材料。如果您导入的密钥材料永久丢失,则以 KMS 密钥加密的任何加密文字都将无法恢复。
导入密钥材料的权限
要使用导入的密钥材料创建和管理 KMS 密钥,用户需要在此过程中执行操作的权限。在您创建 KMS 密钥时,您可以在密钥策略中提供 kms:GetParametersForImport
、kms:ImportKeyMaterial
和 kms:DeleteImportedKeyMaterial
权限。在 AWS KMS 控制台中,当您使用外部密钥材料来源创建密钥时,会自动为密钥管理员添加这些权限。
若要使用导入的密钥材料创建 KMS 密钥,委托人需要以下权限。
-
kms: CreateKey(IAM 策略)
-
要将此权限限制为使用已导入密钥材料的 KMS 密钥,请使用值为 kms: KeyOrigin 策略条件
EXTERNAL
。{ "Sid": "CreateKMSKeysWithoutKeyMaterial", "Effect": "Allow", "Resource": "*", "Action": "kms:CreateKey", "Condition": { "StringEquals": { "kms:KeyOrigin": "EXTERNAL" } } }
-
-
kms: GetParametersForImport(密钥策略或 IAM 策略)
-
要将此权限限制为使用特定包装算法和封装密钥规范的请求,请使用 k ms: WrappingAlgorithm 和 k ms: WrappingKeySpec 策略条件。
-
-
kms: ImportKeyMaterial(密钥策略或 IAM 策略)
-
要允许或禁止过期的密钥材料并控制过期日期,请使用 kms: ExpirationModel 和 kms: ValidTo 策略条件。
-
要重新导入导入的密钥材料,委托人需要 k ms: GetParametersForImport 和 kms: ImportKeyMaterial 权限。
要删除导入的密钥材料,委托人需要 kms: DeleteImportedKeyMaterial 权限。
例如,要授予示例使用导入的密钥材料管理 KMS 密钥所有方面的 KMSAdminRole
权限,请在 KMS 密钥的密钥策略中加入如下所示的密钥策略声明。
{ "Sid": "Manage KMS keys with imported key material", "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::111122223333:role/KMSAdminRole" }, "Action": [ "kms:GetParametersForImport", "kms:ImportKeyMaterial", "kms:DeleteImportedKeyMaterial" ] }
导入密钥材料的要求
您导入的密钥材料必须与相关 KMS 密钥的密钥规范兼容。对于非对称密钥对,仅导入密钥对的私钥。 AWS KMS 从私钥派生公钥。
AWS KMS 支持使用导入的密钥材料的 KMS 密钥的以下密钥规范。
KMS 密钥的密钥类型 | 密钥材料要求 |
---|---|
对称加密密钥 SYMMETRIC_DEFAULT |
256 位(32 字节)的二进制数据 在中国区域,必须是 128 位(16 字节)的二进制数据。 |
HMAC 密钥 HMAC_224 HMAC_256 HMAC_384 HMAC_512 |
HMAC 密钥材料必须符合 RFC 2104 密钥长度必须与密钥规范指定的长度相匹配。 |
RSA 非对称私有密钥 RSA_2048 RSA_3072 RSA_4096 |
您导入的 RSA 非对称私有密钥必须是符合 RFC 3447 模数:2048 位、3072 位或 4096 位 素数数量:2(不支持多素数 RSA 密钥) 非对称密钥材料必须采用符合 RFC 5208 的公钥加密标准 (PKCS) #8 格式进行 BER 编码或 DER 编码。 |
椭圆曲线非对称私有密钥 ECC_NIST_P256 (secp256r1) ECC_NIST_P384 (secp384r1) ECC_NIST_P521 (secp521r1) ECC_SECG_P256K1 (secp256k1) |
您导入的 ECC 非对称私有密钥必须是符合 RFC 5915 曲线:NIST P-256、NIST P-384、NIST P-521 或 Secp256k1 参数:仅限命名曲线(拒绝带有显式参数的 ECC 密钥) 公共点坐标:可以是压缩坐标、未压缩坐标或投影坐标 非对称密钥材料必须采用符合 RFC 5208 的公钥加密标准 (PKCS) #8 格式进行 BER 编码或 DER 编码。 |
SM2 非对称私钥(仅限中国区域) |
您导入的 SM2 非对称私钥必须是符合 GM/T 0003 的密钥对的一部分。 曲线:SM2 参数:仅限命名曲线(拒绝带有显式参数的 SM2 关键帧) 公共点坐标:可以是压缩坐标、未压缩坐标或投影坐标 非对称密钥材料必须采用符合 RFC 5208 的公钥加密标准 (PKCS) #8 格式进行 BER 编码或 DER 编码。 |