手把手玩转物联网丨第一集:如何把设备安全的接入 Amazon IoT

物联网
Amazon EC2
0
0
{"value":"\n### **简介** \n\nAmazon Web Services IoT 解决方案是一个全托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互。Amazon Web Services IoT 可支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 Amazon Web Services 终端节点和其他设备。Amazon Web Services IoT 平台支持您将设备连接到 Amazon Web Services 服务和其他设备,保证数据和交互的安全,处理设备数据并对其执行操作,以及支持应用程序与即便处于离线状态的设备进行交互。由于 Amazon Web Services IoT 与 AI 服务集成,您也可以使设备更智能。Amazon Web Services IoT 还提供最全面的安全功能,以便您能够创建预防性安全策略,并及时对潜在安全问题做出响应。\n\n\n\n使用 Amazon Web Services IoT 的第一步是将设备连接到 Amazon Web Services IoT Core 服务。Amazon Web Services IoT 支持多种接入协议,身份认证方法和授权策略。 这些不同的协议,认证和授权方式有多种有效的组合方式。您可以使用任意一种有效的组合方式将您的设备接入到 Amazon Web Services IoT。\n\n\n\n本系列文章首先介绍了这些协议,认证和授权方式的原理和细节,以及其分别所适应的场景,然后介绍了 Amazon Web Services IoT 支持的所有有效的连接组合方式。每种支持的组合方式都提供了模拟设备的参考代码,和运行模拟设备连接到 IoT 的步骤。注:模拟设备连接到 Amazon Web Services China 的北京 Region。\n\n<video src=\\"https://dev-media.amazoncloud.cn/cfc0bd0a62564eec9582d24e6b0d9759_0bf2myaaiaaaf4ao4vyogzpfazwdartaabaa.f10002.mp4\\" class=\\"manvaVedio\\" controls=\\"controls\\" style=\\"width:160px;height:160px\\"></video>\n\n### **Amazon Web Services IoT支持的协议**\n\n设备要接入 Amazon Web Services IoT,首先要使用 Amazon Web Services IoT 支持的协议来跟 IoT 平台交互。\n\n\n### **HTTP协议**\n\nHttp 协议是互联网中最为常见的协议。Http 协议下支持后面提到所有的认证和授权的方式。但是在物联网的场景中,它也有着协议开销比较大等缺点,另外 Http 只有请求响应的模式,不支持物联网场景中非常重要的订阅模式,不能支持下行命令的下发。\n\n注:Amazon Web Services IoT 只支持 Https 加密传输。\n\n### **MQTT 协议**\n\n\nMQTT 协议是物联网场景中使用最为广泛的协议,具有协议开销小,支持发布订阅等所有模式的优点。\n\n\n### **MQTT OVER WEBSOCKET**\n\nMQTT over Websocket 是基于 Websocket 上的 MQTT 协议,也具备 MQTT 协议的优点,另外它使用了 443 的端口,在网络环境可达性上比MQTT 更有优势,但是也相对更为复杂一些。\n\n### **Amazon Web Services IoT 支持的认证和授权方式**\n\n设备接入 Amazon Web Services IoT 的时候,必须要进行认证,确认设备的合法身份。通过认证后,还需要对设备的请求进行鉴权,只有经过授权的请求才会被 Amazon Web Services IoT 接受。不同的设备认证方式,其授权方式也可能会有所不同。\n\nAmazon Web Services IoT 支持的认证方式有四种,分别是 IAM 身份,[Amazon Cognito](https://aws.amazon.com/cn/cognito/?trk=cndc-detail) 身份,X.509 证书,和自定义身份验证。\n\nAmazon Web Services IoT 支持的授权策略有两种,分别是 IAM Policy 和 IoT Policy。\n\n![image.png](https://dev-media.amazoncloud.cn/2c717ef96a9b44339611b13bbe67995b_image.png)\n\n\n## **准备工作**\n\n\n### **创建操作环境**\n\n登陆 Amazon Web Services China 管理控制台,然后在 Amazon Web Services 服务框输入和选择 EC2 服务。\n\n![image.png](https://dev-media.amazoncloud.cn/0497a65d1ad5430eb89b252650b69d71_image.png)\n\n启动一个 EC2 虚机,选择 Amazon Linux 2 AMI(HVM), SSD Volume Type。\n\n![image.png](https://dev-media.amazoncloud.cn/e7a8ee74b8a0413096ec0a3e77367037_image.png)\n\n在实例类型步骤,直接选择下一步。\n\n在配置实例详细信息步骤,确保自动分配共有 IP 选择了启用,然后点击创建新的 IAM 角色。\n\n![image.png](https://dev-media.amazoncloud.cn/2bfd0a8a494c41a5aeff7707c920436e_image.png)\n\n在弹出的窗口中选择创建角色,然后依次选择 Amazon Web Services 服务,EC2,点击下一步\n\n![image.png](https://dev-media.amazoncloud.cn/b4852f74fda64901be4ec96f7234e92a_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/c1634a32fc0e415aae77403e400ab6c6_image.png)\n\n在 Attach 权限策略步骤,勾选 AdministratorAccess 策略,点击点一步。\n\n![image.png](https://dev-media.amazoncloud.cn/0321bc7a807b4bea841e4628d4bb9e59_image.png)\n\n添加标签步骤直接选择下一步。\n\n角色名称处输入 Amazon Web Services IoTDeviceAccessWorkshop,点击创建角色。\n\n返回启动虚机的窗口,确保 IAM 角色选择刚才创建的 Amazon Web Services IoTDeviceAccessWorkshop。\n\n![image.png](https://dev-media.amazoncloud.cn/ecddac12fb0f4fe48d3bf9dfaa979162_image.png)\n\n依次点击下一步:添加存储,下一步:添加标签,下一步:配置安全组。\n\n在配置安全组步骤,确保打开了 22 端口。\n\n![image.png](https://dev-media.amazoncloud.cn/322602f5a24947af8d83a5aa7a824ec7_image.png)\n\n依次点击审核和启动,启动。\n\n依次选择创建新密钥对,输入新密钥对的名称 Amazon Web Services IoTDeviceAccessWorkshop,点击下载密钥对并保存密钥文件。最后点击启动实例。\n\n![image.png](https://dev-media.amazoncloud.cn/1cbb696ae1314d6b95f5611f7573aa31_image.png)\n\n在启动状态窗口点击实例 ID。\n\n![image.png](https://dev-media.amazoncloud.cn/6f15eff9c274479ca8af951f08eaddbc_image.png)\n\n选中实例,并点击连接。根据弹出的窗口的指导,SSH连接到操作环境中。\n\n![image.png](https://dev-media.amazoncloud.cn/15b5ecc7b93546259efb668363015563_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/0daa050d706743ce999e4d99844ab2bf_image.png)\n\n### **配置操作环境**\n\n配置 Amazon Web Services CLI 权限。\n\n![image.png](https://dev-media.amazoncloud.cn/445430779ef34531bf8728257d8dcceb_image.png)\n\nAmazon Web Services Access Key ID 和 Amazon Web Services Secret Access Key 留空,Default region name 配置为 cn-north-1,Default output format 设置为 json。\n\n![image.png](https://dev-media.amazoncloud.cn/406167ebbae74a0198062c4cadcab89a_image.png)\n\n准备操作目录。\n\n![image.png](https://dev-media.amazoncloud.cn/17d781b7c76c431695b48679e0b3227b_image.png)\n\n下载 Amazon Web Services IoT 的 Root CA 文件。\n\n设备连接应该优先选择 ATS 端点,使用 ATS 的 CA 文件。但是由于自定义身份验证暂时不支持 ATS 端点,所以也需要下载 VeriSign 端点的 CA 证书。\n\n![image.png](https://dev-media.amazoncloud.cn/baf011db33154df48d896d8ab0226b30_image.png)\n\n安装倚赖的软件。\n\n![image.png](https://dev-media.amazoncloud.cn/7912e39424b642b69188bd64f75bc3fa_image.png)\n\n获取 Account Id。\n\n![image.png](https://dev-media.amazoncloud.cn/5f7dde63a9fb4504a8cccaecd6c095ad_image.png)\n\n获取 Account 的 IoT Endpoint 前缀。\n\n\n![image.png](https://dev-media.amazoncloud.cn/986eceb57708442dacb067fcd08ba06e_image.png)\n\n把 Account Id 和 IoT 的 Endpoint 前缀配置到环境变量中。\n\n![image.png](https://dev-media.amazoncloud.cn/d1fdbd1dfb934c77b7e3cf63c09f2d6e_image.png)\n\n### **配置 IoT消息接收监控页面**\n\n进入 Amazon Web Services IoT 服务的控制台。\n\n\n![image.png](https://dev-media.amazoncloud.cn/b033f97140734f15874f91f1e3bfa784_image.png)\n\n在 Amazon Web Services IoT 控制台中,依次点击测试,订阅主题,在订阅主题框里输入 “IoTDemo/#”,然后点击订阅主题。\n\n![image.png](https://dev-media.amazoncloud.cn/cd1ff3fcbdb34fe78e3132012ed32d2e_image.png)\n\n后续所有的 Amazon Web Services IoT Core 收到的消息都会在下方的空白处显示出来。这可以作为设备发送消息成功的验证。\n\n### **设备使用IAM 身份认证接入**\n\n您可以使用 IAM 提供的身份来认证设备。设备需要预置或者通过其他方式获取 Security Credential,再使用 SigV4 的签名算法对请求进行签名。Amazon Web Services IoT 服务则通过签名来认证设备的身份。通过身份认证后,Amazon Web Services IoT 再根据身份拥有的 IAM Policy来对请求进行鉴权。IAM 身份认证方式简单易用,但是安全性较差,适用于测试等非正式场景。\n\nIAM 身份认证方式示意图如下图:\n\n![image.png](https://dev-media.amazoncloud.cn/1b5ce29d6d0641519455aca11713a95a_image.png)\n\n### **创建 IAM身份和权限**\n\n\n首先,创建一个 IAM 用户,IoTDeviceUser\n\n![image.png](https://dev-media.amazoncloud.cn/da0c1334ffcb4daa933baba3ca3600c6_image.png)\n\n为 IoTDeviceUser 用户创建 Access Key。\n\n![image.png](https://dev-media.amazoncloud.cn/e27744a389c848f28e09eefcf626f7a5_image.png)\n\n记录下 AccessKeyId 和 SecretAccessKey。\n\n![image.png](https://dev-media.amazoncloud.cn/eb467aaa4dfa4f2a97e882ee9df3dae5_image.png)\n\n### **设备使用 HTTP 协议接入**\n\n为设备创建 IAM Policy。\n\n![image.png](https://dev-media.amazoncloud.cn/bb98ef7a716c4eaba2aae51939439552_image.png)\n\n把 IAM Policy 绑定 IAM 用户。\n\n![image.png](https://dev-media.amazoncloud.cn/614544d59ae74511ae1d4766ae9a4ce7_image.png)\n\n生成设备模拟程序。\n\n![image.png](https://dev-media.amazoncloud.cn/ac9cab02a22b43b6be5e06dee54858da_image.png)\n\n运行设备模拟程序。\n\n![image.png](https://dev-media.amazoncloud.cn/9c83ba873e47490a842e56b96347191e_image.png)\n\n然后在第 4.3 章节打开的控制台中可以看到 Amazon Web Services IoT 收到的消息。后面的场景类似,不再赘述。\n\n![image.png](https://dev-media.amazoncloud.cn/c9e7ecfe96ae48aebdb8016f32c8f8f6_image.png)\n\n### **设备使用MQTT OVER WEBSOCKET 接入**\n\n为设备创建 IAM Policy。\n\n![image.png](https://dev-media.amazoncloud.cn/6cb1ff6b009849baba79f8d74c19377c_image.png)\n\n把 IAM Policy 绑定 IAM 用户。\n\n![image.png](https://dev-media.amazoncloud.cn/5a22008ed8394c16a26523ed61aeba13_image.png)\n\n生成设备模拟程序。\n\n![image.png](https://dev-media.amazoncloud.cn/6c24d5d329034c7c916a386d4e10edb1_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/8d70a3ad9d7b4102907367742bf00230_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/4e04d4cc2c6c4458a39680a16aa83b88_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/6c8c8b869b0f4fd3ad95db88dfa0665b_image.png)\n\n\n运行设备模拟程序。\n\n![image.png](https://dev-media.amazoncloud.cn/6a8fe81b5c4a4c12b777162574c9cd56_image.png)\n\n\n此设备模拟程序会一直运行,接受输入的数据,发送到 Amazon Web Services IoT Core,同时也订阅自己发送消息的 topic。\n\n输入要发送到 Amazon Web Services IoT 的消息,如 “data from device IAM websocket.”,设备会接收到自己发送的这个消息。同时,在4.3章节中打开的控制台中也可以看到此消息。\n\n执行 Ctrl+C 停止程序。\n\n### **资源清理(可选)**\n\n![image.png](https://dev-media.amazoncloud.cn/83e4ebe5c6f549539e62d51dfd8cc1a7_image.png)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","render":"<h3><a id=\\"_1\\"></a><strong>简介</strong></h3>\\n<p>Amazon Web Services IoT 解决方案是一个全托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互。Amazon Web Services IoT 可支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 Amazon Web Services 终端节点和其他设备。Amazon Web Services IoT 平台支持您将设备连接到 Amazon Web Services 服务和其他设备,保证数据和交互的安全,处理设备数据并对其执行操作,以及支持应用程序与即便处于离线状态的设备进行交互。由于 Amazon Web Services IoT 与 AI 服务集成,您也可以使设备更智能。Amazon Web Services IoT 还提供最全面的安全功能,以便您能够创建预防性安全策略,并及时对潜在安全问题做出响应。</p>\n<p>使用 Amazon Web Services IoT 的第一步是将设备连接到 Amazon Web Services IoT Core 服务。Amazon Web Services IoT 支持多种接入协议,身份认证方法和授权策略。 这些不同的协议,认证和授权方式有多种有效的组合方式。您可以使用任意一种有效的组合方式将您的设备接入到 Amazon Web Services IoT。</p>\n<p>本系列文章首先介绍了这些协议,认证和授权方式的原理和细节,以及其分别所适应的场景,然后介绍了 Amazon Web Services IoT 支持的所有有效的连接组合方式。每种支持的组合方式都提供了模拟设备的参考代码,和运行模拟设备连接到 IoT 的步骤。注:模拟设备连接到 Amazon Web Services China 的北京 Region。</p>\n<p><video src=\\"https://dev-media.amazoncloud.cn/cfc0bd0a62564eec9582d24e6b0d9759_0bf2myaaiaaaf4ao4vyogzpfazwdartaabaa.f10002.mp4\\" controls=\\"controls\\"></video></p>\\n<h3><a id=\\"Amazon_Web_Services_IoT_15\\"></a><strong>Amazon Web Services IoT支持的协议</strong></h3>\\n<p>设备要接入 Amazon Web Services IoT,首先要使用 Amazon Web Services IoT 支持的协议来跟 IoT 平台交互。</p>\n<h3><a id=\\"HTTP_20\\"></a><strong>HTTP协议</strong></h3>\\n<p>Http 协议是互联网中最为常见的协议。Http 协议下支持后面提到所有的认证和授权的方式。但是在物联网的场景中,它也有着协议开销比较大等缺点,另外 Http 只有请求响应的模式,不支持物联网场景中非常重要的订阅模式,不能支持下行命令的下发。</p>\n<p>注:Amazon Web Services IoT 只支持 Https 加密传输。</p>\n<h3><a id=\\"MQTT__26\\"></a><strong>MQTT 协议</strong></h3>\\n<p>MQTT 协议是物联网场景中使用最为广泛的协议,具有协议开销小,支持发布订阅等所有模式的优点。</p>\n<h3><a id=\\"MQTT_OVER_WEBSOCKET_32\\"></a><strong>MQTT OVER WEBSOCKET</strong></h3>\\n<p>MQTT over Websocket 是基于 Websocket 上的 MQTT 协议,也具备 MQTT 协议的优点,另外它使用了 443 的端口,在网络环境可达性上比MQTT 更有优势,但是也相对更为复杂一些。</p>\n<h3><a id=\\"Amazon_Web_Services_IoT__36\\"></a><strong>Amazon Web Services IoT 支持的认证和授权方式</strong></h3>\\n<p>设备接入 Amazon Web Services IoT 的时候,必须要进行认证,确认设备的合法身份。通过认证后,还需要对设备的请求进行鉴权,只有经过授权的请求才会被 Amazon Web Services IoT 接受。不同的设备认证方式,其授权方式也可能会有所不同。</p>\n<p>Amazon Web Services IoT 支持的认证方式有四种,分别是 IAM 身份,Amazon Cognito 身份,X.509 证书,和自定义身份验证。</p>\n<p>Amazon Web Services IoT 支持的授权策略有两种,分别是 IAM Policy 和 IoT Policy。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/2c717ef96a9b44339611b13bbe67995b_image.png\\" alt=\\"image.png\\" /></p>\n<h2><a id=\\"_47\\"></a><strong>准备工作</strong></h2>\\n<h3><a id=\\"_50\\"></a><strong>创建操作环境</strong></h3>\\n<p>登陆 Amazon Web Services China 管理控制台,然后在 Amazon Web Services 服务框输入和选择 EC2 服务。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/0497a65d1ad5430eb89b252650b69d71_image.png\\" alt=\\"image.png\\" /></p>\n<p>启动一个 EC2 虚机,选择 Amazon Linux 2 AMI(HVM), SSD Volume Type。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/e7a8ee74b8a0413096ec0a3e77367037_image.png\\" alt=\\"image.png\\" /></p>\n<p>在实例类型步骤,直接选择下一步。</p>\n<p>在配置实例详细信息步骤,确保自动分配共有 IP 选择了启用,然后点击创建新的 IAM 角色。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/2bfd0a8a494c41a5aeff7707c920436e_image.png\\" alt=\\"image.png\\" /></p>\n<p>在弹出的窗口中选择创建角色,然后依次选择 Amazon Web Services 服务,EC2,点击下一步</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/b4852f74fda64901be4ec96f7234e92a_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/c1634a32fc0e415aae77403e400ab6c6_image.png\\" alt=\\"image.png\\" /></p>\n<p>在 Attach 权限策略步骤,勾选 AdministratorAccess 策略,点击点一步。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/0321bc7a807b4bea841e4628d4bb9e59_image.png\\" alt=\\"image.png\\" /></p>\n<p>添加标签步骤直接选择下一步。</p>\n<p>角色名称处输入 Amazon Web Services IoTDeviceAccessWorkshop,点击创建角色。</p>\n<p>返回启动虚机的窗口,确保 IAM 角色选择刚才创建的 Amazon Web Services IoTDeviceAccessWorkshop。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/ecddac12fb0f4fe48d3bf9dfaa979162_image.png\\" alt=\\"image.png\\" /></p>\n<p>依次点击下一步:添加存储,下一步:添加标签,下一步:配置安全组。</p>\n<p>在配置安全组步骤,确保打开了 22 端口。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/322602f5a24947af8d83a5aa7a824ec7_image.png\\" alt=\\"image.png\\" /></p>\n<p>依次点击审核和启动,启动。</p>\n<p>依次选择创建新密钥对,输入新密钥对的名称 Amazon Web Services IoTDeviceAccessWorkshop,点击下载密钥对并保存密钥文件。最后点击启动实例。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/1cbb696ae1314d6b95f5611f7573aa31_image.png\\" alt=\\"image.png\\" /></p>\n<p>在启动状态窗口点击实例 ID。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/6f15eff9c274479ca8af951f08eaddbc_image.png\\" alt=\\"image.png\\" /></p>\n<p>选中实例,并点击连接。根据弹出的窗口的指导,SSH连接到操作环境中。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/15b5ecc7b93546259efb668363015563_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/0daa050d706743ce999e4d99844ab2bf_image.png\\" alt=\\"image.png\\" /></p>\n<h3><a id=\\"_106\\"></a><strong>配置操作环境</strong></h3>\\n<p>配置 Amazon Web Services CLI 权限。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/445430779ef34531bf8728257d8dcceb_image.png\\" alt=\\"image.png\\" /></p>\n<p>Amazon Web Services Access Key ID 和 Amazon Web Services Secret Access Key 留空,Default region name 配置为 cn-north-1,Default output format 设置为 json。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/406167ebbae74a0198062c4cadcab89a_image.png\\" alt=\\"image.png\\" /></p>\n<p>准备操作目录。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/17d781b7c76c431695b48679e0b3227b_image.png\\" alt=\\"image.png\\" /></p>\n<p>下载 Amazon Web Services IoT 的 Root CA 文件。</p>\n<p>设备连接应该优先选择 ATS 端点,使用 ATS 的 CA 文件。但是由于自定义身份验证暂时不支持 ATS 端点,所以也需要下载 VeriSign 端点的 CA 证书。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/baf011db33154df48d896d8ab0226b30_image.png\\" alt=\\"image.png\\" /></p>\n<p>安装倚赖的软件。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/7912e39424b642b69188bd64f75bc3fa_image.png\\" alt=\\"image.png\\" /></p>\n<p>获取 Account Id。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/5f7dde63a9fb4504a8cccaecd6c095ad_image.png\\" alt=\\"image.png\\" /></p>\n<p>获取 Account 的 IoT Endpoint 前缀。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/986eceb57708442dacb067fcd08ba06e_image.png\\" alt=\\"image.png\\" /></p>\n<p>把 Account Id 和 IoT 的 Endpoint 前缀配置到环境变量中。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/d1fdbd1dfb934c77b7e3cf63c09f2d6e_image.png\\" alt=\\"image.png\\" /></p>\n<h3><a id=\\"_IoT_143\\"></a><strong>配置 IoT消息接收监控页面</strong></h3>\\n<p>进入 Amazon Web Services IoT 服务的控制台。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/b033f97140734f15874f91f1e3bfa784_image.png\\" alt=\\"image.png\\" /></p>\n<p>在 Amazon Web Services IoT 控制台中,依次点击测试,订阅主题,在订阅主题框里输入 “IoTDemo/#”,然后点击订阅主题。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/cd1ff3fcbdb34fe78e3132012ed32d2e_image.png\\" alt=\\"image.png\\" /></p>\n<p>后续所有的 Amazon Web Services IoT Core 收到的消息都会在下方的空白处显示出来。这可以作为设备发送消息成功的验证。</p>\n<h3><a id=\\"IAM__156\\"></a><strong>设备使用IAM 身份认证接入</strong></h3>\\n<p>您可以使用 IAM 提供的身份来认证设备。设备需要预置或者通过其他方式获取 Security Credential,再使用 SigV4 的签名算法对请求进行签名。Amazon Web Services IoT 服务则通过签名来认证设备的身份。通过身份认证后,Amazon Web Services IoT 再根据身份拥有的 IAM Policy来对请求进行鉴权。IAM 身份认证方式简单易用,但是安全性较差,适用于测试等非正式场景。</p>\n<p>IAM 身份认证方式示意图如下图:</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/1b5ce29d6d0641519455aca11713a95a_image.png\\" alt=\\"image.png\\" /></p>\n<h3><a id=\\"_IAM_164\\"></a><strong>创建 IAM身份和权限</strong></h3>\\n<p>首先,创建一个 IAM 用户,IoTDeviceUser</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/da0c1334ffcb4daa933baba3ca3600c6_image.png\\" alt=\\"image.png\\" /></p>\n<p>为 IoTDeviceUser 用户创建 Access Key。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/e27744a389c848f28e09eefcf626f7a5_image.png\\" alt=\\"image.png\\" /></p>\n<p>记录下 AccessKeyId 和 SecretAccessKey。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/eb467aaa4dfa4f2a97e882ee9df3dae5_image.png\\" alt=\\"image.png\\" /></p>\n<h3><a id=\\"_HTTP__179\\"></a><strong>设备使用 HTTP 协议接入</strong></h3>\\n<p>为设备创建 IAM Policy。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/bb98ef7a716c4eaba2aae51939439552_image.png\\" alt=\\"image.png\\" /></p>\n<p>把 IAM Policy 绑定 IAM 用户。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/614544d59ae74511ae1d4766ae9a4ce7_image.png\\" alt=\\"image.png\\" /></p>\n<p>生成设备模拟程序。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/ac9cab02a22b43b6be5e06dee54858da_image.png\\" alt=\\"image.png\\" /></p>\n<p>运行设备模拟程序。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/9c83ba873e47490a842e56b96347191e_image.png\\" alt=\\"image.png\\" /></p>\n<p>然后在第 4.3 章节打开的控制台中可以看到 Amazon Web Services IoT 收到的消息。后面的场景类似,不再赘述。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/c9e7ecfe96ae48aebdb8016f32c8f8f6_image.png\\" alt=\\"image.png\\" /></p>\n<h3><a id=\\"MQTT_OVER_WEBSOCKET__201\\"></a><strong>设备使用MQTT OVER WEBSOCKET 接入</strong></h3>\\n<p>为设备创建 IAM Policy。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/6cb1ff6b009849baba79f8d74c19377c_image.png\\" alt=\\"image.png\\" /></p>\n<p>把 IAM Policy 绑定 IAM 用户。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/5a22008ed8394c16a26523ed61aeba13_image.png\\" alt=\\"image.png\\" /></p>\n<p>生成设备模拟程序。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/6c24d5d329034c7c916a386d4e10edb1_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/8d70a3ad9d7b4102907367742bf00230_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/4e04d4cc2c6c4458a39680a16aa83b88_image.png\\" alt=\\"image.png\\" /></p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/6c8c8b869b0f4fd3ad95db88dfa0665b_image.png\\" alt=\\"image.png\\" /></p>\n<p>运行设备模拟程序。</p>\n<p><img src=\\"https://dev-media.amazoncloud.cn/6a8fe81b5c4a4c12b777162574c9cd56_image.png\\" alt=\\"image.png\\" /></p>\n<p>此设备模拟程序会一直运行,接受输入的数据,发送到 Amazon Web Services IoT Core,同时也订阅自己发送消息的 topic。</p>\n<p>输入要发送到 Amazon Web Services IoT 的消息,如 “data from device IAM websocket.”,设备会接收到自己发送的这个消息。同时,在4.3章节中打开的控制台中也可以看到此消息。</p>\n<p>执行 Ctrl+C 停止程序。</p>\n<h3><a id=\\"_233\\"></a><strong>资源清理(可选)</strong></h3>\\n<p><img src=\\"https://dev-media.amazoncloud.cn/83e4ebe5c6f549539e62d51dfd8cc1a7_image.png\\" alt=\\"image.png\\" /></p>\n"}
0
目录
关闭