本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon KMSAmazon Nitro Enclaves 的条件密钥
Amazon Nitro Enclaves 是 Amazon 的一项 EC2 功能,它允许您创建称为飞地的隔离计算环境,以保护和处理高度敏感的数据。 Amazon KMS 提供条件键来支持 Amazon Nitro Enclaves。这些条件密钥仅对请求获得 Nitro Enclave 有效。 Amazon KMS
当您使用来自安全区的签名认证文档调用 Decrypt DeriveSharedSecretGenerateDataKeyGenerateDataKeyPair、、、或 GenerateRandomAPI 操作时,这些操作会使用认证文档中的公钥对响应中的明文 APIs 进行加密,并返回密文而不是纯文本。此加密文字只能使用 Enclave 中的私有密钥进行解密。有关更多信息,请参阅 Amazon Nitro Enclaves 的加密证明。
注意
如果您在创建密钥时未提供密钥策略,请为您 Amazon 创建一个 Amazon KMS 密钥策略。此默认密钥策略授予拥有 KMS 密钥的人对密钥的完全访问权限,并允许账户使用 IAM 策略来允许访问密钥。 Amazon Web Services 账户 此政策允许所有操作,例如解密。 Amazon
建议将的委托人应用最低权限许可于您的 KMS 密钥策略。您也可以通过修改的 KMS 密钥策略操作kms:*
来限制访问权限NotAction:kms:Decrypt
。
通过以下条件键,您可以根据签名证明文档的内容限制这些操作的权限。在允许操作之前,请将安全区中的证明文档与这些条件键中的值进行 Amazon KMS 比较。 Amazon KMS
kms:RecipientAttestation: ImageSha 384
Amazon KMS 条件键 | 条件类型 | 值类型 | API 操作 | 策略类型 |
---|---|---|---|---|
|
字符串 |
单值 |
|
密钥策略和 IAM policy |
当请求中的已签名证明文档中的映像摘要与条件键中的值相匹配时,kms:RecipientAttestation:ImageSha384
条件键使用 KMS 密钥控制对 Decrypt
、DeriveSharedSecret
、GenerateDataKey
、GenerateDataKeyPair
和 GenerateRandom
的访问。ImageSha384
值对应于证明文档中的 PCR0。仅当请求中的Recipient
参数为 Amazon Nitro 飞地指定了已签名的认证文档时,此条件密钥才有效。
此值也包含在请求获得 Nitro 飞地CloudTrail Amazon KMS 的事件中。
例如,以下密钥策略声明允许该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 操作 | 策略类型 |
---|---|---|---|---|
|
字符串 |
单值 |
|
密钥策略和 IAM policy |
只有当平台配置从请求中的已签名证明文档中注册的 (PCRs) GenerateRandom
与kms:RecipientAttestation:PCR<PCR_ID>
条件密钥中的匹配时,条件密钥才使用KMS密钥控制对、、、和 PCRs 的访问。Decrypt
DeriveSharedSecret
GenerateDataKey
GenerateDataKeyPair
仅当请求中的Recipient
参数指定来自 Amazon Nitro 飞地的已签名认证文档时,此条件密钥才有效。
此值也包含在代表对 Nitro 飞地 Amazon KMS 的请求CloudTrail的事件中。
要指定 PCR 值,请使用以下格式。将 PCR ID 连接到条件键名称。您可以指定用于识别六个安全区测量值之一的 PCR ID,也可以指定为特定用例定义的自定义 PCR ID。PCR 值必须是最多 96 个字节的小写十六进制字符串。
"kms:RecipientAttestation:PCR
PCR_ID
": "PCR_value
"
例如,以下条件键为指定了一个特定的值 PCR1,该值对应于用于安全区和引导过程的内核哈希值。
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" } } }