Confidential VM 執行個體的認證程序可提高信心,確保執行個體合法且運作狀態正常。這是重要工具,可驗證工作負載是否在受信任的執行環境 (TEE) 中執行。
以 CPU 為基礎的認證
驗證報告是 VM 在 TEE 中執行的證據。這些憑證是由 Confidential VM 執行個體產生,並根據所用的機密運算技術,由軟體式 vTPM 或專用的硬體式受信任安全模組 (TSM) 簽署。認證報告包含與系統啟動載入程式活動、硬體設定、韌體設定,以及其他開機時記錄的事件相關的測量結果,有助於驗證 Confidential VM 執行個體的狀態和身分。
可要求的驗證報告類型取決於 Confidential VM 執行個體使用的機密運算技術。
| 簽署來源 | 類型 | 報表涵蓋範圍 | 機密運算技術 | ||
|---|---|---|---|---|---|
| SEV | SEV-SNP | Intel TDX | |||
| Google 管理的 vTPM | 軟體式 vTPM | 系統啟動載入程式活動、核心完整性 | |||
| AMD 安全處理器1 | 以硬體為基礎的 TSM | 硬體和韌體環境 | |||
| Intel TDX 模組 | 以硬體為基礎的 TSM | 硬體和韌體環境2 | |||
1. AMD 安全處理器是共用資源,適用於實體伺服器上的所有主機。主機可以限制訪客存取安全處理器,且隨時可以更新安全處理器的韌體 (視為主機事件)。
2. TDX Confidential VM 執行個體的初始啟動元件 (韌體) 會測量到信任網域的測量值 (MRTD),而其餘的啟動鏈則會測量到執行階段測量暫存器 (RTMR),所有測量值都會以硬體為基礎。使用者可以透過使用者空間測量值,擴充 RTMR[3] 暫存器。
索取驗證報告
您可以使用下列工具,向 Google 管理的 vTPM、AMD 的安全處理器和 Intel 的 TDX 模組索取驗證報告:
vTPM 認證事件記錄中的 GceNonHostInfo 事件會顯示目前使用的機密運算技術。如果使用 AMD SEV-SNP,Go-TPM 工具可以向 AMD Secure Processor 要求認證報告;如果使用 Intel TDX,則可以向 Intel TDX 模組要求認證報告。
如果只需要硬體驗證報告,可以使用下列工具將密碼編譯挑戰傳送至 TSM:
如果是 AMD SEV-SNP,請使用 SEV Guest。 版本晶片認可金鑰 (VCEK) 憑證會快取在 VM 上,而不是直接從 AMD 的金鑰發布系統 (KDS) 要求。
如為 Intel TDX,請使用 TDX Guest。
Ubuntu 上的 Intel TDX
如果是核心 1016 以上版本的 Ubuntu 映像檔,tdx_guest 模組位於 linux-modules-extra 套件中。
如要安裝 linux-modules-extra 套件,請執行下列指令:
sudo apt-get install linux-modules-extra-gcp
如果在安裝 linux-modules-extra-gcp 時遇到問題,可以執行下列指令更新核心:
sudo apt-get upgrade
您必須重新啟動或手動載入模組,變更才會生效。如要手動載入模組,請執行下列指令:
sudo modprobe tdx_guest
使用 Google Cloud Attestation 驗證認證報告
如果您的信任模型允許,您可以改用 Google Cloud Attestation,不必自行編寫及執行驗證驗證器。這包括使用 Go-TPM 工具,從 Confidential VM 執行個體的 vTPM 擷取認證引號,並傳送至 Google Cloud Attestation 進行驗證。如果引號通過驗證,Google Cloud Attestation 會傳回包含 VM 資訊的權杖,然後您可以與自己的政策進行比較,確認是否應信任 VM。
Google Cloud Attestation 可搭配使用下列機密運算技術的機密 VM 執行個體:
AMD SEV
C3 機型上的 Intel TDX
如需使用 Google Cloud Attestation 的端對端範例,請參閱「機密虛擬機器的 vTPM 遠端認證」程式碼實驗室。
以 GPU 為基礎的認證
GPU 認證包括驗證 GPU 驅動程式、GPU 裝置或兩者。
已知問題
GPU 驗證可能會失敗,並在索引 9 處回報不相符的測量記錄。Google 和 NVIDIA 正在設法解決這個問題。
如要解決這個問題,請完整停止並重新啟動 Confidential VM。從 VM 的訪客 OS 重新啟動 VM 無法修正問題。
GPU 驅動程式認證
為確保驗證程序順利進行,請在建立機密 VM 執行個體時啟用安全啟動。
安全啟動功能只允許載入經發行版本簽署的 GPU 驅動程式。這項驗證程序可確認 GPU 驅動程式是由 NVIDIA 官方發布及提供。官方驅動程式非常重要,因為它會與 GPU 裝置建立安全的安全性通訊協定和資料模型 (SPDM) 工作階段,並做為 NVIDIA GPU 裝置驗證的信任根。
NVIDIA GPU 裝置驗證
除了 GPU 驅動程式驗證外,您還可以進一步驗證 NVIDIA GPU 裝置。NVIDIA GPU 裝置認證會驗證 GPU 上執行的視訊 BIOS (VBIOS)。這項工具可協助您找出 NVIDIA 軟體版本,並評估潛在安全漏洞。
如要執行 NVIDIA GPU 裝置認證,請安裝go-nvattest-tools
依附元件,並從 google/go-nvattest-tools 建構 nvattest 工具:
安裝建構依附元件:
sudo apt-get update && sudo apt-get install -y \ git gcc pkg-config libxml2-dev curl下載並安裝 Go:
GO_VERSION="1.25.0" curl -fsSL \ "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" \ -o go.tar.gz sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go.tar.gz rm go.tar.gz export PATH=/usr/local/go/bin:$PATH複製存放區並編譯
nvattest二進位檔:git clone https://github.com/google/go-nvattest-tools.git cd go-nvattest-tools go build -o nvattest ./cmd/nvattest
本機 GPU 裝置驗證
透過本機 GPU 裝置認證,您可以在 VM 執行個體上直接執行認證程序,並在本機查看結果,驗證 GPU 的完整性。
如要執行即時本機 GPU 裝置驗證,請直接在 Confidential VM 執行個體上執行 nvattest 工具:
sudo ./nvattest attest --device=gpu
你也可以選擇將證據收集與驗證程序分開:
產生 32 位元組的十六進位 Nonce,並收集認證證據:
NONCE=$(openssl rand -hex 32) sudo ./nvattest collect-evidence \ --device=gpu \ --nonce="${NONCE}" \ --evidence_file=gpu_evidence.json在本機驗證收集到的證據:
./nvattest attest \ --device=gpu \ --nonce="${NONCE}" \ --evidence_file=gpu_evidence.json