建立自訂的受防護映像檔

本主題說明如何準備磁碟、產生安全性憑證,以及啟用任何必要的作業系統 (OS) 功能,以建立自訂的遮罩映像檔。

根據預設,受防護的 VM 支援 Container-Optimized OS、各種 Linux 發行版,以及多個版本的 Windows Server。不過,如果您需要為應用程式建立自訂映像檔,仍可利用遮罩式 VM。

準備磁碟

受防護的 VM 會使用符合 統一可延伸韌體介面 (UEFI) 標準的韌體,支援安全啟動等功能。受防護的 VM 需要 GUID 分區表 (GPT) 配置,不支援主開機記錄 (MBR)。

磁碟至少須有兩個分區:

  • EFI 系統分割區 (ESP):這個分割區只要 100 兆位元組 (MB) 就足夠,這只是建議。您可以視需要建立較大的分割區。ESP 唯一的要求是,應使用檔案分配表 (FAT) 檔案系統格式化。
  • 作業系統分區:磁碟的其餘部分。這個分割區包含啟動作業系統 (Linux 或 Windows)。這個分區的大小沒有限制。

您可以視需要建立更多資料分割區。

將 OS 複製到 OS 分區

磁碟格式正確且已正確劃分磁碟區後,請將 OS 檔案複製到 OS 磁碟區。作業系統具有啟動載入程式,必須位於 ESP 上的有效路徑,如 UEFI 規格\EFI\Boot\bootx64.efi所述。請注意,您可能需要將 OS 啟動載入器複製到指定位置。

針對 Windows,除了 Windows 需要的其他動作 (例如複製 BCD 儲存庫) 之外,還有一個名為 bcdboot 的指令,可用於將作業系統啟動載入程式複製到正確的位置。如需更多資訊,請參閱 Microsoft Hardware Dev Center 上的「BCDBoot 指令列選項」。

使用受防護的 VM 映像檔時,您也可以利用兩項額外的安全性功能:虛擬信任平台模組 (vTPM) 和完整性監控。以下各節將概略說明這些功能的優點和 OS 需求。

虛擬信任平台模組 (vTPM)

可信任的平台模組是一種專用裝置,可保護用於驗證系統存取權的物件,例如金鑰和憑證。在受防護的 VM 映像檔中,會使用虛擬化的 TPM 裝置版本來啟用測量啟動。簡而言之,測量啟動可確保啟動和核心驅動程式的關鍵載入路徑完整性。如要進一步瞭解 vTPM 和測量啟動,請參閱 隔離的 VM 說明文件

如要充分運用 vTPM 和測量啟動功能,您必須安裝驅動程式。支援 TPM 2.0 的最低 OS 版本如下:

  • Windows Server 2012
  • Linux 版本 3.20
  • Red Hat Enterprise Linux 7.3

完整性監控

完整性監控功能可讓您瞭解 VM 執行個體的狀態,並據此做出決策。監控功能會使用 Measured Boot 產生的資料,針對 VM 執行個體回報。如要進一步瞭解完整性監控自動發出對完整性驗證失敗的回應,請參閱受防護 VM 說明文件。

如要支援受防護的 VM 完整性監控功能,映像檔必須產生完整性信號:

  • Windows 會根據預設產生完整性信號。
  • Linux 必須安裝並啟用完整性評估架構 (IMA) 模組。模組必須將 CONFIG_IMA_MEASURE_PCR_IDX 設為 10。這是 IMA 模組的預設值。

將磁碟映像檔匯入至 Compute Engine

準備好映像檔後,您必須將映像檔上傳至 Compute Engine。如要瞭解將映像檔上傳至Google Cloud的必要步驟,請參閱「將開機磁碟映像檔匯入 Compute Engine」。

設定安全啟動功能的憑證

新增受防護的 VM 映像檔時,一組安全啟動公開憑證和資料庫會傳遞至 Compute Engine。這些檔案會儲存在對應的 UEFI 變數中,用於在平台、韌體和作業系統之間建立信任關係。憑證是使用唯一編碼規則 (DER) 編碼的 X.509 憑證。資料庫可以是憑證或原始二進位檔。共有四個值:

  • 平台金鑰 (pk):用於在平台擁有者和韌體之間建立信任關係的金鑰。您只能指定一個平台金鑰,且該金鑰必須是有效的 X.509 憑證。
  • 金鑰交換金鑰 (kek):用於在韌體和作業系統之間建立信任關係的金鑰。您可以為這個值指定多個鍵。
  • 禁止使用金鑰資料庫 (dbx):已撤銷的憑證資料庫,如果開機檔案使用其中一個憑證簽署,系統就會停止開機。您可以為這個值指定單一或多個值。
  • 金鑰資料庫 (db):可信任且可用於簽署啟動檔案的憑證資料庫。您可以為這個值指定單一或多個值。

UEFI 規格會進一步說明這些值的運作方式。

在以下範例中,OpenSSL 用於建立安全啟動金鑰和憑證。

  • 產生 2048 位元 RSA 金鑰組

    openssl genrsa -out secure-boot-key.rsa 2048
    
  • 使用 DER 格式的金鑰產生自行簽署的 X.509 憑證

    openssl req -new -x509 -sha256 \
        -subj '/CN=secure-boot' \
        -key secure-boot-key.rsa \
        -outform DER \
        -out secure-boot-cert.pem
    

將受防護的圖片新增至 Google Cloud

您現在可以使用上傳的映像檔和憑證,將映像檔新增至 Compute Engine。您可以使用 Google Cloud CLI 或 Compute Engine API 新增映像檔。

gcloud

將自訂映像檔新增至 Compute Engine:

gcloud compute images create [IMAGE_NAME] \
    --source-disk [SOURCE_DISK] \
    --source-disk-zone [ZONE] \
    --platform-key-file= \
    --key-exchange-key-file= \
    --signature-database-file=, \
    --forbidden-database-file= \
    --guest-os-features="UEFI_COMPATIBLE[,WINDOWS]"

其中:

  • [IMAGE_NAME] 是新映像檔的名稱。
  • [SOURCE_DISK] 是您要在其中建立新映像檔的磁碟。
  • [ZONE] 是磁碟所在的區域。

只有在使用 Windows 映像檔時,才需要 guest-os-featuresWINDOWS 選項。如要進一步瞭解如何建立映像檔,請參閱 gcloud create 參考資料

REST

請按照操作說明從永久磁碟建立映像檔,但須在要求主體中指定 initial_state_config

...
"sourceDisk": "/zones/[ZONE]/disks/[SOURCE_DISK]",

"initial_state_config": {
    "pk": {
        "content": [KEY],
        "fileType": [BIN,X509]
    },
    "keks": [
        {
            "content": [KEY],
            "fileType": [BIN,X509]
        },
        ...
    ],
    "dbxs": [
        {
            "content": [KEY],
            "fileType": [BIN,X509]
        },
        ...
    ],
    "dbs": [
        {
            "content": [KEY],
            "fileType": [BIN,X509]
        },
        ...
    ]
}

預設憑證

請注意,pkkeksdbxsdbs 為選填欄位。如果您提供初始狀態設定,系統可能會取消設定部分或所有這些欄位。從映像檔建立新例項時,除非在任何未設定的欄位上設定自訂值,否則 Google Cloud 會為 PKKEKdbdbx 提供預設值。如果您未提供初始狀態設定 (也就是說,設定遺漏,而非只是空白),圖片就會採用來源圖片的初始狀態設定。

這些欄位的預設值如下:

  • PK:與 Google 建立的預設私密金鑰相關聯的憑證。
  • KEK:預設的 Microsoft KEK 憑證。從 Microsoft 下載: MicCorKEKCA2011_2011-06-24.crt
  • dbx:預設的 Microsoft DBX 撤銷清單。從統一可延伸韌體介面論壇下載:UEFI 撤銷清單檔案
  • db:下列兩張證書:
    • Microsoft Windows 正式版 PCA 2011,SHA-1 憑證雜湊值為 58 0a 6f 4c c4 e4 b6 69 b9 eb dc 1b 2b 3e 08 7b 80 d0 67 8d。從 Microsoft 下載: MicWinProPCA2011_2011-10-19.crt
    • Microsoft Corporation UEFI CA 2011,SHA-1 憑證雜湊為 46 de f6 3b 5c e6 1c f8 ba 0d e2 e6 63 9c 10 19 d0 ed 14 f3。從 Microsoft 下載:MicCorUEFCA2011_2011-06-27.crt

請小心,因為新增自己的憑證會覆寫預設憑證,而非與您提供的憑證合併。