分享方式:


使用對稱金鑰在 Linux 上大規模建立和佈建 IoT Edge 裝置

適用於: IoT Edge 1.5 核取記號 IoT Edge 1.5 IoT Edge 1.4 核取記號 IoT Edge 1.4

重要

IoT Edge 1.5 LTS 和 IoT Edge 1.4 LTS 為支援的版本。 IoT Edge 1.4 LTS 於 2024 年 11 月 12 日結束生命週期。 如果您是舊版,請參閱更新 IoT Edge

本文提供使用對稱金鑰自動佈建一或多個 Linux IoT Edge 裝置的端對端指示。 您可以使用 Azure IoT 中樞裝置佈建服務 (DPS) 自動佈建 Azure IoT Edge 裝置。 如果您不熟悉自動佈建程序,請先檢閱佈建概觀,再繼續作業。

工作如下所示:

  1. 建立單一裝置的個別註冊或建立一組裝置的群組註冊
  2. 安裝 IoT Edge 執行階段,並將其連線至 IoT 中樞。

提示

如需簡化的體驗,請嘗試 Azure IoT Edge 設定工具。 此命令列工具目前處於公開預覽狀態,會在您的裝置上安裝 IoT Edge,並使用 DPS 和對稱金鑰證明進行佈建。

對稱金鑰證明是驗證裝置與裝置佈建服務執行個體的簡單方法。 對於不熟悉裝置佈建或沒有嚴格安全性需求的開發人員,這個證明方法代表 "Hello world" 經驗。 使用 TPMX.509 憑證的裝置證明會更加安全,並且應該用於更嚴格的安全性需求。

必要條件

雲端資源

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

裝置需求

要成為 IoT Edge 裝置的實體或虛擬 Linux 裝置。

您必須定義唯一的註冊識別碼,以識別每個裝置。 您可以使用 MAC 位址、序號或裝置的任何唯一資訊。 例如,您可以使用 MAC 位址和序號的組合,為註冊識別碼組成下列字串:sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6。 有效字元為小寫英數字元與破折號 (-)。

建立 DPS 註冊

建立註冊,以透過 DPS 佈建一或多個裝置。

如果您想要佈建單一 IoT Edge 裝置,請建立個別註冊。 如果您需要佈建多個裝置,則請遵循建立 DPS「群組註冊」的步驟。

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

如需裝置佈建服務中的註冊詳細資訊,請參閱如何管理裝置註冊

建立 DPS 個別註冊

提示

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

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

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

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

    1. 針對 [機制],選取 [對稱金鑰]

    2. 為您的裝置建立唯一的註冊識別碼

    3. 或者,您也可以為裝置提供 IoT 中樞裝置識別碼。 您可以使用裝置識別碼,將個別裝置設為模組部署的目標。 如果您未提供裝置識別碼,則會使用註冊識別碼。

    4. 選取 [True] 以宣告註冊適用於 IoT Edge 裝置。

    5. 或者,您也可將標記值新增至 [初始裝置對應項狀態]。 您可以使用標記將裝置群組設定為模組部署的目標。 例如:

      {
         "tags": {
            "environment": "test"
         },
         "properties": {
            "desired": {}
         }
      }
      
    6. 選取 [儲存]。

  4. 複製個別註冊的主索引鍵值,以在安裝 IoT Edge 執行階段時使用。

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

安裝 IoT Edge

在本節中,您將為 IoT Edge 準備 Linux 虛擬機器或實體裝置。 然後,您會安裝 IoT Edge。

執行下列命令以新增套件存放庫,然後將 Microsoft 套件簽署金鑰新增至信任金鑰的清單。

重要

在 2022 年 6 月 30 日,已從第 1 層作業系統支援清單中淘汰 Raspberry Pi OS Stretch。 若要避免潛在的安全性弱點,請將主機作業系統更新為 Bullseye。

對於第 2 層支援的平台作業系統Azure IoT Edge 版本會提供安裝套件。 請參閱離線或特定版本安裝中的安裝步驟。

您可以使用幾個命令來完成安裝。 開啟終端機,然後執行下列命令:

  • 24.04

    wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 22.04

    wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 20.04

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

如需作業系統版本的詳細資訊,請參閱 Azure IoT Edge 支援的平台

注意

使用 Azure IoT Edge 軟體套件時,必須遵守每個封裝中的授權條款 (usr/share/doc/{package-name}LICENSE 目錄)。 在使用套件之前,請先閱讀授權條款。 安裝及使用套件即表示接受這些授權條款。 如果您不同意授權條款,請勿使用該套件。

安裝容器引擎

Azure IoT Edge 會依賴 OCI 相容的容器執行階段。 針對實際執行案例,建議使用 Moby 引擎。 Moby 引擎是 IoT Edge 正式支援的唯一容器引擎。 Docker CE/EE 容器映像與 Moby 執行階段相容。 如果您使用 Ubuntu Core Snap,則 Docker Span 由 Canonical 提供服務,並支援生產案例。

安裝 Moby 引擎。

sudo apt-get update; \
  sudo apt-get install moby-engine

依預設,容器引擎不會設定容器記錄大小限制。 經過一段時間之後,這可能會導致裝置充滿記錄,並用盡磁碟空間。 不過,您可以將記錄設定為在本機顯示,但這是選擇性的。 若要深入了解記錄設定,請參閱生產部署檢查清單

下列步驟示範如何將容器設定為使用 local 記錄驅動程式作為記錄機制。

  1. 建立或編輯現有 Docker 精靈的組態檔

    sudo nano /etc/docker/daemon.json
    
  2. 將預設記錄驅動程式設定為 local 記錄驅動程式,如範例所示。

       {
          "log-driver": "local"
       }
    
  3. 重新啟動容器引擎,讓變更生效。

    sudo systemctl restart docker
    

安裝 IoT Edge 執行階段

IoT Edge 服務提供及維護 IoT Edge 裝置的安全性標準。 此服務會在每次開機時啟動,並藉由啟動 IoT Edge 執行階段讓裝置進入啟動程序。

注意

從 1.2 版開始,IoT 識別服務會處理 IoT Edge 以及需要與 IoT 中樞通訊的其他裝置元件的身分識別佈建和管理。

本節中的步驟代表在具有網際網路連線的裝置上安裝最新 IoT Edge 版本的一般程序。 如果您需要安裝特定版本,例如發行前版本,或需要在離線時安裝,請遵循本文稍後的離線或特定版本安裝步驟。

提示

如果您已經有執行舊版且想要升級至最新版本的 IoT Edge 裝置,請使用更新 IoT Edge 安全性精靈和執行階段中的步驟。 較新版本與舊版 IoT Edge 有明顯的不同,因此升級時需要特定步驟。

安裝最新版本的 IoT Edge 和 IoT 識別服務套件 (如果您尚未擁有最新版本):

  • 22.04

    sudo apt-get update; \
       sudo apt-get install aziot-edge
    
  • 20.04

    sudo apt-get update; \
       sudo apt-get install aziot-edge defender-iot-micro-agent-edge
    

選用的 defender-iot-micro-agent-edge 套件包含適用於 IoT 的 Microsoft Defender 安全性微代理程式,可讓端點了解安全性態勢管理、弱點、威脅偵測、機群管理等等,以協助您保護您的 IoT Edge 裝置。 建議您使用 Edge 代理程式安裝微代理程式,以啟用 Edge 裝置的安全性監視和強化。 若要深入了解適用於 IoT 的 Microsoft Defender,請參閱對於裝置建置者而言,什麼是適用於 IoT 的 Microsoft Defender

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

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

請備妥下列資訊:

  • DPS 識別碼範圍
  • 您建立的裝置註冊識別碼
  • 來自個別註冊的主索引鍵,或是使用群組註冊之裝置的衍生金鑰

根據作為安裝 IoT Edge 期間提供的範本檔案,為您的裝置建立組態檔。

sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml

開啟 IoT Edge 裝置上的組態檔。

sudo nano /etc/aziot/config.toml
  1. 尋找該檔案的 [佈建] 區段。 取消註解使用對稱金鑰 DPS 佈建的行,並確定已為任何其他佈建行加上註解。

    # DPS provisioning with symmetric key
    [provisioning]
    source = "dps"
    global_endpoint = "https://global.azure-devices-provisioning.net"
    id_scope = "PASTE_YOUR_SCOPE_ID_HERE"
    
    # Uncomment to send a custom payload during DPS registration
    # payload = { uri = "PATH_TO_JSON_FILE" }
    
    [provisioning.attestation]
    method = "symmetric_key"
    registration_id = "PASTE_YOUR_REGISTRATION_ID_HERE"
    
    symmetric_key = { value = "PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_HERE" }
    
    # auto_reprovisioning_mode = Dynamic
    
  2. 使用 DPS 和裝置資訊更新 id_scoperegistration_idsymmetric_key 的值。

    對稱金鑰參數可以接受內嵌金鑰、檔案 URI 或 PKCS#11 URI 的值。 根據您使用的格式,只取消註解一個對稱金鑰行。 使用內嵌金鑰時,如範例使用 base64 編碼的索引鍵。 使用檔案 URI 時,您的檔案應該包含金鑰的原始位元組。

    如果您使用任何 PKCS#11 URI,請在組態檔中尋找 [PKCS#11] 區段,並提供 PKCS#11 設定的相關資訊。

    如需佈建組態設定的詳細資訊,請參閱設定 IoT Edge 裝置設定

  3. 或者,尋找該檔案的自動重新佈建模式區段。 使用 auto_reprovisioning_mode 參數來設定裝置的重新佈建行為。 Dynamic - 當裝置偵測到裝置可能已從某個 IoT 中樞移至另一個時重新佈建。 這是預設值。 AlwaysOnStartup - 裝置重新開機或當機時重新佈建會導致精靈重新啟動。 OnErrorOnly - 永遠不會自動觸發裝置重新佈建。 如果裝置因為連線錯誤而無法在身分識別佈建期間連線至 IoT 中樞,則每個模式都有隱含裝置重新佈建後援。 如需詳細資訊,請參閱 IoT 中樞裝置重新佈建概念

  4. 選擇性地取消註解 payload 參數,以指定本機 JSON 檔案的路徑。 當裝置註冊時,檔案的內容將會傳送至 DPS 作為其他資料。 這適用於自訂配置。 例如,如果您想要根據 IoT 隨插即用模型識別碼來配置裝置,而不需人為介入。

  5. 儲存並關閉檔案。

  6. 套用您在裝置上所做的設定變更。

    sudo iotedge config apply
    

確認安裝成功

如果執行階段順利啟動,您可以移至 IoT 中樞,並開始將 IoT Edge 模組部署到您的裝置。

您可以驗證系統是否已使用您在裝置佈建服務中所建立的個別註冊。 在 Azure 入口網站中導覽至您的裝置佈建服務執行個體。 開啟所建立個別註冊的註冊詳細資料。 請注意,註冊狀態是 [已指派],並且會列出裝置識別碼。

請在您的裝置上使用下列命令,確認 IoT Edge 已成功安裝並啟動。

檢查 IoT Edge 服務的狀態。

sudo iotedge system status

檢查服務記錄。

sudo iotedge system logs

列出執行中的模組。

sudo iotedge list

下一步

佈建新裝置時,裝置佈建服務註冊流程可讓您同時設定裝置識別碼和裝置對應項標記。 您可以使用這些值來鎖定要使用自動裝置管理的個別裝置或裝置群組。 了解如何使用 Azure 入口網站大規模部署和監視 IoT Edge 模組,或使用 Azure CLI 執行相同作業。