02.27 手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

簡介

AWS IoT 解決方案是一個全託管的雲平臺,使互聯設備可以輕鬆安全地與雲應用程序及其他設備交互。AWS IoT 可支持數十億臺設備和數萬億條消息,並且可以對這些消息進行處理並將其安全可靠地路由至 AWS 終端節點和其他設備。AWS IoT 平臺支持您將設備連接到 AWS 服務和其他設備,保證數據和交互的安全,處理設備數據並對其執行操作,以及支持應用程序與即便處於離線狀態的設備進行交互。由於 AWS IoT 與 AI 服務集成,您也可以使設備更智能。AWS IoT 還提供最全面的安全功能,以便您能夠創建預防性安全策略,並及時對潛在安全問題做出響應。

使用 AWS IoT 的第一步是將設備連接到 AWS IoT Core 服務。AWS IoT 支持多種接入協議,身份認證方法和授權策略。 這些不同的協議,認證和授權方式有多種有效的組合方式。您可以使用任意一種有效的組合方式將您的設備接入到 AWS IoT。

本系列文章首先介紹了這些協議,認證和授權方式的原理和細節,以及其分別所適應的場景,然後介紹了 AWS IoT 支持的所有有效的連接組合方式。每種支持的組合方式都提供了模擬設備的參考代碼,和運行模擬設備連接到 IoT 的步驟。注:模擬設備連接到 AWS China 的北京 Region。



AWS IoT支持的協議

設備要接入 AWS IoT,首先要使用 AWS IoT 支持的協議來跟 IoT 平臺交互。

  • HTTP協議

Http 協議是互聯網中最為常見的協議。Http 協議下支持後面提到所有的認證和授權的方式。但是在物聯網的場景中,它也有著協議開銷比較大等缺點,另外 Http 只有請求響應的模式,不支持物聯網場景中非常重要的訂閱模式,不能支持下行命令的下發。

注:AWS IoT 只支持 Https 加密傳輸。

  • MQTT 協議

MQTT 協議是物聯網場景中使用最為廣泛的協議,具有協議開銷小,支持發佈訂閱等所有模式的優點。

  • MQTT OVER WEBSOCKET

MQTT over Websocket 是基於 Websocket 上的 MQTT 協議,也具備 MQTT 協議的優點,另外它使用了 443 的端口,在網絡環境可達性上比MQTT 更有優勢,但是也相對更為複雜一些。

AWS IoT 支持的認證和授權方式

設備接入 AWS IoT 的時候,必須要進行認證,確認設備的合法身份。通過認證後,還需要對設備的請求進行鑑權,只有經過授權的請求才會被 AWS IoT 接受。不同的設備認證方式,其授權方式也可能會有所不同。

AWS IoT 支持的認證方式有四種,分別是 IAM 身份,Amazon Cognito 身份,X.509 證書,和自定義身份驗證。

AWS IoT 支持的授權策略有兩種,分別是 IAM Policy 和 IoT Policy。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

準備工作

  • 創建操作環境

登陸 AWS China 管理控制檯,然後在 AWS 服務框輸入和選擇 EC2 服務。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

啟動一個 EC2 虛機,選擇 Amazon Linux 2 AMI(HVM), SSD Volume Type。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

在實例類型步驟,直接選擇下一步。

在配置實例詳細信息步驟,確保自動分配共有 IP 選擇了啟用,然後點擊創建新的 IAM 角色。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

在彈出的窗口中選擇創建角色,然後依次選擇 AWS 服務,EC2,點擊下一步。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

在 Attach 權限策略步驟,勾選 AdministratorAccess 策略,點擊點一步。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

添加標籤步驟直接選擇下一步。

角色名稱處輸入 AWSIoTDeviceAccessWorkshop,點擊創建角色。

返回啟動虛機的窗口,確保 IAM 角色選擇剛才創建的 AWSIoTDeviceAccessWorkshop。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

依次點擊下一步:添加存儲,下一步:添加標籤,下一步:配置安全組。

在配置安全組步驟,確保打開了 22 端口。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

依次點擊審核和啟動,啟動。

依次選擇創建新密鑰對,輸入新密鑰對的名稱 AWSIoTDeviceAccessWorkshop,點擊下載密鑰對並保存密鑰文件。最後點擊啟動實例。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

在啟動狀態窗口點擊實例 ID。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

選中實例,並點擊連接。根據彈出的窗口的指導,SSH連接到操作環境中。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT


  • 配置操作環境

配置 AWS CLI 權限。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

AWS Access Key ID 和 AWS Secret Access Key 留空,Default region name 配置為 cn-north-1,Default output format 設置為 json。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

準備操作目錄。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

下載 AWS IoT 的 Root CA 文件。

設備連接應該優先選擇 ATS 端點,使用 ATS 的 CA 文件。但是由於自定義身份驗證暫時不支持 ATS 端點,所以也需要下載 VeriSign 端點的 CA 證書。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

安裝倚賴的軟件。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

獲取 Account Id。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

獲取 Account 的 IoT Endpoint 前綴。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

把 Account Id 和 IoT 的 Endpoint 前綴配置到環境變量中。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

  • 配置 IoT消息接收監控頁面

進入 AWS IoT 服務的控制檯。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

在 AWS IoT 控制檯中,依次點擊測試,訂閱主題,在訂閱主題框裡輸入 “IoTDemo/#”,然後點擊訂閱主題。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

後續所有的 AWS IoT Core 收到的消息都會在下方的空白處顯示出來。這可以作為設備發送消息成功的驗證。

設備使用IAM 身份認證接入

您可以使用 IAM 提供的身份來認證設備。設備需要預置或者通過其他方式獲取 Security Credential,再使用 SigV4 的簽名算法對請求進行簽名。AWS IoT 服務則通過簽名來認證設備的身份。通過身份認證後,AWS IoT 再根據身份擁有的 IAM Policy來對請求進行鑑權。IAM 身份認證方式簡單易用,但是安全性較差,適用於測試等非正式場景。

IAM 身份認證方式示意圖如下圖:

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

  • 創建 IAM身份和權限

首先,創建一個 IAM 用戶,IoTDeviceUser

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

為 IoTDeviceUser 用戶創建 Access Key。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

記錄下 AccessKeyId 和 SecretAccessKey。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT


  • 設備使用 HTTP 協議接入

為設備創建 IAM Policy。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

把 IAM Policy 綁定 IAM 用戶。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

生成設備模擬程序。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

運行設備模擬程序。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

然後在第 4.3 章節打開的控制檯中可以看到 AWS IoT 收到的消息。後面的場景類似,不再贅述。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT


  • 設備使用MQTT OVER WEBSOCKET 接入

為設備創建 IAM Policy。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

把 IAM Policy 綁定 IAM 用戶。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

生成設備模擬程序。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

運行設備模擬程序。

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT

此設備模擬程序會一直運行,接受輸入的數據,發送到 AWS IoT Core,同時也訂閱自己發送消息的 topic。

輸入要發送到 AWS IoT 的消息,如 “data from device IAM websocket.”,設備會接收到自己發送的這個消息。同時,在4.3章節中打開的控制檯中也可以看到此消息。

執行 Ctrl+C 停止程序。


資源清理(可選)

手把手玩轉物聯網丨第一集:如何把設備安全的接入AWS IoT


分享到:


相關文章: