使用對稱密鑰在 Linux 上建立和布建 IoT Edge 裝置

適用於:IoT Edge 1.4 checkmark IoT Edge 1.4

重要

支援的版本是 IoT Edge 1.4。 如果您是舊版,請參閱更新 IoT Edge

本文提供註冊和布建包含安裝IoT Edge的Linux IoT Edge裝置的端對端指示。

線上到 IoT 中樞 的每個裝置都有用來追蹤 雲端到裝置裝置到雲端 通訊的裝置識別碼。 您可以使用其連線資訊來設定裝置,包括:

  • IoT 中樞主機名稱
  • 裝置識別碼
  • 線上至 IoT 中樞 的驗證詳細數據

本文中的步驟會逐步解說一個稱為 手動布建的程式,您可以在其中將單一裝置連線到其 IoT 中樞。 針對手動布建,您有兩個選項可用來驗證 IoT Edge 裝置:

  • 對稱金鑰:當您在 IoT 中樞 中建立新的裝置身分識別時,服務會建立兩個密鑰。 您可以將其中一個金鑰放在裝置上,並在驗證時呈現要 IoT 中樞 的密鑰。

    這個驗證方法的啟動速度較快,但不是那麼安全。

  • X.509 自我簽署:您建立兩個 X.509 身分識別憑證,並將其放在裝置上。 當您在 IoT 中樞 中建立新的裝置身分識別時,您會從這兩個憑證提供指紋。 當裝置向 IoT 中樞 進行驗證時,它會顯示一個憑證,IoT 中樞 驗證憑證是否符合其指紋。

    此驗證方法更安全,而且建議用於生產案例。

本文涵蓋使用對稱金鑰作為驗證方法。 如果您想要使用 X.509 憑證,請參閱 使用 X.509 憑證在 Linux 上建立和布建 IoT Edge 裝置。

注意

如果您有許多裝置要設定且不想手動布建每個裝置,請使用下列其中一篇文章來瞭解 IoT Edge 如何與 IoT 中樞 裝置佈建服務搭配運作:

必要條件

本文說明如何在裝置上註冊 IoT Edge 裝置並安裝 IoT Edge(也稱為 IoT Edge 運行時間)。 在註冊並安裝裝置之前,請確定您有您選擇的裝置管理工具,例如 Azure CLI 和裝置需求。

裝置管理工具

您可以使用 Azure 入口網站Visual Studio CodeAzure CLI 來註冊裝置的步驟。 每個公用程式都有自己的必要條件,或可能需要安裝:

Azure 訂用帳戶中的免費或標準 IoT 中樞

裝置需求

X64、ARM32 或 ARM64 Linux 裝置。

Microsoft 會發佈各種操作系統的安裝套件。

如需生產案例目前支援哪些操作系統的最新資訊,請參閱 Azure IoT Edge 支援的系統

Visual Studio Code 擴充功能

如果您使用 Visual Studio Code,有實用的 Azure IoT 延伸模組可讓裝置建立和管理程式變得更容易。

同時安裝 Azure IoT Edge 和 Azure IoT 中樞 擴充功能:

註冊您的裝置

您可以根據喜好設定,使用 Azure 入口網站Visual Studio CodeAzure CLI 來註冊您的裝置。

在 Azure 入口網站的IoT中樞中,IoT Edge裝置會與未啟用邊緣的IoT裝置分開建立和管理。

  1. 登入 Azure 入口網站 並流覽至您的IoT中樞。

  2. 在左窗格中,從功能表中選取 [裝置 ],然後選取 [ 新增裝置]。

  3. 在 [ 建立裝置 ] 頁面上,提供下列資訊:

    • 建立描述性的裝置識別碼,例如 my-edge-device-1 (所有小寫)。 複製此裝置識別碼,因為您稍後會使用它。
    • 核取 [ IoT Edge 裝置 ] 複選框。
    • 選取 [對稱金鑰] 作為 [驗證類型]。
    • 使用預設設定來自動產生驗證密鑰,以將新裝置連線到您的中樞。
  4. 選取 [儲存]。

您應該會看到IoT中樞中列出的新裝置。

既然您已在 IoT 中樞 中註冊裝置,您可以在下一個步驟中擷取用來完成 IoT Edge 運行時間安裝和布建的布建資訊。

檢視已註冊的裝置並擷取布建資訊

使用對稱金鑰驗證的裝置需要其 連接字串,才能完成IoT Edge執行時間的安裝和布建。 當您建立裝置時,會為IoT Edge裝置產生 連接字串。 針對 Visual Studio Code 和 Azure CLI,連接字串 位於 JSON 輸出中。 如果您使用 Azure 入口網站 來建立裝置,您可以從裝置本身找到 連接字串。 當您在IoT中樞中選取裝置時,它會列在 Primary connection string 裝置頁面上。

連線到 IoT 中樞的邊緣裝置會列在 IoT 中樞的 [裝置 ] 頁面上。 如果您有多個裝置,您可以選取 Iot Edge 裝置類型來篩選清單,然後選取 [套用]。

當您準備好設定裝置時,您需要連結實體裝置及其身分識別在IoT中樞內的 連接字串。 使用對稱金鑰進行驗證的裝置具有可在入口網站中複製其 連接字串。 若要在入口網站中尋找您的 連接字串:

  1. 從 [ 裝置] 頁面,從清單中選取 [IoT Edge 裝置標識符]。
  2. 複製 Primary 連線 ion StringSecondary 連線 ion String 的值。 任一金鑰都能夠運作。

安裝IoT Edge

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

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

重要

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

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

  • 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 執行階段相容。

安裝 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 for Device Builder

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

既然容器引擎和 IoT Edge 執行時間已安裝在您的裝置上,您就可以使用其雲端身分識別和驗證資訊來設定裝置。

您可以使用下列命令,使用對稱金鑰驗證來設定 IoT Edge 裝置:

sudo iotedge config mp --connection-string 'PASTE_DEVICE_CONNECTION_STRING_HERE'

此命令iotedge config mp會在裝置上建立組態檔,並在組態檔中輸入您的 連接字串。

  1. 套用設定變更。

    sudo iotedge config apply
    
  2. 若要檢視組態檔,您可以開啟它:

    sudo nano /etc/aziot/config.toml
    

部署模組

若要部署IoT Edge模組,請移至 Azure 入口網站中的IoT中樞,然後:

  1. 從 [IoT 中樞] 功能選取 [裝置]。

  2. 選取您的裝置以開啟其頁面。

  3. 選取 [ 設定模組] 索引標籤

  4. 由於我們想要部署 IoT Edge 預設模組 (edgeAgent 和 edgeHub),因此我們不需要將任何模組新增至此窗格,因此請選取 底部的 [檢閱 + 建立 ]。

  5. 您會看到模組的 JSON 確認。 選取 [建立] 以部署模組。

如需詳細資訊,請參閱 部署模組

確認設定成功

確認您的 IoT Edge 裝置上已成功安裝並設定執行階段。

提示

您需要有較高的權限才能執行 iotedge 命令。 一旦您註銷計算機,並在安裝IoT Edge執行時間後第一次重新登入,您的許可權就會自動更新。 在此之前,請在命令前面使用 sudo

  1. 確認 IoT Edge 系統服務正在執行。

    sudo iotedge system status
    

    成功的狀態回應會將 aziot 服務顯示為執行中或就緒。

  2. 如果您需要對服務進行疑難排解,請擷取服務記錄。

    sudo iotedge system logs
    
  3. 使用 工具來 check 驗證裝置的組態和連線狀態。

    sudo iotedge check
    

    您可以預期會有一系列回應,包括 OK (綠色)、 警告 (黃色)或 錯誤 (紅色)。 如需針對常見錯誤進行疑難解答,請參閱 Azure IoT Edge 常見問題的解決方案。

    Screenshot of sample responses from the check command.

    提示

    一律使用 sudo 來執行檢查工具,即使在您的許可權更新之後也一樣。 此工具需要提高的許可權,才能存取組態檔,以驗證組態狀態。

    注意

    在新布建的裝置上,您可能會看到與 IoT Edge 中樞相關的錯誤:

    ×生產整備:Edge Hub 的記憶體目錄會保存在主機文件系統上 - 錯誤無法檢查 edgeHub 容器的目前狀態

    新布建的裝置上預期會發生此錯誤,因為IoT Edge中樞模組尚未執行。 請確定您的 IoT Edge 模組已部署在先前的步驟中。 部署可解決此錯誤。

    或者,您可能會看到狀態代碼為 417 -- The device's deployment configuration is not set。 部署模組之後,此狀態將會變更。

  4. 當服務第一次啟動時,您應該只會看到 edgeAgent 模組正在執行。 edgeAgent 模組預設會執行,且有助於安裝及啟動部署至裝置的任何其他模組。

    檢視 Azure 入口網站 中的裝置頁面,檢查您的裝置和模組是否已部署並執行。

    Screenshot of IoT Edge modules deployed and running confirmation in the Azure portal.

    部署並執行模組之後,請使用下列命令在裝置或虛擬機中列出它們:

    sudo iotedge list
    

離線或特定版本安裝(選擇性)

本節中的步驟適用於標準安裝步驟未涵蓋的案例。 這可能包括:

  • 離線時安裝IoT Edge
  • 安裝候選版本

如果您想要安裝 無法透過套件管理員取得的特定 Azure IoT Edge 運行 時間版本,請使用本節中的步驟。 Microsoft 套件清單只包含一組有限的最新版本及其子版本,因此這些步驟適用於任何想要安裝較舊版本或候選版本的人。

如果您使用 Ubuntu 嵌入式管理單元,您可以下載貼齊並將其離線安裝。 如需詳細資訊,請參閱 下載快照集並離線安裝。

使用 curl 命令,您可以直接從 IoT Edge GitHub 存放庫以元件檔案為目標。

注意

如果您的裝置目前執行 IoT Edge 1.1 版或更新版本,請先卸載 iotedgelibiothsm-std 套件,再遵循本節中的步驟。 如需詳細資訊,請參閱 從1.0或1.1更新至最新版本

  1. 流覽至 Azure IoT Edge 版本,並尋找您想要設定目標的發行版本。

  2. 展開該版本的 [資產] 區段。

  3. 每個版本都應該有IoT Edge和身分識別服務的新檔案。 如果您要在離線裝置上安裝 IoT Edge,請事先下載這些檔案。 否則,請使用下列命令來更新這些元件。

    1. 尋找符合 IoT Edge 裝置架構的 aziot-identity-service 檔案。 以滑鼠右鍵按下檔案連結,然後複製連結位址。

    2. 使用下列命令中的複製連結來安裝該版本的身分識別服務:

      curl -L <identity service link> -o aziot-identity-service.deb && sudo apt-get install ./aziot-identity-service.deb
      

    1. 尋找符合IoT Edge裝置架構的 aziot-edge 檔案。 以滑鼠右鍵按下檔案連結,然後複製連結位址。

    2. 使用下列命令中的複製連結來安裝該版本的 IoT Edge。

      curl -L <iotedge link> -o aziot-edge.deb && sudo apt-get install ./aziot-edge.deb
      

卸載 IoT Edge

如果您想要從裝置移除 IoT Edge 安裝,請使用下列命令。

拿掉 IoT Edge 執行時間。

sudo apt-get autoremove --purge aziot-edge

如果您打算重新安裝IoT Edge,並在未來使用相同的組態資訊,請排除 --purge 旗標。 旗 --purge 標會刪除與IoT Edge相關聯的所有檔案,包括您的組態檔。

拿掉IoT Edge運行時間時,它所建立的任何容器都會停止,但仍存在於您的裝置上。 檢視所有容器,以查看保留哪些容器。

sudo docker ps -a

從裝置刪除容器,包括兩個運行時間容器。

sudo docker rm -f <container ID>

最後,從您的裝置移除容器運行時間。

sudo apt-get autoremove --purge moby-engine

下一步

繼續 部署IoT Edge模組 ,以瞭解如何將模組部署至您的裝置。