物聯網平臺概覽 - Amazon, Microsoft, IBM IoT 解決方案概述 (完整版)

物聯網平臺概覽 - Amazon, Microsoft, IBM IoT 解決方案概述

最近研究了一些物聯網平臺技術資料,以做選型參考。腦子裏積累大量信息,便想寫出來做一些普及。作爲科普文章,力爭通俗易懂,不確保概念嚴謹性。我會給考據癖者提供相關英文鏈接,以便深入研究。

   —— 馮立超 HiwebFrank

亞馬遜、微軟、IBM 等雲計算廠商都在佈局物聯網。作爲平臺廠商,他們各自基於自己的雲計算大數據平臺,提出一套完善的物聯網體系構架和構建與開發工具。

作爲物聯網整體構架,可以簡要描述爲:將設備聯入雲平臺;存儲設備數據;進行設備信息管理;設備狀態數據監控及對設備進行控制、管理、運維;數據分析與展示;提供多種業務功能。

本系列文章將從如下幾方面分別描述:

  1. 概覽
  2. 設備
  3. 連接
  4. 平臺
  5. 安全
  6. 案例與參考文檔

1. 概 覽

亞馬遜、微軟、IBM等都給出了物聯網解決方案概念構架,下面暫以亞馬遜物聯網解決方案概念構架爲例,做簡要說明。
亞馬遜給出的物聯網解決方案體系構架圖如下:
亞馬遜物聯網解決方按構架

其大致描述如下:

設備利用本身的功能或軟件開發包SDK進行定製開發,連接到物聯網系統中;爲確保安全,設備需要驗證、授權、註冊等措施;一些不能直接接入的設備則需要通過設備網關接入;在雲平臺中,通過設備狀態數據緩存機制,保存設備最新狀態等信息,從而應用程序或其他設備可以讀取設備消息並與設備交互;通過規則引擎,構建物聯網應用程序,這些程序將收集、處理、分析設備數據並執行操作;同時,通過大數據分析,提供業務支持與決策。而各類數據處理,則通過雲平臺的各種計算服務、存儲服務得以實現。

2. 設 備

任何可以連接到網絡的物體,如溫度傳感器、火災監測設備、發動機、手環、汽車、鑽井、機器人、火星車、小貓小狗、冰箱空調洗碗機等,即所謂 物聯網 的“物”,Internet of Things 的“Things”。

設備可以很簡單,也可以很複雜。對於簡單設備,可能不能直接聯入互聯網,則需要通過設備網關連接;對於複雜智能設備,則可以通過物聯網操作系統(以前稱嵌入式操作系統)進行深度開發管理。

目前各廠商都推出自己的設備端系統,如亞馬遜的 Greengrass,微軟的 Windows 10 IoT,華爲的 LiteOS 等。這些系統使得智能設備有了強大的本地計算能力和安全性。

根據場景不同,各家對設備又有一些分類。微軟 Windows IoT Core 針對有頭和無頭設備(就是有沒有顯示器)有不同的內存要求。IBM 把設備分爲可管理設備和不可管理設備,即是否可安裝管理代理以對設備進行管控。

作爲躍躍欲試的技術狂熱者,搭建測試環境進行學習,什麼軟件/平臺都好說,沒設備就會一籌莫展。

爲了讓開發者儘快掌握相關技術、搭建測試環境,各家也是想盡了辦法。各自給出了軟件模擬設備,微軟Azure IoT案例中的一堆模擬溫溼度計,IBM 紅點模擬器 Node-RED device simulator(永遠的紅點,永遠的IBM)

對於微軟平臺,用Windows計算機即可,但總感覺不像真的。所以最新的樹莓派3可以安裝 Windows 10 Core,然後進行各種操作,具體點擊這裏
亞馬遜給出的最簡單設備是亞馬遜按鈕(記不記得此前吵了一段的你買個洗衣液送你個按鈕,下次沒洗衣液了就把這個按鈕按一下就自動下單了的新聞),以及一堆物聯網設備
關於設備,有很多細節值得探討,不再贅述。

3. 連 接

從物理連接的角度,有大量的底層技術,包括網線、WiFi、GPRS、3G / 4G / 4.5G、Bluetooth、Zigbee、RFID 以及正吵的 NB-IoT、LiTRA 等等,此不贅述。

對於協議,一般都主流支持 MQTT, HTTP, WebSockets。具體細節可點擊:

由於物聯網各種設備所處環境複雜,如室內、井下、隧道、甚至月球火星,很難保證鏈接的可靠性和持續性,這對應用系統的開發和使用帶來挑戰。
於是,大家想出來一個辦法(我估計是亞馬遜先想出來的,因爲我喜歡亞馬遜方案的完備性和文檔的完整易讀性(什麼邏輯)),就是在雲平臺上把設備最新的狀態數據緩存起來,設備和緩存交互,而應用程序只和這個緩存的數據打交道。這樣,應用程序就可以假設設備是永遠在線的了。

這個緩存數據,其實就是一個JSON文件,而亞馬遜給其取了一個好聽的名字:設備影子 Device Shadow
微軟嘛,好吧,你叫 Shadow,我就另想一個名字吧,嗯——,設備孿生 Device Twins ,(虧你想的出來)
IBM西裝革履職業一些,老老實實,就叫 設備最後事件緩存 Device Last Event Cache

這是一個很好的思路,這個影子孿生緩存設備,可以使應用系統更加高效、設置比設備更多的元數據及屬性、預置設備狀態、處理長時間工作流業務等等。

對於物聯網設備連接到雲端,需要解決很多問題,包括設備到雲/雲到設備的通信,如消息傳送、文件傳輸、請求響應方法;消息路由;設備元數據存儲檢索及設備狀態信息同步;通信安全與訪問控制;設備連接性監控及設備標識管理等等。各家都有自己的解決方案。

微軟比較清晰地提出一個專門的服務:IoT Hub,對海量物聯網設備與雲端解決放案之間提供可靠、安全的雙向通信。

微軟給出的 IoT Hub 概念示意圖如下,供參考:

Azure IoT Hub

4. 平 臺

4.1 平臺概述

由於物聯網的地域分佈廣、設備數量衆多的特點,物聯網解決方案必須藉助公有云平臺來實現。
物聯網解決方案須具備如下功能:

  • 從設備收集數據
  • 分析運行中的數據流
  • 存儲和查詢大型數據集
  • 實時和歷史數據可視化
  • 與後端業務系統集成
  • 管理設備

我們用一個簡單的圖示來說明物聯網解決方案構架,下圖是微軟給出的一個與廠商無關的物聯網解決方案通用示意構架

Generic IoT solution architecture

該簡化構架包括 設備連接數據處理與分析信息呈現 三個層面。

該構架中,物聯網設備收集數據並與雲網關交互;雲網關使其它後端服務可以處理這些數據,從雲網關,數據提交給其它業務應用程序或儀表板操作人員及其它展示設備。

4.1.1 設備連接

如何讓設備安全可靠地連接到解決方案後端,是物聯網解決方案所面臨的巨大挑戰,相比於其它系統,物聯網設備有如下一些特點:

  • 通常是無人操作的嵌入式系統甚至是沒有操作系統的設備
  • 可能部署到物理訪問成本高昂的遠程位置等各種部署場景
  • 可能無法通過其他方式來與設備交互,而只能通過解決方案後端來訪問
  • 供電及運算資源可能都有限
  • 網絡連接可能不穩定、緩慢或高成本
  • 可能需要使用專屬、自定義或行業特定的應用層協議
  • 可以使用大量常見的硬件和軟件平臺來創建

除上述特點之外,物聯網解決方案還必須考慮可擴展性、安全性和可靠性。傳統的技術如Web容器或消息傳送代理等不足以支撐這樣的需求。

爲此,物聯網平臺廠商都提出自己的解決方法,如微軟的 Azure IoT Hub 及 Azure IoT SDK 等。關於 Azure IoT Hub 請參見上一講相關內容。

有關設備連接及配置,微軟給出了非常詳細的教程,包括使用模擬設備、使用模擬網關、使用物理設備等,並針對使用 C、Node.js、Python 利用樹莓派搭建環境給出詳細的教程,具體可參見Connect Raspberry Pi to Azure IoT Hub
以下是該教程中的截圖:

4.1.2 數據處理與分析

在物聯網解決方案中,數據處理與分析主要交由在公有云上的後端服務進行,包括設備數據篩選、彙總、路由到其他服務等等。後端服務主要負責如下工作:

  • 接收來自設備的大規模數據,並確定如何處理和存儲這些數據
  • 必要時可以從雲端向設備發送數據或指令
  • 設備註冊、預配置及安全連接控制
  • 跟蹤設備狀態並監控設備活動
  • 存儲和分析設備歷史數據,從而實現設備預見性維護
  • 與設備進行交互,實現反饋控制等

當然,並不是所有的業務都必須交由雲端處理,例如一些必須及時響應的操作比如緊急剎車,這些處理及操作都必須在設備端直接進行;另外,設備也可以進行一些預處理,從而提高效率、降低數據傳輸量。

爲此,設備本身應該具備一些處理能力。

微軟的 Windows 10 IoT Core,提供了強大的設備端計算能力;

而亞馬遜的 Greengrass,則使物聯網設備可以運行 AWS Lambda 函數、同步設備數據以及與其他設備安全通信,甚至無需連接互聯網。Greengrass 可確保物聯網設備快速響應本地事件、運行時採用間歇性連接,並最大程度地降低將物聯網數據傳輸到雲的成本。

華爲的 LiteOS,則強調輕量級、低功耗(一個鈕釦電池用好幾年)、快速啓動(毫秒級)及響應(納秒級)、多種連接協議(廣域/局域)等特性。

另外,一些物聯網設備,也可以通過完全自主研發的芯片,實現相關數據採集與處理。
比如圖像火災監測設備,可以將圖像火災分析算法集成在設備芯片中,由設備芯片中的算法進行判斷,僅將是否發生火災的判定結果傳輸到雲端。
而對於較複雜的圖像、或者誤判圖像,則將圖像數據及其設備端判定結果傳到雲端,通過機器學習,逐步改進算法,提高圖像處理能力,並通過物聯網對設備進行升級操作。

4.1.3 信息呈現和業務連接

信息呈現和業務連接層 用於展示和操控從設備收集的數據。它可讓用戶查看和分析從其設備收集的數據。 這些視圖可以採用儀表板或 BI 報表的格式,以顯示歷史數據和/或接近實時的數據。

此層還可實現物聯網解決方案與現有業務應用程序的集成,以連接企業業務流程或工作流。 例如,圖像火災監測系統,在發現監測設備故障信息後,通過與維護服務商現有的運維計劃系統集成,可以預約工程師到現場進行檢查。

下圖是微軟提供的一個物聯網工廠的應用界面樣例。
在該界面中,儀表板左側展示了生產線細節信息。如儀表板左側第一條,提示機械臂嚴重警告,而在儀表板中部的模擬界面中,同樣用紅色標出機械臂警告位置。在右側的報警欄,列出不同時間點的警告信息,如機械臂溫度警告等。而在儀表板下方,則展示該條生產線的整體效率信息。

MSConnectedFactory

4.2 微軟物聯網解決方案構架

下圖是微軟物聯網解決方案的較詳細的構架圖

MicrosoftIoTArch

微軟的物聯網解決方案平臺,通過微軟的公有云 Azure 實現,即 微軟物聯網套件 Azure IoT Suite。設備通過 Azure IoT Hub 註冊和接入,然後可以使用微軟公有云 Azure 的各種強大的數據處理、存儲、分析、機器學習能力,構建所需的各類物聯網業務。

微軟物聯網解決方案通常至少會使用到如下服務:

  • Azure IoT Hub: 該服務提供設備到雲和雲到設備的消息傳送功能,並充當雲和其他主要 IoT 套件服務的網關。 該服務使得可以從大量設備接收消息,並將命令發送給設備。 使用該服務,還能夠管理設備,例如,可以配置、重啓連接到 Azure IoT Hub 的設備,或對其執行恢復出廠設置操作。
  • Azure Stream Anzlytics: 流分析提供運行數據分析。 該服務處理傳入遙測數據、執行聚合以及檢測事件。 以及處理包含元數據或來自設備的命令響應的信息消息。 解決方案使用流分析來處理設備消息,並將這些消息傳送給其他服務。
  • Azure StorageAzure DocumentDB: Azure 存儲和 Azure DocumentDB 提供數據存儲功能。 解決方案使用 Blob Storage 來存儲設備遙測數據並使其可用於分析;使用 DocumentDB 來存儲設備元數據,以及啓用解決方案的設備管理功能。
  • Azure Web AppMicrosoft Power BI: 提供數據可視化功能。 藉助 Power BI 的靈活性,可以快速生成針對具體業務要求的交互式儀表板。

微軟還給出了一些預配置解決方案和相關演示案例,有興趣的讀者可以點擊如下鏈接,通過實際操作了解上面截圖中的工廠物聯網使用場景:http://www.microsoftazureiotsuite.com/demos/connectedfactory

4.3 亞馬遜物聯網解決方案構架

亞馬遜給出的構架如下圖所示:
How AWS IoT Works
亞馬遜物聯網解決方案當然強調其公有云平臺 AWS,而最受其推崇的,自然是當下正熱的 Serverless 構架的 AWS Lambda。
亞馬遜物聯網解決方案至少用到如下 AWS 服務:

(看看人家,做那麼大的生意,本星球/本星系第一啊,啥都謙稱爲 Simple 簡單啥啥啥,另外,包括現在 IT 運維領域最重要的 SNMP 簡單網絡管理協議、電子郵件的 SMTP 簡單郵件傳輸協議......;看看我們,動輒 皇家、擎天、至尊,汗顏啊!慚愧啊!)

4.4 IBM 物聯網解決方案構架

IBM 的物聯網解決方案名爲 Watson IoT Platform,(永遠的沃森)。其構架圖如下所示:
Watson IoT Platform

IBM 物聯網解決方案基於 IBM 公有云平臺 Bluemix,涉及到的服務至少包括:

  • IBM Cloudant NoSQL DB:用於存儲和訪問設備數據。
  • IBM Message Hub:爲實時數據提供低延遲、可擴展的、高吞吐量的消息總線。
  • IBM Blockchain 集成:對於特定領域,可以集成 IBM 區塊鏈服務,以符合特定的商業規則要求。
  • 儀表板:利用 Bulemix 提供的數據可視化儀表板,可以可視化展示設備狀態數據,提供 BI 功能。

IBM給出了一個簡單教程,可以快速搭建物聯網測試環境,可以參見https://console.ng.bluemix.net/docs/services/IoT/getting_started/quickstart/index.html#quickstart

5. 安 全

5.1 物聯網安全通述

我想用遙控器把隔壁鄰居家的電視給關了!
不知是否可以,但至少,我拿着一個空調遙控器可以到各個房間開關空調。

如果物聯網設備沒有任何安全措施,那麼狀況將無法設想。

如何做到全方位安全?

微軟早在2003年就提出了可信賴的計算 Trustworthy Computing 和基於 STRIDE 網絡安全風險模型的縱深防禦 Defence in Depth 理念。
這些理念並不是針對微軟產品及其解決方案的,而是被業界充分認可的通用的理念。
我們將根據這些理念與模型,爲大家展開討論物聯網安全。

微軟基於上述網絡安全模型與理念,給出了通用的 物聯網安全構架 和 物聯網安全最佳實踐。具體信息請參見:

在上述資料中,微軟對物聯網的物理安全層面進行了細分,將其分爲 設備、現場網關(Field Gateway)、雲網關 及 服務等多個分區Zone。指出各區域都是分離的信任邊界,每個分區都應有自己的數據安全、驗證、授權機制。

在這些分區之間數據與信息的傳輸都應考慮 [STRIDE]https://blogs.msdn.microsoft.com/larryosterman/2007/09/04/threat-modeling-again-stride/) 各種風險,即:

  • Spoofing 欺騙
  • Tampering 篡改
  • Repudiation 抵賴
  • Information disclosure 信息泄露
  • Denial of service 拒絕服務
  • Elevation of privilege 特權提升

微軟給出的物聯網安全構架示意圖如下所示:圖中紅色虛線框爲不同的分區Zone,紅色虛弧線則爲信任邊界。

MicrosoftIoTTrustBoundary

下圖是用微軟威脅建模工具所建立的數據流原理模型:

Data Flow Diagram model

關於上述模型的詳細信息,原文在 Internet of Things security architecture,中文可以參見 物聯網安全體系結構,這篇文檔好像是人翻譯的:),中文可讀。(謝謝Sunny Dengv-cchen

5.2 微軟 Azure IoT Suite 物聯網安全

具體到微軟自己的 Azure IoT Suite 物聯網部署構架,則主要包括如下三個安全領域:

  • 設備安全:在實際部署物聯網設備時,保護設備安全
  • 連接安全:確保物聯網設備和 Azure IoT Hub 之間數據傳輸的機密性和防篡改性
  • 雲安全:確保數據在雲中傳輸、移動和存儲時的安全

下圖給出微軟 Azure IoT 物聯網安全相關概念:
Securing the Azure IoT deployment

- 設備預配與驗證安全

微軟 Azure IoT Suite 使用兩種方法確保設備安全:

  • 爲每個設備提供唯一標識密鑰(安全令牌),設備可使用該密鑰與 IoT Hub 通信。
  • 使用設備內置 X.509 證書和私鑰作爲一種向 IoT Hub 驗證設備的方式。 此身份驗證方式可確保任何時候都無法在設備外部獲知設備上的私鑰,從而提供更高級別的安全性。

- IoT Hub 安全令牌

IoT Hub 使用安全令牌對設備和服務進行身份驗證,而不在網絡上發送密鑰。,安全令牌的有效期和範圍有限。 Azure IoT SDK 無需任何特殊配置即可自動生成令牌。 但在某些情況下,需要用戶生成並直接使用安全令牌。 包括 MQTT 、AMQP 或 HTTP 應用層協議的直接使用,以及令牌服務模式的實現。

- 連接安全

使用傳輸層安全性 (TLS) 標準來保護 IoT 設備和 IoT 中心之間的 Internet 連接安全。 Azure IoT 支持 TLS 1.2、TLS 1.1 和 TLS 1.0

- 雲安全

Azure IoT Hub 爲每個安全密鑰定義訪問控制策略。 它使用設備註冊表讀寫、服務連接、設備連接等權限,向每個 IoT Hub 的終結點授予訪問權限。
另外,在雲端的各種服務中,如 Azure DocumentDB、Azure Stream Analytics、Azure App Service、Logic App、Azure Blob Storage等服務,都應設置響應的安全權限配置。

5.3 亞馬遜 AWS 物聯網安全

亞馬遜同樣有一套完善的物聯網安全方案。
所連接的每臺設備必須擁有憑證才能訪問消息代理或物聯網設備影子服務。對於往返 AWS 物聯網的所有流量,都必須通過傳輸層安全性 (TLS) 進行加密。必須保證設備憑證的安全,以便安全地將數據發送到消息代理。數據到達消息代理後在 AWS IoT 和其他設備或 AWS 服務之間移動時,AWS 雲安全機制可爲數據提供保護。

下圖是亞馬遜物聯網安全與標識示意圖:
AmazonIoTSec

  • 我們需要管理設備上的設備憑證(X.509 憑證、AWS 憑證)及 AWS IoT 中的策略。將唯一身份分配給每臺設備並管理設備或設備組的權限。
  • 設備將按照 AWS IoT 連接模式使用所選身份(X.509 證書、IAM 用戶和組,或者 Amazon Cognito 身份)來建立安全連接。
  • AWS IoT 消息代理 針對賬戶內的所有操作執行身份驗證和授權。消息代理負責對設備執行身份驗證、安全地接收設備數據,以及支持通過策略授予設備的訪問權限。
  • AWS IoT 規則引擎 根據所定義的規則將設備數據轉發到其他設備和其他 AWS 服務。利用 AWS 訪問管理系統將數據安全地傳輸到最終目標。

AWS IoT 消息代理和設備影子服務利用傳輸層安全 TLS 對所有通信進行加密。TLS 用於確保受 AWS IoT 支持的應用程序協議(MQTT、HTTP)的保密性。
對於 MQTT,TLS 可將設備與代理之間的連接加密。AWS IoT 使用 TLS 客戶端身份驗證來識別設備。對於 HTTP,TLS 可將設備與代理之間的連接加密。身份驗證工作委派給 AWS Signature Ver. 4 執行。

5.4 IBM Watson IoT 物聯網安全

同樣,IBM Watson IoT 物聯網解決方案也包含完備的安全方案。
IBM Watson IoT Platform Security 一文中, 首先強調了安全性的合規性、驗證、授權、加密四各方面,並指出 Watson IoT Platform 以 Bluemix 爲基礎,而 Bluemix 基礎構架的安全性與可靠性是 Watson IoT Platform 的基石。

然後,IBM 像個學生一樣老老實實認認真真地道出他的安全方案。
ISO27001

首先,掏出證書。指出 Watson IoT Platform 獲得了 ISO 27001:2013 認證。

然後,在 Watson IoT Platform 構架圖的基礎上,分別講述瞭如下幾個方面:

  • 如何實現物聯網信息管理安全
  • 如何實現設備與應用程序憑據安全
  • 如何實現設備連接安全
  • 如何防止設備數據在設備之間泄露
  • 如何防止數據在組織之間泄露

上面每一方面,都有較詳細的描述和示意圖,此不一一列出,僅以下圖設備與應用程序憑據安全爲例供大家參考:
IBMIoTSec

另外,IBM 給出了安全風險管理建議,包括客戶端證書、組織規劃與安全策略、連接策略、黑白名單策略等。

總之,物聯網安全是一個重要的、同時也是複雜的問題。不僅僅包括物聯網特定的設備與構架,還牽涉到網絡安全及軟件開發安全的各個方面。需要在構架設計、開發、部署、運維、應用的各個方面確保安全與合規。

6. 案例與參考文檔

亞馬遜物聯網相關文檔及網址

微軟物聯網相關文檔及網址

微軟演示案例

微軟給出了幾個較直觀的演示案例,通過場景介紹及互動操作,可以瞭解不同場景的物聯網應用:

IBM 物聯網相關網址

總結

本文通過對亞馬遜、微軟、IBM 等公有云及物聯網領域領先的解決方案的簡要介紹與探討,簡單給出了物聯網整體解決方案的框架,希望能讓讀者對物聯網解決方案有一些宏觀的瞭解。也對於我們選擇國內公有云平臺構建自己的物聯網行業解決方案提供參考。
鑑於個人經驗有限及文章篇幅所束,錯誤偏頗之處在所難免,敬請諸位網友批評指正。

如需獲得本文全文,請訪問 https://github.com/HiwebFrank/Blogs/blob/master/IoTPlatformOverview-AboutAmazonMicrosoftIBMIoTSolutions.md

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章