認證斷言

如要進一步瞭解如何使用驗證聲明,請參閱「建立驗證政策」。

下表詳細列出可用於建構驗證政策的判斷提示。政策可驗證 Confidential Space 映像檔、工作負載容器和 VM 執行個體所做的聲明。

圖片聲明

斷言 類型 說明

assertion.dbgstat

互動對象:

Enumeration

驗證 Confidential Space 映像檔是否為偵錯或正式版。

有效值如下:

  • enable:確認使用的是偵錯圖片。
  • disabled-since-boot:確認使用的是正式版圖片。
範例

下列程式碼會驗證是否使用 Confidential Space 映像檔的偵錯版本:

assertion.dbgstat == "enable"

下列程式碼會驗證是否使用 Confidential Space 映像檔的正式版:

assertion.dbgstat == "disabled-since-boot"
assertion.submods.confidential_space.support_attributes 字串陣列

驗證 TEE 的安全版本是否為正式版 Confidential Space 映像檔。偵錯 Confidential Space 映像檔未設定支援屬性。

下表說明正式版 Confidential Space 映像檔的支援屬性。

支援屬性 說明

LATEST

LATEST 圖片也支援下列屬性:

  • STABLE
  • USABLE

圖片生命週期:約一個月。完成後,系統會移除 LATEST 支援屬性。

這是最新版的 Confidential Space 映像檔,且支援並監控安全性弱點。

如果是長時間執行的工作負載,建議您不要在認證政策中指定 LATEST。這是因為 Confidential Space 映像檔可能會在工作負載執行期間更新,導致您使用的 Confidential Space 映像檔不再是 LATEST,並在下次重新整理 Confidential Space 預設權杖時,導致工作負載無法通過驗證。

STABLE

STABLE 圖片也支援下列屬性:

  • USABLE

圖片生命週期:約六個月。2027 年 4 月 1 日起,圖片生命週期到期後,系統會移除 STABLE 支援屬性。

系統支援含有 STABLE 屬性的圖片,並會在六個月內監控安全漏洞。建議您根據 STABLE 屬性編寫認證政策。

在極少數情況下,STABLE 屬性可能會在正常的六個月支援期限內移除,例如發現重大安全漏洞時。

USABLE

只有 USABLE 屬性的圖片仍可使用,但會視為已淘汰。系統不支援已淘汰的圖片,且圖片已超過六個月未更新。 您必須自行承擔使用風險。

USABLE 圖片具有 deprecated.deprecated 屬性。這個值是預計淘汰圖片的時間戳記。您可以使用 gcloud compute images describe 指令或 images.get REST 方法,查看圖片的屬性。例如:

gcloud compute images describe confidential-space-240800 \
    --format=json \
    --project=confidential-space-images
EXPERIMENTAL

只有這項屬性的圖片會使用預覽功能。EXPERIMENTAL 映像檔僅供測試,絕不應在正式環境中使用。

EXPERIMENTAL 圖片絕不會有 LATEST、STABLE 或 USABLE 屬性。

建議你將 Confidential Space 映像檔保持在最新狀態。如要瞭解如何更新 Confidential Space 映像檔,請參閱「 更新 Confidential Space 映像檔」。

範例

下列程式碼會驗證是否使用穩定版 Confidential Space 映像檔:

"STABLE" in assertion.submods.confidential_space.support_attributes
assertion.swname Enumeration

驗證認證實體執行的軟體。這個值一律為 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 (RSASSA-PSS,採用 SHA-256 摘要)
    • RSASSA_PKCS1V15_SHA256 (RSASSA-PKCS1 v1_5 with a SHA-256 digest)
    • 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

互動對象:

Enumeration

驗證容器啟動器的重新啟動政策,適用於工作負載停止時。

有效值如下:

  • Never (預設)
  • Always
  • OnFailure
範例
assertion.submods.container.restart_policy == "Never"

VM 斷言

斷言 類型 說明

assertion.google_service_accounts

互動對象:

字串陣列

確認指定服務帳戶已連線至執行工作負載的 VM,或已使用 tee-impersonate-service-accounts 列在 VM 中繼資料中。

範例
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 字串

驗證 VM 執行個體 ID。

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

驗證 VM 執行個體的名稱。

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

確認 VM 執行的 Google Cloud 專案是否具有指定的專案 ID。

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

驗證 VM 是否在具有指定專案編號的 Google Cloud 專案中執行。

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

assertion.submods.gce.zone

互動對象:

  • 工作負載運算子: --zone 值。
字串

確認 VM 是否在指定可用區中執行。

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

assertion.submods.nvidia_gpu.cc_feature

互動對象:

Enumeration

驗證 NVIDIA GPU 支援的機密運算功能。Confidential Space 僅支援單一 GPU 直通 (SPT) 模式,因此值一律為 SPT。

如要進一步瞭解 NVIDIA 機密運算支援服務,請參閱「 NVIDIA Trusted Computing Solutions (PDF)」。

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

assertion.submods.nvidia_gpu.cc_mode

互動對象:

Enumeration

驗證 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)