Amazon KMSAmazon Nitro Enclaves 的条件密钥 - Amazon Key Management Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon KMSAmazon Nitro Enclaves 的条件密钥

Amazon Nitro Enclaves 是 Amazon EC2 的一项功能,它允许您创建称为地的隔离计算环境,以保护和处理高度敏感的数据。 Amazon KMS 提供条件键来支持 Amazon Nitro Enclaves。这些条件密钥仅对请求获得 Nitro Enclave 有效。 Amazon KMS

当您使用来自安全区的签名认证文档调用 Decrypt DeriveSharedSecretGenerateDataKeyGenerateDataKeyPair、、、或 GenerateRandomAPI 操作时,这些 API 会使用认证文档中的公钥对响应中的明文进行加密,并返回密文而不是纯文本。此加密文字只能使用 Enclave 中的私有密钥进行解密。有关更多信息,请参阅 Amazon Nitro Enclaves 是如何使用的 Amazon KMS

通过以下条件键,您可以根据签名证明文档的内容限制这些操作的权限。在允许操作之前,请将安全区中的证明文档与这些条件键中的值进行 Amazon KMS 比较。 Amazon KMS

kms:RecipientAttestation: ImageSha 384

Amazon KMS 条件密钥 条件类型 值类型 API 操作 策略类型

kms:RecipientAttestation:ImageSha384

String

单值

Decrypt

DeriveSharedSecret

GenerateDataKey

GenerateDataKeyPair

GenerateRandom

密钥策略和 IAM policy

当请求中已签名证明文档中的图像摘要GenerateRandomkms:RecipientAttestation:ImageSha384条件键中的值相匹配时,条件密钥使用 KMS 密钥控制对GenerateDataKeyPair、、、和的访问。Decrypt DeriveSharedSecret GenerateDataKeyImageSha384 值对应于证明文档中的 PCR0。仅当请求中的Recipient参数为 Amazon Nitro 飞地指定了已签名的认证文档时,此条件密钥才有效。

此值也包含在请求获得 Nitro 飞地CloudTrail Amazon KMS 的事件中。

注意

此条件键在密钥策略语句和 IAM policy 语句中有效,即使没有出现在 IAM 控制台或 IAM 服务授权引用中。

例如,以下密钥策略声明允许该data-processing角色使用 KMS 密钥进行解密、、DeriveSharedSecretGenerateDataKeyGenerateDataKeyPair、和GenerateRandom操作。kms:RecipientAttestation:ImageSha384 条件键仅允许在请求中的证明文档的映像摘要值(PCR0)与条件中的映像摘要值匹配时执行操作。仅当请求中的Recipient参数为 Amazon Nitro 飞地指定了已签名的认证文档时,此条件密钥才有效。

如果请求中不包括来自 Amazon Nitro 飞地的有效证明文件,则会因为不满足此条件而拒绝许可。

{ "Sid" : "Enable enclave data processing", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:role/data-processing" }, "Action": [ "kms:Decrypt", "kms:DeriveSharedSecret", "kms:GenerateDataKey", "kms:GenerateDataKeyPair", "kms:GenerateRandom" ], "Resource" : "*", "Condition": { "StringEqualsIgnoreCase": { "kms:RecipientAttestation:ImageSha384": "9fedcba8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef1abcdef0abcdef1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef99" } } }

kms:: PCR RecipientAttestation <PCR_ID>

Amazon KMS 条件密钥 条件类型 值类型 API 操作 策略类型

kms:RecipientAttestation:PCR<PCR_ID>

String

单值

Decrypt

DeriveSharedSecret

GenerateDataKey

GenerateDataKeyPair

GenerateRandom

密钥策略和 IAM policy

只有当请求中已签名证明文档中的平台配置寄存器 (PCR) GenerateRandomkms:RecipientAttestation:PCR<PCR_ID>条件密钥中的 PCR 匹配时,条件密钥才使用 KMS 密钥控制对、、、和的访问。Decrypt DeriveSharedSecret GenerateDataKey GenerateDataKeyPair仅当请求中的Recipient参数指定来自 Amazon Nitro 飞地的已签名认证文档时,此条件密钥才有效。

此值也包含在代表对 Nitro 飞地 Amazon KMS 的请求CloudTrail的事件中。

注意

此条件键在密钥策略语句和 IAM policy 语句中有效,即使没有出现在 IAM 控制台或 IAM 服务授权引用中。

要指定 PCR 值,请使用以下格式。将 PCR ID 连接到条件键名称。PCR 值必须是最多 96 个字节的小写十六进制字符串。

"kms:RecipientAttestation:PCRPCR_ID": "PCR_value"

例如,以下条件键指定 PCR1 的特定值,该值对应于用于 Enclave 和引导启动过程的内核的哈希值。

kms:RecipientAttestation:PCR1: "0x1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef8abcdef9abcdef8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef0abcde"

以下示例密钥政策语句允许 data-processing 角色将 KMS 密钥用于 Decrypt 操作。

此语句中的 kms:RecipientAttestation:PCR 条件键仅在请求中的签名证明文档的 PCR1 值与条件中的 kms:RecipientAttestation:PCR1 值匹配时允许执行操作。使用 StringEqualsIgnoreCase 策略运算符来要求对 PCR 值进行不区分大小写的比较。

如果请求不包含证明文档,则权限将被拒绝,因为不满足此条件。

{ "Sid" : "Enable enclave data processing", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:role/data-processing" }, "Action": "kms:Decrypt", "Resource" : "*", "Condition": { "StringEqualsIgnoreCase": { "kms:RecipientAttestation:PCR1": "0x1de4f2dcf774f6e3b679f62e5f120065b2e408dcea327bd1c9dddaea6664e7af7935581474844767453082c6f1586116376cede396a30a39a611b9aad7966c87" } } }