云服务器内容精选

  • 概述 设备策略主要用于对发布/订阅的非$oc开头自定义topic中的数据进行传输限制。通过灵活访问的控制模型,提供了基于用户角色的访问控制,能够管理客户端发布/订阅主题的授权。借助策略功能,可以用于管理一个或多个设备/产品/群组发布、订阅的权限,以保证非$oc开头的自定义Topic的通信安全。设备Topic策略用于发布、订阅机制的协议,比如说设备侧的MQTT、MQ TTS 协议。目前华南友好局点、海外局点支持。 对于使用IOTDA的用户,新增的资源空间会默认加入策略“system_default_policy”,system_default_policy策略会允许该资源空间下所有设备的非$oc开头的自定义Topic的订阅与发布。当业务场景不适用时,可以删除该策略。 图1 策略概念图
  • 功能介绍 物联网平台 将设备拓扑与数据转发能力解耦,对于数据转发能力支持通过一种设备代理策略来进行描述。即在台注册设备时已经固定拓扑关系,但是可以通过其他网关进行数据转发。这种设备代理策略需要在平台进行定义,和管理。代理授权主要分为两个部分: 时间维度:可为代理设备的转发权限设定一定的时限,一旦过期该设备便不再具备代理能力。 空间维度:只有加入该设备代理的设备才能转发彼此的数据(设备代理内的网关可共同转发子设备数据)。 在同一时刻,子设备只能存在一个确定的网关,且只能通过这个网关进行数据转发,因此在对子设备进行数据转发前需要提前确定代理关系。子设备代理网关的切换必须通过网关上报子设备状态来实现,当上报子设备状态为在线时,平台会根据用户在平台定义好的代理策略进行校验,校验通过后平台就会在该子设备与当前网关之间建立代理关系,之后才会允许通过该代理网关进行数据转发。当上报子设备状态为离线后,会清除代理关系,禁止通过该网关进行数据转发。
  • 安全检测 物联网平台提供安全检测能力,可持续检测设备的安全威胁。本文介绍具体的安全检测项,及如何查看并处理检测出的安全风险。 检测项说明 检测项 说明 设备侧使用非加密方式接入 设备与物联网平台之间,未使用加密协议建立安全连接,可能导致中间人劫持、重放攻击,会对业务造成影响。 使用不安全的TLS版本协议 不安全的TLS协议版本(TLS v1.0、v1.1)存在可被利用的安全漏洞,可能会造成设备数据泄露等安全风险。 使用不安全的加密算法套件 当前主要检测包含以下几种不安全的加密算法套件: TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA, TLS_PSK_WITH_AES_128_CBC_SHA, TLS_PSK_WITH_AES_256_CBC_SHA 不安全的加密算法套件存在可被利用的安全漏洞,可能会造成设备数据泄露等安全风险。 设备侧单位时间内多次建链 设备侧在1秒内与物联网平台进行多次建链,存在设备被暴力破解,导致身份信息泄露的可能,会造成正常设备被迫下线、业务数据被窃取等安全风险。 设备鉴权失败 设备身份认证信息错误,导致设备无法上线,可能会对业务造成影响。 上述通用异常检测功能检测项开关默认开启,同时设备异常检测包括一些非公共检测项,用户可以根据需求进行检测项的开关等配置。 表1 检测项说明 检测项 说明 内存泄漏检测 检测端侧设备是否存在内存泄漏。 异常端口检测 检测端侧设备是否开启了异常端口。 CPU使用率检测 检测端侧设备CPU使用率是否过高。 磁盘空间检测 检测端侧设备磁盘空间是否不足。 电池电量检测 检测端侧设备电池电量是否过低。 恶意IP检测 检测与设备通信的IP地址是否为恶意IP地址。 本地登录检测 检测设备是否被通过非SSH等网络方式登录。 暴力破解登录检测 检测设备是否被尝试通过暴力破解账号密码进行登录。 文件篡改检测 检测设备指定目录下的文件是否被篡改。
  • 离线分析 当设备发生离线事件时,需要对离线原因进行分析。根据离线发生的时间、设备的离线原因来统计离线设备的特征,帮助您全面了解、分析设备离线的原因。 离线原因 说明 设备侧主动离线 设备主动向物联网平台发送MQTT协议的DISCONNECT报文,进行离线。 设备侧长时间不发送心跳导致设备离线 设备侧未按照MQTT协议规定,在设置的心跳周期 * 1.5 时间范围内物联网平台发送MQTT协议层的心跳报文,导致物联网平台认为该设备链路已失效,按照协议要求,断开设备链接。 (注:心跳周期是设备侧在与物联网平台进行建链时指定的) 设备侧跟云端之间TCP链路断开,导致设备离线 物联网平台收到设备侧发送的TCP拆链报文,导致设备侧与物联网平台之间的TCP链路断开。 删除设备导致链路断开,设备离线 租户在物联网平台上对该设备进行删除,物联网平台对该设备进行断链。 冻结设备导致链路断开,设备离线 租户在物联网平台上对该设备进行冻结,物联网平台对该设备进行断链。 平台主动断开设备链路,导致设备离线 物联网平台升级期间,会主动断开设备链路。 设备与平台建立多条链路,导致老链路被断链 设备侧与物联网平台主动建立了多条链路,物联网平台将该设备侧的老链路断开,保留新建立的链路。 重置设备密钥,导致设备离线 租户在物联网平台上对该设备进行密钥重置并设置强制断链时,物联网平台对该设备进行断链。
  • 使用MQTT(S)协议-密钥接入的鉴权流程 图1 MQTT(S)协议-密钥接入鉴权流程图 通过调用注册接口向物联网平台发送注册请求或者在控制台上注册设备。 注册时需要填写设备标识码,通常使用MAC地址,Serial No或IMEI作为nodeId。 物联网平台向设备分配全局唯一的设备ID (deviceId)和密钥(secret)。 密钥可以在注册设备时自定义,如果没有定义,平台将自动分配密钥。 设备侧需集成预置CA证书(仅针对MQTTS协议接入的鉴权流程)。 设备登录时,携带设备ID(deviceId)和密钥(secret)发起接入鉴权请求。 平台验证通过后,返回成功响应,设备连接物联网平台成功。
  • 制作设备CA调测证书 本文以Windows环境为例,介绍通过Openssl工具制作调测证书的方法,生成的证书为PEM编码格式的证书。 在浏览器中访问这里,下载并进行安装OpenSSL工具。 以管理员身份运行cmd命令行窗口。 执行cd c:\openssl\bin(请替换为openssl实际安装路径),进入openssl命令视图。 执行以下命令生成生成密钥对。 openssl genrsa -out rootCA.key 2048 执行以下命令,使用密钥对中的私有密钥生成 CA 证书。 openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem 系统提示您输入如下信息,所有参数可以自定义。 Country Name (2 letter code) [AU]:国家,如CN。 State or Province Name (full name) []: 省份,如GD。 Locality Name (for example, city) []:城市,如SZ。 Organization Name (for example, company) []:组织,如Huawei。 Organizational Unit Name (for example, section) []:组织单位,如IoT。 Common Name (e.g. server FQDN or YOUR name) []: 名称,如zhangsan。 Email Address []:邮箱地址,如1234567@163.com。 在openssl安装目录的bin文件夹下,获取生成的CA证书(rootCA.pem)。
  • 场景说明 本文介绍如何通过设备发放将共享实例中的存量设备数据同步到专享实例。 相比于共享实例,专享实例运行在用户指定的虚拟私有云内,用户可以使用独立分配的公网和私网IP接入物联网平台。用户购买的资源完全独享,资源安全性和隔离性更高,是企业设备上云的首选,实例详情介绍参考华为云 设备接入IoTDA 实例介绍。 若用户已经开通共享实例,设备也在共享实例上运行,但是用户想让设备运行在专享实例上,可以将存量设备同步到用户购买的专享实例(企业版)中管理。通过设备发放,可以很方便地将共享实例中的设备同步到新的专享实例。
  • 注意事项 使用设备发放服务跨实例同步设备时,如果是指定资源空间和设备同步,同步数据仅包括设备连接新实例认证需要的身份信息,包括产品、证书和设备;不包括原实例中的设备分组、服务端订阅、规则引擎配置和平台日志等;支持同步设备的状态。 目前除了支持资源空间和设备的同步,还能指定插件的同步。 设备同步成功后,可以通过设备发放获取到新实例的地址,也可以直接更新设备固件,对接新的实例。如果用户的设备不支持更新固件,也没有对接设备发放,那么可以提交工单说明诉求。 设备同步到新实例后,应用侧调用设备接入实例API管理设备时,所有相关API调用的InstanceId需修改为新实例ID。
  • 操作步骤 默认用户已经开通过共享版设备接入。访问 设备接入服务 ,单击“立即使用”进入“设备接入控制台”,通过“设备接入”进入到“设备发放服务”页面,单击“授权开通”对服务进行授权。 开通专享实例,参考设备接入实例开通管理。 根据业务进行同步操作,如果设备量大,选择按照资源空间同步。 进入设备发放“设备数据同步”界面,单击右上角“创建同步任务”。 图1 创建同步任务 同步方式选择“按资源空间整体同步”,将所有必填选项选择完毕后,单击“确认创建”即可,设备发放会自动把对应资源空间的产品、证书和设备数据同步过去。 图2 创建内部region按资源空间整体迁移任务 如果设备量小,可以选择“指定设备同步”方式。 进入“设备数据同步”界面,单击右上角“创建同步任务”。 图3 创建同步任务 同步方式选择“指定设备同步”,将所有必填选项选择完毕后,单击“确认创建”。设备发放会自动把对应产品下的设备数据同步过去,同步后的设备状态保持一致。 图4 创建华为云内部region按指定设备id迁移任务 单击“任务ID”或者“详情”,可以看到刚创建的任务的详细内容,并且可以使用“高级搜索”对同步设备进行过滤查询操作。 图5 设备迁移任务详情页高级搜索 当同步任务类型为“指定设备同步”时,此类任务下所有同步设备均属于同一应用、同一产品。因此在进行同步设备列表的“高级搜索”时,搜索项“所属产品”和“所属资源空间”均为空。 在设备同步详情页,可以查看单个设备的信息和设备的发放记录。 图6 设备迁移任务详情页
  • 业务场景说明 自建MQTT Broker基于MQTT协议的上行数据和下行指令的业务定义如下: 表1 业务场景 业务场景 通信Topic 报文Payload 设备上报数据 /aircondition/data/up { "temperature": 26.0 } 服务端控制指令 /aircondition/cmd { "switch": "off" } 设备使用一机一密的认证方式。 设备通过Topic上报数据,通过消息流转功能将数据转发到后端服务。 服务端通过消息下发接口下发消息给设备。
  • 2.设备端 域名 切换 完成平台端配置后,需要进行设备端业务开发。完整的设备开发流程可参考设备侧开发。本章节以Paho-MQTT开源MQTT客户端为例,介绍在设备迁移场景下,设备侧如何在只修改接入地址的情况下,实现设备建立MQTT连接、Topc订阅、消息发布等功能。 //接入华为云IoT的域名,在控制台的"总览"界面的"平台接入地址"中获取“设备侧”的MQTTS接入地址。String server = "ssl://******.st1.iotda-device.cn-north-4.myhuaweicloud.com:8883"; // Paho MQTT客户端。MqttClient myMqttClient = new MqttClient(server, "myClientId", persistence); // Paho MQTT连接参数。MqttConnectOptions connOpts = new MqttConnectOptions(); connOpts.setCleanSession(true); connOpts.setKeepAliveInterval(120); connOpts.setUserName("myUserName"); connOpts.setPassword("myPassword".toCharArray()); myMqttClient.connect(connOpts); System.out.println("Broker: " + broker + " Connected");// Paho MQTT消息订阅。myMqttClient.subscribe("/aircondition/cmd", new MyMessageListener());// Paho MQTT发布消息。String topic = "/aircondition/data/up"; String content = "{\"temperature\": 26.0 }"; MqttMessage message = new MqttMessage(content.getBytes()); message.setQos(0); myMqttClient.publish(topic, message);
  • 设备触发放流程 配置连接参数。 证书认证设备如何使用MQTT.fx接入设备发放请参见MQTT X509证书认证接入示例。 MQTT Broker Profile Settings Broker Address填写设备发放设备侧接入地址,Broker Port填写设备发放设备侧接入端口,Client ID按规则([设备ID]_0_0_[10位日期时间])填写,具体规则参见MQTT CONNECT连接鉴权。 SSL/TLS 由于设备使用证书认证方式,“Enable SSL/TLS”勾选开启,选择Self signed certificates,CA File填写用于签发设备发放设备侧接入SSL/TLS通道证书的CA证书路径,Client Certificate File和Client Key File填写使用已上传并验证了的CA证书签发的设备证书和设备证书私钥路径。如证书为PEM格式,请勾选“PEM Formatted”。 具体配置请参见下图: “User Credentials”的“User Name”字段填写设备ID。具体配置参见下图: 连接鉴权。 连接参数配置完成后,单击“Connnect”。若右上角圆圈呈现绿色,说明设备已成功上设备发放平台。 订阅接收引导消息Topic。 参照设备接收引导信息填写用于接收引导地址的Topic,单击“Subscribe”订阅该Topic。若订阅Topic填写框下方的已订阅Topic列表中存在该Topic,则订阅成功。 发送请求引导消息。 参照设备请求引导消息填写发送请求引导消息的Topic,单击“Publish”向该Topic推送消息。 查看订阅的Topic,很快在订阅Topic下,接收到了目的接入点的设备侧接入地址。 进入函数服务控制台,通过查看使用的函数的日志,可看出自定义策略发放设备过程中,该函数被成功触发且正确执行。 进入到设备发放控制台,可查看到一条该设备的发放记录。 图5 设备详情页 至此,您已成功完成了,使用设备发放和函数服务将证书认证的设备通过自定义策略触发函数将设备发放到指定的设备接入实例中。
  • 示例场景 某企业的网关产品下有一批网关设备,单个网关设备下挂载了约400个子设备,用户需要实时关注这批网关设备的状态,确保子设备正常上报数据,同时由于网关设备和物联网平台通过4G网络建立连接,存在由于网络抖动导致频繁告警的问题,因此用户认为短暂的离线后上线属于正常场景,不希望感知这种场景。 通过以下示例可以实现监控该网关产品下所有网关设备在离线持续时间达到5分钟后通过物联网平台上报告警,在设备上线持续时间达到1分钟后恢复该告警,同时发送邮件或短信通知给指定的手机号码。 操作步骤如下:
  • 验证操作 方法一: 您可以使用MQTT.fx模拟设备验证。 使用MQTT.fx模拟恒温空调,并连接到物联网平台。操作方法请参考在线开发MQTT协议的模拟智慧路灯。 选择“Subscribe”页签,输入订阅设备影子的topic=$oc/devices/{device_id}/sys/shadow/get/response/#,其中{device_id}与步骤6的设备ID保持一致,单击“Subscribe”按钮。 选择“Publish”页签,输入请求设备影子的Topic=$oc/devices/{device_id}/sys/shadow/get/request_id={request_id}。 输入一条获取设备影子的请求,单击“Publish”按钮。 示例: {"object_device_id": "**********","service_id": temperature"} 选择“Subscribe”页签,看到平台下发的设备影子数据。 方法二: 您可以使用配置设备接入服务时注册的真实设备接入平台,设备会收到平台下发的设备影子,修改空调的预设温度值。
  • 实现原理 方案总体架构框图如下: 协议转换网关是一个网关,可以部署在云上或者本地。第三方协议设备作为协议转换网关的子设备接入平台。 协议转换网关一般由三部分组成: 第三方协议接入。完成第三方协议的解析,鉴权。 协议转换。负责完成第三方协议数据和平台格式数据的互相转换。 上行:把第三方协议数据转成平台格式数据,并调用设备SDK接口进行上报。 下行:收到平台下行数据时,转换为第三方协议数据转发给第三方协议设备。 设备SDK。即平台提供的设备接入SDK,提供了网关的通用功能实现,用户可以在此基础上实现自己的网关。