中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-12-21 14:46:05 來源:億速云 閱讀:223 作者:柒染 欄目:云計算

這篇文章給大家介紹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。

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

4 準備工作

4.1 創建操作環境

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

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

點擊"創建新的IAM角色"

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

點擊"創建角色"

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

選擇"AWS產品"->"EC2",點擊"下一步"

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

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

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

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

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

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

4.2 配置操作環境

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

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

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

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

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

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

準備操作目錄,現在創建一個新的操作目錄 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就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

aws
AI

正安县| 镇康县| 太谷县| 房产| 马龙县| 波密县| 阳新县| 芜湖市| 晋州市| 慈利县| 五寨县| 始兴县| 化德县| 胶州市| 塔河县| 江安县| 哈密市| 忻州市| 建湖县| 乐昌市| 汕头市| 南江县| 孝昌县| 花垣县| 凤阳县| 九寨沟县| 璧山县| 利川市| 宣城市| 宁安市| 张家口市| 赞皇县| 苏尼特右旗| 贡山| 广州市| 宝应县| 台湾省| 聊城市| 屏东市| 咸丰县| 嘉义市|