共用方式為


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

適用於:勾選圖示 IoT Edge 1.1

這很重要

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

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

工作如下所示:

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

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

先決條件

雲端資源

  • 正在運作的物聯網中樞
  • 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. 或者,您也可將標籤值添加至 [初始裝置 Twin 狀態]。 您可以使用標記將裝置群組設定為模組部署的目標。 例如:

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

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

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

安裝 IoT Edge

在本節中,您會準備適用於 IoT Edge 的 Linux VM 或實體裝置。 然後,您會安裝 IoT Edge。

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

這很重要

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

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

  • 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
    
  • 18.04

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

備註

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

安裝容器引擎

Azure IoT Edge 依賴 OCI 相容的容器運行時間。 針對實際執行案例,建議使用 Moby 引擎。 Moby 引擎是IoT Edge正式支援的容器引擎。 Docker CE/EE 容器映像與 Moby 執行階段相容。

安裝 Moby 引擎。

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

成功安裝Moby引擎之後,請將它設定為使用 local 記錄驅動程式 作為記錄機制。 若要深入了解記錄設定,請參閱生產部署檢查清單

  • /etc/docker/daemon.json建立或開啟 Docker 精靈的組態檔。

  • 將默認記錄驅動程式設定為 local 記錄驅動程式,如下列範例所示。

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

    sudo systemctl restart docker
    

    小提示

    如果您在安裝 Moby 容器引擎時發生錯誤,請確認您的 Linux 核心與 Moby 相容。 某些嵌入式裝置製造商會提供包含自訂 Linux 核心的裝置影像,而不需要容器引擎相容性所需的功能。 執行下列命令,此命令會使用 Moby 所提供的 檢查設定指令碼 來檢查您的核心設定:

    curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
    chmod +x check-config.sh
    ./check-config.sh
    

    在指令碼的輸出中,檢查所有在Generally NecessaryNetwork Drivers 下的項目是否已啟用。 如果您缺少功能,請從原始碼重建核心,然後選取相關聯的模組以納入適當的核心 .config 來加以啟用。同樣地,如果您使用 defconfigmenuconfig 等核心設定產生器,請尋找並啟用個別的功能,並據此重建您的核心。 一旦您部署新修改過的核心之後,請再次執行檢查設定指令碼,以確認所有必要的功能都已成功啟用。

安裝 IoT Edge 執行階段

IoT Edge 安全性精靈會在IoT Edge裝置上提供和維護安全性標準。 守護程式會在每次開機時啟動,並透過啟動其他 IoT Edge 執行環境的部分來引導裝置。

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

安裝 IoT Edge 1.1.* 版以及 libiothsm-std 套件:

sudo apt-get update; \
  sudo apt-get install iotedge

備註

IoT Edge 1.1 版是 IoT Edge 的長期支援分支。 如果您執行舊版,建議您安裝或更新至最新的修補程式,因為不再支援舊版。

使用雲端身分識別來配置裝置

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

請備妥下列資訊:

  • DPS 識別碼範圍
  • 您建立的裝置註冊識別碼
  • 來自個人註冊的主索引鍵,或是使用群組註冊的裝置之衍生金鑰
  1. 開啟 IoT Edge 裝置上的組態檔。

    sudo nano /etc/iotedge/config.yaml
    
  2. 尋找該檔案的佈建組態區段。 移除註解 DPS 對稱金鑰配置的行,並確保其他配置行已加上註解。

    provisioning: 一行應該沒有前面的空格符,而巢狀項目應該縮排兩個空格。

    # DPS TPM provisioning configuration
    provisioning:
      source: "dps"
      global_endpoint: "https://global.azure-devices-provisioning.net"
      scope_id: "PASTE_YOUR_SCOPE_ID_HERE"
      attestation:
        method: "symmetric_key"
        registration_id: "PASTE_YOUR_REGISTRATION_ID_HERE"
        symmetric_key: "PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_HERE"
    
    # always_reprovision_on_startup: true
    # dynamic_reprovisioning: true
    
  3. 使用 DPS 和裝置資訊更新 scope_idregistration_idsymmetric_key 的值。

  4. 或者,使用 always_reprovision_on_startupdynamic_reprovisioning 行來設定裝置的重新部署行為。 如果裝置設定為在啟動時重新佈建,它一律會先嘗試使用 DPS 進行布建,然後在失敗時回復到布建備份。 如果裝置設定為動態重新布建本身,如果偵測到重新布建事件,IoT Edge (和所有模組)將會重新啟動並重新佈建,就像裝置從一個 IoT 中樞移至另一個 IoT 中樞一樣。 具體而言,IoT Edge 會檢查 SDK 中是否有 bad_credentialdevice_disabled 錯誤,以偵測重新佈建事件。 若要手動觸發此事件,請停用IoT中樞內的裝置。 如需詳細資訊,請參閱 IoT 中樞裝置重新佈建概念

  5. 重新啟動 IoT Edge 執行階段,以便套用您在裝置上所做的所有組態變更。

    sudo systemctl restart iotedge
    

確認安裝成功

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

您可以驗證您在裝置佈建服務中所建立的單獨註冊是否已被使用。 請前往 Azure 入口中的您的裝置佈建服務實例。 開啟你創建的單筆註冊的註冊詳細資料。 請注意,註冊狀態是 [已指派],並且會列出裝置識別碼。

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

檢查 IoT Edge 服務的狀態。

systemctl status iotedge

檢查服務記錄。

journalctl -u iotedge --no-pager --no-full

列出執行中的模組。

iotedge list

後續步驟

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