久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

AWS物聯網中如何將設備安全地接入AWS IoT

149次閱讀
沒有評論

共計 4581 個字符,預計需要花費 12 分鐘才能閱讀完成。

這篇文章給大家介紹 AWS 物聯網中如何將設備安全地接入 AWS IoT,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

1 簡介

AWS IoT 解決方案是一個全托管的云平臺,使互聯設備可以輕松安全地與云應用程序及其他設備交互。AWS IoT 可以支持數十億太設備和數萬億條消息,并且可以對這些消息進行處理并將其安全可靠地路由至 AWS 終端節點和其他設備。AWS IoT 平臺支持您將設備連接到 AWS 服務和其他設備,保證數據和交互的安全,處理設備數據并對其執行操作,以及支持應用程序與即便處于離線狀態的設備進行交互。

使用 AWS IoT 的第一步是將設備連接到 AWS IoT Core 服務。AWS IoT 支持多種接入協議,身份認證方法和授權策略。

2 AWS IoT 支持的協議

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

2.1 HTTP 協議

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

2.2 MQTT 協議

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

2.3 MQTT over WEBSOCKET

MQTT over websocket 是基于 websocket 上的 MQTT 協議,使用 443 端口,在網絡環境可達性上比 MQTT 更有優勢,但是也相對復雜一些。

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

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

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

AWS IoT 支持的售前策略由 2 種,分別是 IAM policy 和 IoT policy。

4 準備工作

4.1 創建操作環境

在 aws 上創建一臺 EC2 服務器,創建的過程中,需要創建一個角色來訪問該 ec2

點擊 創建新的 IAM 角色

點擊 創建角色

選擇 AWS 產品 – EC2,點擊 下一步

選擇 AdministratorAccess,點擊 下一步,標簽部分可以忽略,直接點擊 下一步

輸入指定角色名稱,創建角色,再回到之前創建 EC2 的界面,刷新角色

然后繼續 ec2 相關配置,直至創建成功(具體步驟略)。

4.2 配置操作環境

遠程登錄到創建的 ec2 服務器(具體過程略)

因為操作通過 AWS CLI 進行,而我創建是 ec2 中沒有安裝好 CLI,所以需要自己安裝,安裝的步驟參見 https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/install-linux.html#install-linux-awscli,具體安裝過程省略,可能會需要經過多次嘗試,不同的操作系統版本會有微笑差異,自己體會吧。最終 CLI 安裝成功,如下圖:

配置 AWS CLI,其中的區域我選擇的是美東 - 弗吉尼亞,所以填 us-east-1,輸出格式通常為 json。

準備操作目錄,現在創建一個新的操作目錄 awsiotaccessdemo。

AWS 物聯網中如何將設備安全地接入 AWS IoT

然后下載 aws iot 的 Root CA 證書。設備連接應該優先選擇 ATS 端點,使用 ATS 的 CA 文件,因為后面的自定義身份驗證暫時不支持 ATS 端點,所以也需要下載 VeriSign 端點的 CA 證書。

執行命令 wgethttps://www.amazontrust.com/repository/AmazonRootCA1.pem

AWS 物聯網中如何將設備安全地接入 AWS IoT

再執行命令 wgethttps://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem

AWS 物聯網中如何將設備安全地接入 AWS IoT

安裝依賴的軟件包,執行如下命令

sudo yum install python-pip jq -y

pip install boto3 –user

pip install AWSIoTPythonSDK –user

pip install flask –user

pip install paho-mqtt –user

然后獲取 Account Id,執行命令 account_id=`aws sts get-caller-identity | jq .Account|sed s/ //g `

獲取 Account 的 IoT Endpoint 前綴,執行命令 endpoint_prefix=`aws iot describe-endpoint \

| jq .endpointAddress | sed s/ //g | awk -F . {print $1} `

再把剛剛獲取的 Account Id 和 Endpoint 前綴配置到環境變量中,執行如下命令:

echo export account_id=$account_id

echo export endpoint_prefix=$endpoint_prefix ~/.bashrc

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

登錄 AWS IoT 控制臺,點擊“測試”條目,輸入訂閱主題“IoTDemo/#”

AWS 物聯網中如何將設備安全地接入 AWS IoT

點擊“訂閱主題”,后續所有 IoT Core 收到的消息都會在下方顯示出來。

5 使用 IAM 身份認證接入

前面已經列出了 aws 支持的設備接入認證方式,本文將嘗試以不同的身份驗證方式接入。

用戶可以使用 IAM 提供身份來認證設備。設備需要預置或者通過其他方式獲取 security

credential,在使用 SigV4 的簽名算法對請求進行簽名。AWS

IoT 服務則通過簽名來認證設備的身份,通過身份認證后,IoT 再根據身份擁有的 IAM Policy 來對請求進行鑒權。

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

AWS 物聯網中如何將設備安全地接入 AWS IoT

5.1 創建一個 IAM 用戶,IoTDeviceUser

輸入命令 aws iam create-user –user-name IoTDeviceUser

為 IoTDeviceUser 用戶創建 AccessKey

輸入命令 aws iam create-access-key \

  –user-name IoTDeviceUser /tmp/IoT_demo_access_key

記錄下 AccessKeyId 和 SecretAccessKey,輸入以下命令:

AccessKeyId=`cat /tmp/IoT_demo_access_key| jq .AccessKey.AccessKeyId| sed s/ //g `

SecretAccessKey=`cat /tmp/IoT_demo_access_key| jq .AccessKey.SecretAccessKey| sed s/ //g `

登錄到 IAM 控制臺,查看剛剛創建的 IAM 用戶

AWS 物聯網中如何將設備安全地接入 AWS IoT

從上圖可見成功創建了 IoTDeviceUser 用戶,但是還沒有指定策略。其實 IAM 用戶的創建及策略操作等都可以在控制臺進行,而且更方便,前面采用 CLI 只是為了體驗一下操作。

5.2 設備使用 HTTP 協議接入

1)為設備創建 IAM Policy,輸入命令:

device_IAM_http_policy_arn=`aws iam create-policy \

–policy-name IoTDeviceIAMHttpPolicy \

–policy-document {

  \ Version\ : \ 2012-10-17\ ,

  \ Statement\ : [

  {

  \ Sid\ : \ VisualEditor0\ ,

  \ Effect\ : \ Allow\ ,

  \ Action\ : \ iot:Publish\ ,

  \ Resource\ : [

  \ arn:aws:iot:us-east-1:${account_id}:topic/IoTDemo/device_IAM_http\

  ]

  }

  ]

}

2)將 IAM Policy 綁定到 IAM 用戶,執行命令

aws iam attach-user-policy –user-name IoTDeviceUser \

–policy-arn ${device_IAM_http_policy_arn}

把 IAM Policy 綁定到 IAM 用戶,執行命令 aws iam attach-user-policy –user-name IoTDeviceUser \

–policy-arn ${device_IAM_http_policy_arn}

3)生成模擬設備程序

執行如下命令:

cat -EOF ~/awsIoTAccessDemo/device_IAM_http.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import boto3

import argparse

import json

# 獲取參數

parser = argparse.ArgumentParser(description= Send data to IoT Core)

parser.add_argument(–data , default= data from device_IAM_http ,

  help= data to IoT core topic )

parser.add_argument(–AccessKeyId , required=True,

  help= AccessKeyId )

parser.add_argument(–SecretAccessKey , required=True,

  help= SecretAccessKey )

args = parser.parse_args()

data = args.data

access_key_id = args.AccessKeyId

secret_access_key = args.SecretAccessKey

device_name = device_IAM_http

region = us-east-1

topic = IoTDemo/ +device_name

iot_data_client = boto3.client(iot-data ,region_name=region,aws_access_key_id=access_key_id,aws_secret_access_key=secret_access_key)

response = iot_data_client.publish(

  topic=topic,

  qos=0,

  payload=json.dumps({source :device_name, data :data})

)

EOF

  注意:代碼中的區域要填寫正確。

4)運行模擬設備程序

python device_IAM_http.py –data data from device IAM http. \

–AccessKeyId ${AccessKeyId} –SecretAccessKey ${SecretAccessKey}

5)再去 IoT 控制臺查看收到的消息

AWS 物聯網中如何將設備安全地接入 AWS IoT

由上圖可見消息來自剛剛創建的.py 文件,消息內容也正是文件中的字段,由此證明設備發送消息成功。

后續我將繼續嘗試用不同的身份認證和不同的協議接入。

關于 AWS 物聯網中如何將設備安全地接入 AWS IoT 就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計4581字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 弥渡县| 泰来县| 托里县| 平凉市| 沧源| 阜平县| 米易县| 大埔县| 金川县| 嘉兴市| 六枝特区| 阜平县| 濉溪县| 雷州市| 花莲县| 夏邑县| 镇坪县| 油尖旺区| 洛宁县| 柳江县| 开江县| 同德县| 武清区| 黎川县| 浦城县| 咸宁市| 阳新县| 乌兰浩特市| 新河县| 达日县| 安岳县| 高唐县| 黑山县| 三江| 襄樊市| 阳西县| 高平市| 林芝县| 汤原县| 巧家县| 砀山县|