Confidential Space 提供了一个隔离的环境,可对敏感数据执行操作,同时数据所有者可以保留数据的机密性。敏感数据可能包括个人身份信息 (PII)、受保护健康信息 (PHI)、知识产权、加密密钥、机器学习 (ML) 模型等。
您可以使用 Confidential Space 处理仅对其原始所有者和共同商定的工作负载可见的敏感数据。或者,您也可以使用 Confidential Space 为最终客户提供更强大的数据隐私保护,因为 Confidential Space 环境的运营者或所有者无法访问正在处理的数据。
Confidential Space 使用可信执行环境 (TEE),可用于仅将 Secret 发布给已授权的工作负载。证明流程和安全强化型操作系统映像有助于保护工作负载以及工作负载处理的数据免遭操作员的侵害。
如需详细了解 Confidential Space 的用例和安全模型,请参阅 Confidential Space 安全概览。
Confidential Space 组件
Confidential Space 系统有三个核心组件:
工作负载:包含处理受保护资源的代码的容器化映像。此映像在 Confidential Space 映像上运行,此映像是一个基于 Container-Optimized OS 的安全强化型操作系统。该服务器端容器又在 AMD SEV 或 Intel TDX(预览版)机密虚拟机上运行,而机密虚拟机是一个基于云的 TEE,可提供硬件隔离和远程证明功能。工作负载通常与受保护的资源位于不同的项目中。
证明服务:远程证明验证程序,以 OpenID Connect (OIDC) 令牌的形式返回证明证据。这些令牌包含工作负载的标识特性。证明服务在运行工作负载的同一区域中运行。
受保护资源:受身份验证和授权系统保护的受管资源。如果资源位于 Google Cloud中,则可以是 Cloud Key Management Service (Cloud KMS) 密钥或 Cloud Storage 存储分区等受管式云资源。如果资源不在 Google Cloud中(例如,位于本地环境或其他云中),则可以是任何资源。
Confidential Space 角色
Confidential Space 系统中的组件由具有以下三个不同角色的人员管理:
数据协作者:拥有工作负载所操作的受保护资源的人员或组织。数据协作者可以访问自己的数据、对该数据设置权限,并且根据工作负载的输出,可能会访问基于该数据的结果。
数据协作者无法访问彼此的数据或修改工作负载代码。
如需详细了解数据协作者的角色,请参阅创建机密资源并授予访问权限。
工作负载作者:创建访问和处理机密数据的应用的人员。他们使用 Docker 将应用添加到容器化映像,并将映像上传到 Artifact Registry。
工作负载作者无权访问数据或结果,也无法控制对这些数据或结果的访问。
如需详细了解工作负载作者的角色,请参阅创建和自定义工作负载。
工作负载操作员:运行工作负载的人员。工作负载操作员通常对其运行工作负载的项目拥有完全管理权限。例如,他们可以管理项目中的资源(例如 Compute Engine 实例、磁盘和网络规则),并且可以与处理这些资源的任何 Google Cloud API 进行交互。
工作负载运维人员无权访问这些数据,也无法控制对这些数据的访问。他们无法影响或修改工作负载代码或执行环境。
如需详细了解工作负载运维者的角色,请参阅部署工作负载。
一个人可以承担其中一个或多个角色。为了实现最高级别的安全性,Confidential Space 支持信任模型,其中数据协作者、工作负载作者和工作负载操作员是独立的相互不信任的各方。所有角色都必须相互协作,才能取得所需的结果。
Confidential Space 流程示例
Confidential Space 利用多项 Google Cloud 服务,帮助对私密信息进行机密操作。通常,设置 Confidential Space 的过程可能类似于以下过程:
多个数据协作者会将加密的秘密数据存储在各自隔离的 Google Cloud 项目中,这些项目通常位于不同的组织中。他们希望比较和处理这些数据,但不向对方或外部方披露这些数据。加密数据可能位于 Cloud Storage、BigQuery 或其他服务中。
数据协作者会创建模拟的非机密数据,供测试工作负载操作。这些数据可能是不同的文件,也可能位于其他位置(例如单独的 Cloud Storage 存储桶)。
数据协作者各自在其项目中创建一个服务账号,该服务账号可以解密其数据。它们会将这些服务账号关联到工作负载身份池 (WIP)。之后,如果工作负载操作者的单独隔离项目中运行的工作负载通过了特定条件,则可以使用该 WIP 来冒充解密服务账号。
工作负载作者编写代码来处理机密数据。在与数据协作者和工作负载操作员分开的项目中,他们使用 Docker 构建容器化映像,并将其上传到 Artifact Registry。
工作负载运维者在隔离的项目中创建一个服务账号,该账号对数据协作者的加密机密数据的存储位置具有读取权限,对某个位置(例如 Cloud Storage 存储桶)具有写入权限,以输出对解密数据执行操作的结果。稍后,此服务账号会附加到运行工作负载的机密虚拟机。
数据协作者将 Confidential Space 证明验证程序作为提供方添加到其工作负载身份池。它们还会向提供程序添加属性条件,工作负载必须通过这些条件才能访问和解密其数据。这些条件包括验证工作负载虚拟机的证明、工作负载的映像摘要、是否已设置环境变量等。如需了解详情,请参阅证明断言。
通过在工作负载操作员的项目中启动机密虚拟机,对非机密数据进行工作负载测试。该虚拟机基于调试版本的 Confidential Space 映像,该映像会加载容器化工作负载。
在虚拟机的证明经过验证且工作负载通过数据协作者的条件后,系统会允许关联到虚拟机的服务账号冒充解密服务账号。数据协作者服务账号会将解密后的数据传递给工作负载服务账号,后者会处理这些数据,然后输出结果。
监控和调试完成后,系统会更新工作负载以供生产环境使用。数据协作者会根据需要更新和进一步锁定其工作负载身份提供方,并且可能会选择先在非机密数据上测试生产工作负载。
所有相关方都签署了生产工作负载,此时就可以开始处理机密数据了。
使用要求
Confidential Space 需要机密虚拟机才能正常运行。机密虚拟机实例必须使用 AMD SEV 或 Intel TDX(预览版)作为机密计算技术。请参阅受支持的配置,了解硬件配置选项以及可以在哪些位置创建机密虚拟机实例。