门头沟手把手玩转物联网丨第一集:如何把设备安全的接入AWS IoT
- 作者:佚名
- 发表时间:2022年10月17日下午12:00
- 来源:未知
简介
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 China 管理控制台,然后在 AWS 服务框输入和选择 EC2 服务。
启动一个 EC2 虚机,选择 Amazon Linux 2 AMI(HVM), SSD Volume Type。
在实例类型步骤,直接选择下一步。
在配置实例详细信息步骤,确保自动分配共有 IP 选择了启用,然后点击创建新的 IAM 角色。
在弹出的窗口中选择创建角色,然后依次选择 AWS 服务,EC2,点击下一步。
在 Attach 权限策略步骤,勾选 AdministratorAccess 策略,点击点一步。
添加标签步骤直接选择下一步。
角色名称处输入
AWSIoTDeviceAccessWorkshop,点击创建角色。
返回启动虚机的窗口,确保 IAM 角色选择刚才创建的
AWSIoTDeviceAccessWorkshop。
依次点击下一步:添加存储,下一步:添加标签,下一步:配置安全组。
在配置安全组步骤,确保打开了 22 端口。
依次点击审核和启动,启动。
依次选择创建新密钥对,输入新密钥对的名称
AWSIoTDeviceAccessWorkshop,点击下载密钥对并保存密钥文件。最后点击启动实例。
在启动状态窗口点击实例 ID。
选中实例,并点击连接。根据弹出的窗口的指导,SSH连接到操作环境中。
- 配置操作环境
配置 AWS CLI 权限。
AWS Access Key ID 和 AWS Secret Access Key 留空,Default region name 配置为 cn-north-1,Default output format 设置为 json。
准备操作目录。
下载 AWS IoT 的 Root CA 文件。
设备连接应该优先选择 ATS 端点,使用 ATS 的 CA 文件。但是由于自定义身份验证暂时不支持 ATS 端点,所以也需要下载 VeriSign 端点的 CA 证书。
安装倚赖的软件。
获取 Account Id。
获取 Account 的 IoT Endpoint 前缀。
把 Account Id 和 IoT 的 Endpoint 前缀配置到环境变量中。
- 配置 IoT消息接收监控页面
进入 AWS IoT 服务的控制台。
在 AWS IoT 控制台中,依次点击测试,订阅主题,在订阅主题框里输入 “IoTDemo/#”,然后点击订阅主题。
后续所有的 AWS IoT Core 收到的消息都会在下方的空白处显示出来。这可以作为设备发送消息成功的验证。
设备使用IAM 身份认证接入
您可以使用 IAM 提供的身份来认证设备。设备需要预置或者通过其他方式获取 Security Credential,再使用 SigV4 的签名算法对请求进行签名。AWS IoT 服务则通过签名来认证设备的身份。通过身份认证后,AWS IoT 再根据身份拥有的 IAM Policy来对请求进行鉴权。IAM 身份认证方式简单易用,但是安全性较差,适用于测试等非正式场景。
IAM 身份认证方式示意图如下图:
- 创建 IAM身份和权限
首先,创建一个 IAM 用户,IoTDeviceUser
为 IoTDeviceUser 用户创建 Access Key。
记录下 AccessKeyId 和 SecretAccessKey。
- 设备使用 HTTP 协议接入
为设备创建 IAM Policy。
把 IAM Policy 绑定 IAM 用户。
生成设备模拟程序。
运行设备模拟程序。
然后在第 4.3 章节打开的控制台中可以看到 AWS IoT 收到的消息。后面的场景类似,不再赘述。
- 设备使用MQTT OVER WEBSOCKET 接入
为设备创建 IAM Policy。
把 IAM Policy 绑定 IAM 用户。
生成设备模拟程序。
运行设备模拟程序。
此设备模拟程序会一直运行,接受输入的数据,发送到 AWS IoT Core,同时也订阅自己发送消息的 topic。
输入要发送到 AWS IoT 的消息,如 “data from device IAM websocket.”,设备会接收到自己发送的这个消息。同时,在4.3章节中打开的控制台中也可以看到此消息。
执行 Ctrl+C 停止程序。
资源清理(可选)
- 门头沟物联网卡发货现场视频(物联网卡能看视频电影连续剧吗) 2024-12-22 04:00:04
- 门头沟物联网卡可以个人实名吗(物联卡实名认证有影响吗) 2024-12-23 00:00:08
- 门头沟物联网卡可以做什么(网上的零月租流量卡是物联卡吗 使用物联卡有什么风险) 2024-12-23 00:00:12
- 门头沟物联网卡可以申请什么(物联网卡和普通手机卡有什么区别) 2024-12-24 04:00:10
- 门头沟物联网卡可以退卡退钱(物联卡不退钱怎么投诉) 2024-12-24 16:00:05
- 门头沟物联网卡号是13位(物联卡13位数怎么用at命令查询) 2024-12-25 12:00:11
- 门头沟物联网卡号查询剩余流量(移动的物联卡怎么查询余额和流量和交费) 2024-12-25 18:00:17
- 门头沟物联网卡咋取消套餐包(物联网卡怎么取消实名认证) 2024-12-26 16:00:06
- 门头沟物联网卡和sim卡(什么是非物联卡) 2024-12-26 20:00:10
- 门头沟物联网卡和正常卡的区别(物联网卡和普通手机卡有什么区别) 2024-12-27 08:00:09
- 门头沟物联网卡只能频段用吗(物联网卡可以买来用在手机吗) 2024-12-22 20:00:04
- 门头沟物联网卡可以放哪里买的(在哪里买物联网卡正规) 2024-12-23 16:00:08
- 门头沟物联网卡可以永久使用吗(物联卡能永久使用吗) 2024-12-23 20:00:16
- 门头沟物联网卡号忘了怎么办(爱物联网流量卡号码忘记怎么充费) 2024-12-25 12:00:05
- 门头沟物联网卡号段都哪些(物联网卡号段有哪些 移动联通电信物联卡号段差别) 2024-12-26 00:00:18
- 门头沟物联网卡号码保护期(物联卡实名认证有影响吗) 2024-12-26 00:00:36
- 门头沟物联网卡号私营通用吗(物联网卡卡号是什么) 2024-12-26 06:00:11
- 门头沟物联网卡号类型(物联网卡卡号是什么) 2024-12-26 08:00:07
- 门头沟物联网卡和手机卡区别(物联网卡和普通手机卡有什么区别) 2024-12-27 04:00:07
- 门头沟物联网卡和物联网终端(物联网卡是正规卡吗) 2024-12-27 12:00:36