如何使用AmazonNitro 飞地使用Amazon KMS - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

如何使用AmazonNitro 飞地使用Amazon KMS

Amazon硝基飞地是一种 Amazon EC2 功能,允许您从 Amazon EC2 实例创建隔离的计算环境。

中运行的应用程序Amazon硝基飞地可以使用AmazonNitro 飞地开发工具包调用Amazon KMS DecryptGenerateDataKey, 和GenerateRandom操作。硝基飞地 SDK 将证明文档从飞地添加到每个Amazon KMSAPI 请求。而不是返回明文数据,Amazon KMS操作会使用证明文档中的公钥对明文进行加密。这种设计允许密文只能通过飞地内相应的私钥进行解密。

为了支持AmazonNitro 飞地,Amazon KMS添加Recipient请求参数与RecipientInfo对象类型和CiphertextForRecipient响应字段添加到这些操作的标准请求和响应字段。这些特定于飞地的元素仅在受支持的 API 操作中有效,并且仅当请求使用AmazonNitro 飞地开发工具包。Amazon KMS依赖于飞地证明文件的数字签名来证明请求中的公用钥匙来自有效的飞地。您不能提供自己的证书来对证明文档进行数字签名。

Amazon KMS还支持策略条件键,您可以使用这些密钥来允许Amazon KMS键仅当证明文档具有指定的内容时。有关详细信息,请参阅 Amazon KMS的条件键AmazonNitro 飞地

有关的信息Amazon硝基飞地,请参阅是什么AmazonNitro 飞地中的AmazonNitro 飞地开发人员指南。有关为加密设置数据和数据密钥的信息,请参阅。将加密证明与Amazon KMS

Recipient

"Recipient": { "AttestationDocument": blob, "KeyEncryptionAlgorithm": "string" }

包含来自飞地和加密算法的签名证明文档的请求参数。唯一有效的加密算法为RSAES_OAEP_SHA_256

此参数仅在请求来自AmazonNitro 飞地开发工具包。

类型:收件人信息对象

RecipientInfo

此类型包含有关接收 API 操作响应的飞地的信息。

证明文档

描述硝基飞地状态的测量文件。本文档还包括飞地的公钥。Amazon KMS将加密此公钥下的响应中的任何明文,以便稍后只能由飞地中的相应私钥解密。

类型:Base64 编码的二进制数据对象

长度约束:最小长度为 1。长度上限为 262144。

必需:否

密钥加密算法

加密算法Amazon KMS应该与公有密钥一起使用。唯一有效值为 RSAES_OAEP_SHA_256

类型:String

有效 值:RSAES_OAEP_SHA_256

必需:否

CiphertextForRecipient

{ "CiphertextForRecipient": blob }

此响应字段包含使用请求中证明文档中的公钥加密的密文。此字段仅在请求包含Recipient参数使用有效的证明文档和加密算法。填充此字段后,Plaintext响应中的字段为空。

类型:Base64 编码的二进制数据对象

长度约束:最小长度为 1。长度上限为 6144。

Amazon KMS的操作AmazonNitro 飞地

以下Amazon KMS操作支持硝基飞地。本主题介绍了当请求来自AmazonNitro 飞地开发工具包和Recipient参数包含有效的证明文档。这些操作支持Recipient参数和CiphertextForRecipient响应字段。

Decrypt

调用Decrypt操作,请使用公里解密中的操作AmazonNitro 飞地开发工具包。

在使用指定的Amazon KMS键来解密请求中的密文 Blob,Decrypt操作使用证明文档中的公钥和指定的加密算法重新加密生成的明文。它返回CiphertextForRecipient响应中的字段。这些区域有:Plaintext响应中的字段为空。

GenerateDataKey

调用GenerateDataKey操作,请使用千米生成数据密钥中的操作AmazonNitro 飞地开发工具包。

生成数据密钥后,GenerateDataKey操作将在指定的Amazon KMS键,并将其返回到CiphertextBlob字段。它会加密证明文档中公有密钥下的其他数据密钥副本,并将其返回到CiphertextForRecipient字段。这些区域有:Plaintext响应中的字段为空。

您使用两个加密数据密钥GenerateDataKey响应取决于您对飞地的使用。

  • 如果要使用数据密钥加密飞地内的数据,请解密CiphertextForRecipient字段使用您的飞地内的私钥。如果要将此新加密的数据保留在飞地之外,则可以将其与两个加密的数据密钥副本中的任何一个存储在GenerateDataKey(kms-generate-data-key)响应。

  • 如果您打算保持飞地运行,并且可以依赖于飞地内存中的私钥的持久性,则可以包含CiphertextForRecipient对象与新加密的数据一起移动到飞地之外。当您准备好解密CiphertextForRecipient对象,您必须在该飞地中使用相应的私有密钥。

    如果你不打算保持你的飞地运行,或者你不想依赖于飞地内存中的私钥的持久性,你应该包含CiphertextBlob对象与您的加密数据。要解密此数据密钥副本,您必须将其发送到Amazon KMS在Decrypt(kms-decrypt)请求。

    您还可以将CiphertextBlob对象添加到不同的飞地,然后通过调用kms-decrypt(Decrypt) 操作AmazonNitro 飞地开发工具包。此请求将包含带有新公钥的新飞地的证明文档。Amazon KMS将解密在Amazon KMS密钥,然后在新飞地的公钥下重新加密它。此数据密钥只能使用新飞地中的相应私有密钥进行解密。

GenerateRandom

调用GenerateRandom操作,请使用千米生成随机中的操作AmazonNitro 飞地开发工具包。

生成随机字节字符串后,GenerateRandom操作使用证明文档中的公钥和指定的加密算法对随机字节字符串进行加密。它返回加密的字节字符串CiphertextForRecipient字段。这些区域有:Plaintext响应中的字段为空。