如需确定 Intel TDX 机密虚拟机实例是否在 Google Cloud上运行,您需要确定其provenance。确定来源涉及以下检查:
引用验证和质询绑定:使用嵌入式 Intel 根证书验证 Intel TDX 引用的真实性,并可选择根据引用
REPORT_DATA字段中的预期质询验证新鲜度。主机来源验证:从引用的嵌入式 PCK 证书中提取平台配置 ID (PPID)。使用 PPID 从 Cloud Storage 存储桶中提取主机注册 JSON 文档,以验证来源。
实例来源验证:使用保密虚拟机的项目编号、可用区和实例 ID (PZID) 计算 SHA-384 摘要,然后验证该摘要是否与 Intel TDX 引用中的
MR_OWNER字段值匹配。
远程验证来源
我们建议使用 gceprovenance 工具来确定 Intel TDX 机器的来源。该工具可自动提取所需的值并获取来源文档。
如需使用 gceprovenance 远程验证来源,请完成以下说明:
将
go-tdx-guestGitHub 代码库克隆到远程验证器:git clone https://github.com/google/go-tdx-guest.git根据您的客户机操作系统,您可能需要安装一些 Go 依赖项才能构建
go-tdx-guest中的工具。具体操作方法因操作系统而异。例如,以下命令会在 Ubuntu 上安装必要的依赖项:sudo apt update sudo apt install golang-go build-essential构建
gceprovenance工具:go build -C go-tdx-guest/tools/gceprovenance .生成一个 64 字节的质询,Intel TDX 机密虚拟机实例必须将其绑定到其引用:
head -c 64 /dev/urandom > challenge.bin将质询文件发送到要验证的 Intel TDX 机密虚拟机实例。
在 Intel TDX 机密虚拟机实例上,将质询文件作为输入 (
inblob) 传递给/sys/kernel/config/tsm/report/处的 Linux ConfigFS:sudo mkdir -p /sys/kernel/config/tsm/report/report0 sudo sh -c 'cat challenge.bin > /sys/kernel/config/tsm/report/report0/inblob'然后,系统会将该质询写入引用的
REPORT_DATA字段中。从生成的
outblob文件中检索原始引用字节,并清理report0目录:sudo cat /sys/kernel/config/tsm/report/report0/outblob > quote.bin sudo rmdir /sys/kernel/config/tsm/report/report0查询本地元数据服务器,以获取机密虚拟机实例的实例 ID、项目编号和可用区:
PROJECT_NUMBER=$(curl -s "http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id" -H "Metadata-Flavor: Google") INSTANCE_ID=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/id" -H "Metadata-Flavor: Google") ZONE_PATH=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/zone" -H "Metadata-Flavor: Google") ZONE=$(basename "$ZONE_PATH")将引用二进制文件 (
quote.bin)、项目编号、实例 ID 和可用区发送到远程验证器。在远程验证器上,将您的质询转换为 128 字符的十六进制字符串,然后将其传递给
gceprovenance。然后,该工具会验证引用的签名和来源绑定:CHALLENGE_HEX=$(hexdump -v -e '/1 "%02x"' challenge.bin) ./go-tdx-guest/tools/gceprovenance/gceprovenance verify \ -quote PATH_TO_QUOTE \ -instance projects/PROJECT_NUMBER/zones/ZONE/instances/INSTANCE_ID \ -challenge $CHALLENGE_HEX提供以下信息:
PATH_TO_QUOTE:所提供报价文件的路径。PROJECT_NUMBER:提供的项目编号。ZONE:所提供的可用区。INSTANCE_ID:所提供的机密虚拟机实例 ID。
成功的响应类似于以下内容:
GCE TDX provenance verification: OK Instance Zone: ZONE Project: PROJECT_NUMBER Instance ID: INSTANCE_ID Checks Quote verification: OK REPORT_DATA challenge: OK Host registry document: found PZID binding: OK PPID: PPID Quote: tdx_quote.bin Host registry: host_registry.json
如需了解其他 gceprovenance 命令,请参阅 GitHub 代码库。