证明断言

如需详细了解如何使用证明断言,请参阅创建证明政策

下表详细介绍了构建证明政策的可用断言。政策可以验证 Confidential Space 映像、工作负载容器和虚拟机实例做出的断言。

图片断言

断言 类型 说明

assertion.dbgstat

互动对象

枚举

验证 Confidential Space 映像是调试版本还是生产版本。

有效值如下:

  • enable:检查是否使用了调试映像。
  • disabled-since-boot:检查是否正在使用生产映像。
示例

以下代码验证是否使用了调试版本的 Confidential Space 映像:

assertion.dbgstat == "enable"

以下代码验证是否使用了生产版本的 Confidential Space 映像:

assertion.dbgstat == "disabled-since-boot"
assertion.submods.confidential_space.support_attributes 字符串数组

使用在机密虚拟机实例上运行的生产 Confidential Space 映像的支持属性,验证该映像的安全版本。调试 Confidential Space 映像没有设置支持特性。

以下是有效的支持属性:

  • LATEST:这是最新版本的映像,受支持。LATEST 映像同时也是 STABLEUSABLE
  • STABLE:此版本的映像受支持,并且我们会监控其漏洞情况。STABLE 映像同时也是 USABLE
  • USABLE:仅包含此特性的映像已不再受支持,并且我们不会再监控其漏洞情况。使用时需自行承担风险。
  • EXPERIMENTAL:仅具有此属性的图片会使用预览功能。此渠道仅用于测试目的,绝不应在生产环境中使用。EXPERIMENTAL 图片永远不会具有 LATESTSTABLEUSABLE 属性。
示例

以下代码验证是否使用了稳定版本的 Confidential Space 映像:

"STABLE" in assertion.submods.confidential_space.support_attributes
assertion.swname 枚举

验证在证明实体上运行的软件。值始终为 CONFIDENTIAL_SPACE

示例
assertion.swname == "CONFIDENTIAL_SPACE"
assertion.swversion 字符串数组

验证 Confidential Space 映像的软件版本。建议使用 assertion.submods.confidential_space.support_attributes 来定位映像的最新版本。

示例
int(assertion.swversion[0]) == 230103

容器断言

断言 类型 说明

assertion.submods.container.cmd_override

互动对象

字符串数组

验证工作负载映像中使用的 CMD 命令和参数。

示例

以下代码验证了工作负载映像的 CMD 是否未被覆盖:

size(assertion.submods.container.cmd_override) == 0

以下代码验证 program 是 CMD 覆盖中的唯一内容:

assertion.submods.container.cmd_override == ['program']

assertion.submods.container.env

互动对象

JSON 对象

验证环境变量及其值是否已明确传递给容器。

示例

以下代码验证了环境变量 example-env-1 是否设置为 value-1,以及 example-env-2 是否设置为 value-2

assertion.submods.container.env == {"example-env-1": "value-1", "example-env-2": "value-2"}

assertion.submods.container.env_override

互动对象

字符串

验证工作负载运算符是否覆盖了容器中的环境变量。

示例

以下代码用于验证工作负载运算符是否替换了 example 环境变量:

!has(assertion.submods.container.env_override.example)

以下代码用于验证工作负载运算符是否未覆盖任何环境变量:

size(assertion.submods.container.env_override) == 0
assertion.submods.container.image_digest 字符串

验证工作负载容器的映像摘要。指定此条件可让多方就允许访问其数据的授权工作负载达成共识。

示例
assertion.submods.container.image_digest == "sha256:837ccb607e312b170fac7383d7ccfd61fa5072793f19a25e75fbacb56539b86b"
assertion.submods.container.image_id 字符串

验证工作负载容器的映像 ID。

示例
assertion.submods.container.image_id == "sha256:652a44b0e911271ba07cf2915cd700fdfa50abd62a98f87a57fdebc59843d93f"

assertion.submods.container.image_reference

互动对象

字符串

验证在 Confidential Space 映像上运行的工作负载容器的位置。

示例
assertion.submods.container.image_reference == "us-docker.pkg.dev/PROJECT_ID/WORKLOAD_CONTAINER:latest"

assertion.submods.container.image_signatures

互动对象

JSON 对象

验证映像是否具有特定签名或是否由公钥和签名算法签名。指定此条件可让多方就允许访问其数据的授权工作负载达成共识。

断言可以包含以下元素:

  • key_id:公钥的十六进制指纹。如需获取指纹,您可以运行以下命令:

    openssl pkey -pubin -in public_key.pem -outform DER | openssl sha256

    其中,public_key.pem 是 PEM 格式的公钥。

  • signature:与签名容器关联且遵循 简单签名格式的载荷的签名。
  • signature_algorithm:用于对密钥进行签名的算法。以下项之一:

    • RSASSA_PSS_SHA256(具有 SHA-256 摘要的 RSASSA-PSS)
    • RSASSA_PKCS1V15_SHA256(具有 SHA-256 摘要的 RSASSA-PKCS1 v1_5)
    • ECDSA_P256_SHA256(具有 SHA-256 摘要的 P-256 曲线上的 ECDSA)
示例
['ECDSA_P256_SHA256:PUBLIC_KEY_FINGERPRINT'].exists(fingerprint, fingerprint in assertion.submods.container.image_signatures.map(sig, sig.signature_algorithm+':'+sig.key_id))

assertion.submods.container.restart_policy

互动对象

枚举

验证工作负载停止时容器启动器的重启政策。

有效值如下:

  • Never(默认)
  • Always
  • OnFailure
示例
assertion.submods.container.restart_policy == "Never"

虚拟机断言

断言 类型 说明

assertion.google_service_accounts

互动对象

字符串数组

验证指定的服务账号是否已连接到运行工作负载的虚拟机,或者是否已使用虚拟机元数据中的 tee-impersonate-service-accounts 列出。

示例
workload-service-account@my-project.iam.gserviceaccount.com in assertion.google_service_accounts
assertion.hwmodel 字符串

验证底层机密计算技术。支持的平台如下:

  • GCP_AMD_SEV
  • INTEL_TDX
示例
assertion.hwmodel == "GCP_AMD_SEV"

assertion.submods.confidential_space.monitoring_enabled

互动对象

布尔值

验证证明实体上的监控状态。

示例
assertion.submods.confidential_space.monitoring_enabled.memory == true
assertion.submods.gce.instance_id 字符串

验证虚拟机实例 ID。

示例
assertion.submods.gce.instance_id == "0000000000000000000"
assertion.submods.gce.instance_name 字符串

验证虚拟机实例的名称。

示例
assertion.submods.gce.instance_name == "workload-vm"
assertion.submods.gce.project_id 字符串

验证虚拟机是否正在运行具有指定项目 ID 的 Google Cloud 项目。

示例
assertion.submods.gce.project_id == "project-id"
assertion.submods.gce.project_number 字符串

验证虚拟机是否在具有指定项目编号的 Google Cloud 项目中运行。

示例
assertion.submods.gce.project_number == "00000000000"

assertion.submods.gce.zone

互动对象

  • 工作负载运算符 --zone 值。
字符串

验证虚拟机是否正在指定可用区中运行。

示例
assertion.submods.gce.zone == "us-central1-a"

assertion.submods.nvidia_gpu.cc_feature

互动对象

枚举

验证 NVIDIA GPU 支持的机密计算功能。在 Confidential Space 中,仅支持单 GPU 直通 (SPT) 模式,因此该值始终为 SPT

如需详细了解 NVIDIA 机密计算支持,请参阅 NVIDIA 可信计算解决方案 (PDF)

示例
assertion.submods.nvidia_gpu.cc_feature == "SPT"

assertion.submods.nvidia_gpu.cc_mode

互动对象

枚举

验证 NVIDIA 机密计算驱动程序的状态。 有效值如下:

  • OFF:未启用任何 NVIDIA 机密计算功能。
  • ON:NVIDIA H100 硬件、固件和软件已完全激活机密计算功能。
  • DEVTOOLS:GPU 处于部分保密计算模式,该模式与 ON 模式的工作流程相匹配,但会停用安全保护措施。
示例
assertion.submods.nvidia_gpu.cc_mode == "ON"

assertion.submods.nvidia_gpu.gpus

互动对象

对象数组

验证每个经过证明的 NVIDIA GPU 的声明。Confidential Space 仅支持单个 GPU 声明。

gpus 对象类似于以下内容:

{
  "hwmodel": "GCP_NVIDIA_H100",
  "ueid": "490457405999046854973671575630853621547794591064",
  "l4_serial_number": "1216669666319372030078",
  "driver_version": "570.00",
  "vbios_version": "96.00.9F.00.01"
}
示例

以下代码用于验证第一个 GPU 硬件模型是否为在 Google Cloud上运行的 NVIDIA H100:

assertion.submods.nvidia_gpu.gpus[0].hwmodel == "GCP_NVIDIA_H100"

以下代码验证了证明声明是否包含 GPU 相关声明:

has(assertion.submods.nvidia_gpu.gpus)