在 Windows 上使用 TPM 來大規模建立和佈建 IoT Edge 裝置

適用於是圖示IoT Edge 1.1

重要

IoT Edge 1.1終止支援日期為 2022 年 12 月 13 日。 如需此產品、服務、技術或 API 的支援資訊,請參閱 Microsoft 產品生命週期。 如需更新至最新版本IoT Edge的詳細資訊,請參閱更新IoT Edge

本文提供使用信任平台模組 (TPM) 來自動佈建 Azure IoT Edge for Windows 裝置的指示。 您可以使用 Azure IoT 中樞裝置佈建服務自動佈建 IoT Edge 裝置。 如果您不熟悉自動佈建程序,請先檢閱佈建概觀再繼續。

注意

從 1.2 版開始,Azure IoT Edge 不再支援搭配 Windows 容器的 Azure IoT Edge。

請考慮使用新的方法在 Windows 裝置上執行 IoT Edge:Azure IoT Edge for Linux on Windows

如果您想要使用 Azure IoT Edge for Linux on Windows,您可以遵循對等操作指南中的步驟。

本文概述兩種方法。 根據您的解決方案架構選取您的喜好設定:

  • 使用實體 TPM 硬體自動佈建 Windows 裝置。
  • 自動佈建執行模擬 TPM 的 Windows 裝置。 我們僅建議將此方法作為測試案例。 模擬 TPM 並未提供與實體 TPM 相同的安全性。

指示會根據您的方法而有所不同,因此請確定您位於正確的索引標籤上。

工作如下所示:

  • 擷取您的裝置的佈建資訊。
  • 建立裝置的個別註冊。
  • 安裝 IoT Edge 執行階段,並將裝置連線到 IoT 中樞。

必要條件

實體 TPM 和虛擬 TPM 解決方案的必要條件相同。

雲端資源

  • 使用中的 IoT 中樞
  • Azure 中的 IoT 中樞裝置佈建服務執行個體,其與您的 IoT 中樞連結

裝置需求

Windows 開發機器。 本文使用 Windows 10。

注意

當您搭配裝置佈建服務並使用 TPM 證明時,需要 TPM 2.0。

當您使用 TPM 時,僅可建立個別裝置佈建服務註冊,無法建立群組裝置佈建服務註冊。

設定您的 TPM

在本節中,您會建置工具,以用來擷取 TPM 的註冊識別碼和簽署金鑰。

  1. 依照設定 Windows 開發環境中的步驟安裝並建置 C 的 Azure IoT 裝置 SDK。

  2. 在提升權限的 PowerShell 工作階段中執行下列命令,建置用來針對 TPM 擷取裝置佈建資訊的 SDK 工具。

    cd azure-iot-sdk-c\cmake
    cmake -Duse_prov_client:BOOL=ON ..
    cd provisioning_client\tools\tpm_device_provision
    make
    .\tpm_device_provision
    
  3. 輸出視窗會顯示裝置的 [註冊識別碼] 和 [簽署金鑰]。 在裝置佈建服務中建立裝置的個別註冊時,請複製這些值以供稍後使用。

提示

如果您不想使用 SDK 工具來擷取資訊,則需要尋找其他方法來取得佈建資訊。 簽署金鑰對每個 TPM 晶片來說都是唯一的,其是從與其相關聯的 TPM 晶片製造商取得。 您可以為 TPM 裝置衍生唯一的註冊識別碼。 例如,您可以建立簽署金鑰的 SHA-256 雜湊。

在您擁有註冊識別碼和簽署金鑰之後,即可繼續。

建立裝置佈建服務註冊

使用 TPM 的佈建資訊,在裝置佈建服務中建立個別註冊。

在裝置佈建服務中建立註冊時,您就有機會宣告初始裝置對應項狀態。 在裝置對應項中,您可以根據解決方案中使用的任何計量 (例如區域、環境、位置或裝置類型) 來設定標記,進而將裝置分組。 這些標記會用來建立自動部署

提示

本文中的步驟適用於 Azure 入口網站,但您也可以使用 Azure CLI 建立個別註冊。 如需詳細資訊,請參閱 az iot dps 註冊。 CLI 命令中會使用啟用 Edge 旗標來指定 IoT Edge 裝置的註冊。

  1. Azure 入口網站中,前往 IoT 中樞裝置佈建服務的執行個體。

  2. 在 [設定] 下方,選取 [管理註冊]

  3. 選取 [新增個別註冊],然後完成下列步驟以設定註冊:

    1. 針對 [機制],選取 [TPM]

    2. 提供您從 VM 或實體裝置複製的 [簽署金鑰] 和 [註冊識別碼]。

    3. 視需要提供裝置的識別碼。 如果您未提供裝置識別碼,則會使用註冊識別碼。

    4. 選取 [True] 以宣告您的 VM 或實體裝置為 IoT Edge 裝置。

    5. 選擇您要將裝置連線到的連結 IoT 中樞,或選取 [連結到新的 IoT 中樞]。 您可以選擇多個中樞,然後系統會根據所選取的指派原則,將裝置指派給其中一個中樞。

    6. 視需要將標記值新增至 [初始裝置對應項狀態]。 您可以使用標記將裝置群組設定為模組部署的目標。 如需詳細資訊,請參閱大規模部署 IoT Edge 模組

    7. 選取 [儲存]。

現在此裝置已有註冊,因此 IoT Edge 執行階段可以在安裝期間自動佈建此裝置。

安裝 IoT Edge

在本節中,您會為 IoT Edge 準備 Windows VM 或實體裝置。 然後,您會安裝 IoT Edge。

Azure IoT Edge 會依賴 OCI 相容的容器執行階段。 Moby (Moby 型引擎) 包含在安裝指令碼中,因此不需要其他步驟即可安裝該引擎。

若要安裝 IoT Edge 執行階段:

  1. 以系統管理員身分執行 PowerShell。

    使用 AMD64 工作階段來安裝 PowerShell,而不是使用 PowerShell (x86)。 如果您不確定正在使用的工作階段類型為何,請執行下列命令:

    (Get-Process -Id $PID).StartInfo.EnvironmentVariables["PROCESSOR_ARCHITECTURE"]
    
  2. 執行 Deploy-IoTEdge 命令,以執行下列工作:

    • 檢查您的 Windows 機器是否處於支援的版本
    • 開啟容器功能
    • 下載 Moby 引擎和 IoT Edge 執行階段
    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Deploy-IoTEdge
    
  3. 重新啟動您的裝置 (若出現提示)。

在裝置上安裝 IoT Edge 時,您可以使用其他參數來修改程序,包括:

  • 將流量導向經過 Proxy 伺服器
  • 將安裝程式指向本機目錄以進行離線安裝

如需這些其他參數的詳細資訊,請參閱使用 Windows 容器的 IoT Edge PowerShell 指令碼

使用雲端身分識別來佈建裝置

在裝置上安裝執行階段之後,請使用裝置用來連線到裝置佈建服務和 IoT 中樞的資訊,來設定裝置。

  1. 了解您在前幾節中收集的裝置佈建服務識別碼範圍和裝置註冊識別碼

  2. 在系統管理員模式下開啟 [Azure PowerShell] 視窗。 安裝 IoT Edge 時,請務必使用 PowerShell 的 AMD64 工作階段,而不是 PowerShell (x86)。

  3. Initialize-IoTEdge 命令會在您的電腦上設定 IoT Edge 執行階段。 此命令預設為 Windows 容器的手動佈建。 使用 -Dps 旗標來使用裝置佈建服務,而不是手動佈建。

    paste_scope_id_herepaste_registration_id_here 的預留位置值取代為您稍早收集的資料。

    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Initialize-IoTEdge -Dps -ScopeId paste_scope_id_here -RegistrationId paste_registration_id_here
    

確認安裝成功

如果執行階段順利啟動,請移至 IoT 中樞,並開始將 IoT Edge 模組部署到您的裝置。 請在您的裝置上使用下列命令,確認執行階段已成功安裝並啟動。

  1. 檢查 IoT Edge 服務的狀態。

    Get-Service iotedge
    
  2. 檢查最後 5 分鐘的服務記錄。

    . {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog
    
  3. 列出執行中的模組。

    iotedge list
    

下一步

佈建新裝置時,裝置佈建服務註冊程序可讓您同時設定裝置識別碼和裝置對應項標記。 您可以使用自動裝置管理來使用這些值鎖定個別裝置或裝置群組。

了解如何使用 Azure 入口網站大規模部署和監視 IoT Edge 模組,或使用 Azure CLI 執行相同作業。