更新时间:2024-08-12 GMT+08:00
分享

工作流程

相关角色

在这个QingTian Enclave使用场景里,涉及到了以下几个角色:

  • 安全员:拥有对机密数据和华为云KMS密钥的控制权限。作为华为云账号的所有者,他具有最高权限,例如他可以创建IAM用户并为其设置最小权限,创建加密密钥和加密敏感数据等。在本场景中,我们还假设安全员同时承担了Enclave镜像构建的工作,他获得预期的Enclave镜像度量值PCR0和PCR8,并在IAM授权策略中使用这些度量值作为条件键。
  • 父虚拟机管理员:作为被安全员授权的运维人员,他拥有父虚拟机实例的访问权限,并能管理QingTian Enclave实例的生命周期。他使用安全员构建好的QingTian Enclave镜像文件来启动QingTian Enclave实例。
  • QingTian Enclave应用程序开发人员:开发在QingTian Enclave中运行的应用程序。在该案例中,该应用程序需要从华为OBS服务的Bucket1获取密文对象,然后调用kms-decrypt接口对密文进行解密,进行数据处理后,最后将结果输出到Bucket2。

数据和环境准备

接下来,我们将概述一下关于数据加密、证明设置和QingTian Enclave实例创建的相关流程。

  1. 安全员在华为云数据加密服务的密钥管理子服务中创建KMS密钥。
  2. 安全员使用KMS密钥加密一段敏感数据(例如银行卡信息)。详细信息可以参考华为云数据加密服务帮助文档中API参考章节中的应用示例:加解密小量数据
  3. 安全员使用obsutil命令行工具将加密后的密文上传到华为云对象存储服务(OBS)的一个桶中。详细信息可以参考华为云对象存储服务帮助文档工具指南章节: 上传对象
  4. 安全员编写并打包QingTian Enclave开发程序:制作Docker镜像,然后使用qt命令行工具将Docker镜像转换成QingTian Enclave镜像文件。可以参考QingTian Enclave镜像文件制作。并记录创建QingTian Enclave镜像文件时生成的PCR0和PCR8。
  5. 安全员将PCR0和PCR8设置为IAM访问控制策略的条件键(控制kms-decrypt API)。
  6. 父虚拟机管理员:启动父虚拟机并设置启动qt-proxy服务,然后使用QingTian Enclave镜像启动QingTian Enclave。

远程证明和数据解密

下面我们将概述在QingTian Enclave应用程序的执行流程。

  1. 通过qt-proxy服务,QingTian Enclave应用程序将密文从华为OBS桶中下载到QingTian Enclave实例中。
  2. Enclave应用程序产生一对RSA公私钥(pubKey, priKey),用于建立与KMS服务之间的端到端数据加密(它并不需要依赖HTTPS)。然后使用QingTian Enclave SDK调用KMS提供的支持AttestationDocument(证明文档)作为入参的kms-decrypt API。证明文档中包括QingTian Enclave的PCR值和应用程序产生的加密公钥(pubKey)。
  3. 华为云KMS接收并验证证明文档是否由QingTianAttestation PKI签发。在kms-decrypt API的访问控制检查中,会将证明文档中的PCR值与IAM授权策略中的PCR值进行比较,如果匹配成功则允许调用该接口,否则拒绝访问。
  4. KMS将数据解密后,然后用AttestationDocument提供的pubKey对数据进行重新加密后发送回QingTian Enclave应用程序。QingTian Enclave应用程序使用priKey对接收到的密文数据进行解密。

相关文档