物聯網安全基礎知識:安全連接到物聯網云服務
物聯網 (IoT) 安全依賴于多層保護,可從物聯網設備的硬件基礎一直延伸到執行環境。不過,對于任何聯網設備來說,威脅依然存在,針對云連接的典型物聯網應用要求也可能讓物聯網設備和云服務暴露在新攻擊之下。為了緩解這些威脅,物聯網云提供商采用特定的安全協議和策略,但若使用不當,它們反而會讓物聯網應用更容易受到攻擊。通過使用預先配置的開發板,開發人員可以快速借鑒主要物聯網云服務所使用的安全方法,對連接進行身份驗證以及授權使用物聯網設備和云資源。
本文將說明兩大云服務 Amazon Web Services (AWS) 和 Microsoft Azure 所使用的連接要求,并且介紹開發人員可以如何使用來自眾多供應商的開發套件及相關軟件,來快速連接這些服務。
物聯網門戶在云服務中所扮演的角色
當一臺物聯網設備連接到某個資源,如云服務或遠程主機,其自身以及因擴展整個物聯網網絡而可能受到偽裝成合法服務或服務器的威脅。相反地,云服務本身也面臨著來自黑客的類似攻擊威脅,黑客會模仿物聯網設備事務以試圖對云防御機制進行滲透。為了幫助確保保護物聯網設備和云資源,云服務需要采用特定的安全協議對登錄進行雙向身份驗證并對后續操作加以授權,以確定是否允許使用服務。此類協議通常包含在一系列服務內,以在物聯網設備和云資源之間提供安全門戶。
類似于其他可用的物聯網云服務平臺,AWS 和 Azure 分別提供特定入口門戶,以供物聯網設備用來與每家提供商的全套云資源進行交互。這些云資源包括虛擬機 (VM) 和軟件即服務 (SaaS) 產品等。Azure IoT Hub 和 AWS IoT 使用功能類似的機制和能力組合,能夠為各自相應的企業云產品提供此類門戶。
在最低程度上,這些及其他物聯網門戶會使用特定的身份驗證協議來建立安全連接。這些協議可通過每家提供商的軟件開發套件 (SDK) 實現。對于 AWS,物聯網設備使用雙向身份驗證來連接設備網關。而設備網關會使用設備注冊表中保存的信息來連接物聯網設備和其他物聯網支持服務。該寄存器可存儲唯一設備標識碼、安全憑證,以及管理對 AWS 服務進行訪問所需的其他元數據(圖 1)。在 Azure 中,身份注冊表具有類似的功能。
AWS IoT 和 Azure IoT 都提供有相關服務,能在與每臺物理物聯網設備有關的虛擬設備中維護狀態信息。在 AWS IoT 中,設備影子將為 AWS IoT 提供此功能;而設備孿生則為 Azure IoT 提供類似功能。
這種安全門戶概念可延伸到物聯網邊緣服務,例如 AWS Greengrass 或 Azure IoT Edge 等。這些邊緣服務產品可將部分云服務和功能下放至本地網絡,并且在大規模部署中,邊緣系統會放置在靠近物聯網設備和系統的位置。開發人員可以使用 Azure IoT Edge 等服務來實現應用業務邏輯,或提供所需的其他功能來縮短延遲,或向本地操作人員提供服務,如工業自動化等(圖 2)。
應對物聯網門戶連接性要求
不管是通過邊緣系統進行連接,還是直接連接至提供商的物聯網服務,物聯網設備通常需要滿足一系列要求,才能連接提供商的物聯網門戶并使用提供商的云服務。雖然細節有差異,但物聯網設備至少要提供某些項目,如私鑰、X.509 證書或其他安全令牌。在設備-云連接序列的身份驗證階段,這些密鑰、證書或令牌會為物聯網門戶提供關于物聯網設備身份的認證或證明。此外,物聯網云服務通常需要一套策略規范,用于定義物聯網設備和云服務之間交互所需的訪問權限。
和其他企業計算要求一樣,需要使用由主要物聯網云服務(如 AWS IoT 和 Azure IoT)指定的特定格式和程序,來提供用于身份驗證的認證信息以及用于訪問管理的策略信息。這些服務不僅在最低程度上支持基于證書的身份驗證,它們還支持使用其他形式的認證。例如,開發人員可以在 AWS IoT 中使用以 JSON Web Token (JWT) 為基礎的基于令牌的身份驗證方法,或在 Azure IoT 中使用共享訪問簽名 (SAS) 令牌。
如前文所述,這些服務使用注冊表來保存每臺物聯網設備的元數據。除安全和其他信息以外,此類注冊表還會保存訪問權限策略,而這些策略需要進行定義以連接物聯網設備。雖然針對不同的云服務有不同的指定方式,但這些策略定義對不同通信通道和實體的訪問權限進行了描述。例如,一項簡單的 AWS IoT 訪問權限策略可能會使用 JSON 格式來指明:AWS IoT 設備注冊表中帶有特殊“物件”名稱的物聯網設備只能在具有相同的相關物件名稱的通道中進行連接與發布消息(清單 1)。
- { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action":["iot:Publish"], "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.ThingName}"] }, { "Effect": "Allow", "Action": ["iot:Connect"], "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"] } ]}
清單 1:開發人員使用 JSON 格式來描述物聯網設備的 AWS IoT 訪問權限策略。(代碼來源:AWS)
云就緒開發套件
雖然云提供商提供關于此類格式和程序的詳細規格,但提供商的支持論壇上經常充斥著開發人員遇到的非常小但關鍵的細節問題,這些問題使其無法順利完成身份驗證和訪問管理。更糟糕的是,從安全角度來看,無意識的濫用認證或不完整的訪問策略定義還有可能導致物聯網設備、網絡和應用受到攻擊。隨著現成即用的開發板和配套軟件包的推出,開發人員能夠在這些連接程序中快速導航,并使用供應商提供的示例快速連接到物聯網云。例如,Espressif Systems 的 ESP32-Azure IoT 套件或 Seeed Technology 的 AZ3166 IoT 開發套件都包含經過 Azure 認證的開發板,且專門為輕松連接 Microsoft 云而設計。
Microsoft 提供完整的分步演示,包括受支持開發套件的身份驗證和訪問憑證等。以 AZ3166 開發板為例,開發人員只要按下板上的按鈕,即可啟動與本地 Wi-Fi 網絡的連接。一旦連接,他們可以使用適用于 Microsoft Visual Studio Code 的 Azure IoT Tools 擴展包中的 Azure IoT Device Workbench,來進行開發、調試,以及與 Azure IoT Hub 進行交互。通過使用此工具集及其代碼樣例包,開發人員可以在 Azure IoT Hub 中為物聯網設備創建對象,并使用提供的文件來配置包含憑證和其他元數據的關聯身份注冊表,用以將物聯網板連接至 Azure IoT Hub(圖 3)。
Azure IoT Device Workbench 提供額外的支持軟件和元數據,讓開發人員可以快速加載 AZ3166 板和代碼樣例,并開始將開發板的溫度和濕度傳感器的測量數據傳輸到 Azure IoT Hub。
在物聯網云中為物理物聯網設備創建表示形式以及配置關聯的注冊表,所涉及的必要步驟只是將設備連接到物聯網云。不過,要充分利用云服務的優點,Azure IoT Hub 還需要一項訪問權限策略。為了對來自 AZ3166 傳感器的設備到云的消息進行監控,開發人員只需使用 Azure 共享訪問策略屏幕,來選擇專門為快速啟用必要訪問權限而設計的預構建策略(圖 4)。
在使用 AWS IoT 時,開發人員可以轉用開發套件,如 Microchip Technology 的 AT88CKECC-AWS-XSTK-B 零接觸配置套件及配套軟件,來對云連接進行快速評估。此版本是早期 Microchip 零接觸配置套件的更新版,預先加載了身份驗證憑證。使用該套件提供的其他腳本,開發人員可以快速將開發板連接到 AWS IoT,而無需處理私鑰和證書問題(請參閱“采用零接觸方法安全鎖定物聯網設備”)。
其他開發套件包括 Renesas 的 RTK5RX65N0S01000BE RX65N 云套件和 Infineon Technologies 的 KITXMC48IOTAWSWIFITOBO1 AWS IoT 套件,擴展了對 AWS IoT 連接的支持,并且支持快速開發基于 Amazon FreeRTOS 的應用。AWS 提供了詳細的指導說明,有助于注冊開發板,創建身份驗證憑證,以及加載所提供的 JSON 策略以連接至 AWS IoT 和使用 AWS 服務。
簡化大規模物聯網部署的配置
開發套件(如前文所述的套件)可作為快速開發物聯網應用的原型,以及探索物聯網云服務連接要求的有效平臺。但在實際應用中,開發人員通常需要轉用更高級的方法,而這些方法專為簡化現實應用中的物聯網設備配置而設計。Azure IoT 和 AWS IoT 都支持各種方法,以允許對大規模部署中的個別設備或大量物聯網設備進行更自動化的配置。
以 AWS IoT 為例,開發人員可以使用自舉方式進行證書配置。亦即,智能產品在交付時會提供自舉證書,其中包含關聯的最低訪問權限以供請求和訪問新證書(圖 5)。
使用自舉證書時,設備可以連接到云(見圖 5 中的“1”),請求 ("2") 新證書,接收 ("3") 由 AWS 無服務器 Lambda 函數生成的證書 URL,以及從 AWS Simple Storage Services (S3) 存儲桶檢索 ("4") 該證書。而使用該新證書,設備則可以重新登錄到 AWS IoT ("5"),以便繼續正常操作。
AWS 還提供其他云服務,以支持使用執行資源(如 AWS Lambda 函數)對身份驗證令牌進行動態配置。例如,某汽車應用可能依賴一系列臨時連接,在這些連接中,使用令牌更實用而且更安全。在適用于物聯網身份驗證和授權的 AWS 模塊批準令牌請求以后,AWS Security Token Service (STS) 會生成一個令牌以傳輸到汽車系統。使用該令牌,這些系統可以訪問需要由 AWS Identity and Access Management (IAM) 服務驗證的 AWS 服務(圖 6)。
AWS 為訪問權限的動態分配提供類似功能。此時,其他 AWS Lambda 函數會分配一組與有效令牌關聯的策略(圖 7)。
其他物聯網云服務允許開發人員更有效地處理大規模部署中的配置。例如,AWS IoT 提供車隊配置功能,包括支持前文所述自舉方法的更大規模部署。Azure IoT 的設備配置服務提供組注冊功能,支持對擁有相同 X.509 證書或 SAS 令牌的大量物聯網設備進行配置。
安全責任共擔
IoT 云提供商提供若干有效方法,以提升物聯網應用的端對端安全。盡管如此,IoT 開發人員不能預期這些方法可以承擔其特定物聯網應用的全部安全要求重任。實際上,云服務提供商會使用具體的模型(如 AWS 的責任共擔模型)來仔細地概述其在物聯網應用安全領域內的具體角色和責任(圖 8)。
AWS 和 Microsoft Azure 都提供責任共擔文檔,說明與解釋在保護資源、數據和應用過程中提供商的自身角色,以及客戶所扮演的角色。在其說明文檔中,Microsoft 還概述了安全責任共擔和合規性要求之間的部分關系。最后,云提供商還負有保護云安全的責任,而客戶則要對在云中使用的應用、數據和資源負責。
總結
IoT 應用依賴以基于硬件的機制為基礎所建立起來的安全層,來實現加密和安全密鑰存儲。和任何聯網產品一樣,當物聯網設備連接云服務時,安全威脅可能存在于任何形式的交互過程當中。為了保護自身及其客戶,IoT 云提供商針對身份驗證和訪問權限管理制定了具體的要求。雖然提供商會提供關于此類要求及相關規格的詳細說明文檔,但開發人員還是有可能發現他們為實現安全連接所做的努力有時候會使資源暴露在風險當中,甚至適得其反地使其不可訪問。使用開發板和相關軟件,開發人員可以快速連接云服務,并快速設計物聯網應用原型,同時保證端對端安全。