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

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

Amazon Nitro Enclaves 的 Amazon KMS 条件键

Amazon Nitro Enclaves 是一项 Amazon EC2 功能,可让您创建称为 enclave 的隔离计算环境,以保护和处理高度敏感的数据。Amazon KMS 提供支持 Amazon Nitro Enclaves 的条件键。这些条件键仅在 Amazon KMS 操作的请求起源于 enclave 有效。

当您从 enclave 调用 kms-decryptkms-generate-data-keykms-generate-random Amazon Nitro Enclaves 开发工具包 API 时,这些 API 会使用包含来自 enclave 的已签名证明文档的参数,调用相应的 Amazon KMS 操作。签名的证明文档可向 Amazon KMS 证明 enclave 的身份。

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

kmsRecipientAttestation::ImageSha 384

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

kms:RecipientAttestation:ImageSha384

字符串

单值

Decrypt

GenerateDataKey

GenerateRandom

密钥策略和 IAM 策略

kms:RecipientAttestation:ImageSha384 条件键仅在请求中的签名证明文档的图像哈希值与条件键中的值匹配时允许来自 enclave 的 kms-decryptkms-generate-data-keykms-generate-random 请求。ImageSha384 值对应于证明文档中的 PCR[0]。此条件键仅在您从 enclave 中调用 Amazon Nitro Enclaves 开发工具包 API 时有效。

注意

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

例如,以下密钥策略声明允许data-processing角色使用 KMS 密钥进行kms-decrypt解密)、kms-generate-data-key (GenerateDataKey) 和kms-generate-random (GenerateRandom) 操作。kms:RecipientAttestation:ImageSha384 条件键仅允许在请求中的证明文档的图像哈希值 (PCR[0]) 与条件中的图像哈希值匹配时执行操作。

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

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

kms:: PCRRecipientAttestation <PCR_ID>

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

kms:RecipientAttestation:PCR

字符串

单值

Decrypt

GenerateDataKey

GenerateRandom

密钥策略和 IAM 策略

kms:RecipientAttestation:PCR<PCR_ID> 条件键仅在请求中的签名证明文档的平台配置注册 (PCR) 与条件键中的 PCR 匹配时允许来自 enclave 的 kms-decryptkms-generate-data-keykms-generate-random 请求。此条件键仅在您从 enclave 中调用 Amazon Nitro Enclaves 开发工具包 API 时有效。

注意

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

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

"kms:RecipientAttestation:PCRPCR_ID": "PCR_value"

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

kms:RecipientAttestation:PCR1: "0x1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef8abcdef9abcdef8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef0abcde"

以下示例密钥策略语句允许 data-processing 角色将 KMS 密钥用于 kms-decrypt (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" } } }