【问题标题】:How to transfer > 8K sensitive binary information to Azure IoT Device如何将 > 8K 的敏感二进制信息传输到 Azure IoT 设备
【发布时间】:2019-11-26 15:59:31
【问题描述】:

使用 Azure IoT 中心 SDK 连接到 IoT 中心的 IoT 设备如何检索作为设备配置一部分的大量敏感数据?

我知道我可以将设备孪生用作每个设备的配置文档,但这些文档的总大小限制为 8K。 当我的设备(例如)重置为出厂默认设置或由于硬件故障而以某种方式丢失其本地存储时,我需要将大量二进制格式的数据传输到设备。

我正在考虑使用 D2C 方法触发请求,从而导致一系列 C2D 或直接方法调用请求设备传输相关信息(基本上模仿请求/响应行为)。然而,这感觉像是一种解决方法。

我的另一个想法是将 url 作为设备孪生属性的一部分传输到存储帐户,从而允许设备使用存储 SDK 下载二进制信息,但是鉴于下载的信息的敏感性,我无法直接公开这一点使用 Azure 存储中的公共可访问容器将信息传输到 Internet。

所以我最后的想法是访问控制对信息的访问的 REST API。但是我担心的是,我突破了安全通信通道,IoT Hub SDK 提供了它内置的通信方法,我必须使用某种旋转秘密来保护设备和 REST API 之间的通信,这可能会暴露其他风险以及复杂的自定义实现。

为 Azure IoT 客户端提供对此类设备特定数据的访问的建议方法是什么?

【问题讨论】:

    标签: azure azure-iot-hub azure-iot-sdk


    【解决方案1】:

    我确实建议使用 Azure IoT 中心的新功能(仍处于预览阶段),例如 Device Streams

    您可以使用我更新的工具Azure IoT Hub Tester 测试这个新的预览功能(参见附录 A2)

    【讨论】:

    • 非常感谢您指出这个选项。因此,由于设备流似乎是由服务器端启动的,为了启用我的方案,我必须发送一个初始 D2C 消息来通知服务器端为客户端启动设备流。设备侧接受后,服务器可以继续发送请求的敏感信息。我理解正确吗?
    • 您可以使用设备孪生报告的属性创建一个状态,这将通知您的云服务进行设备流式传输(即设备查询)。处理设备流处理的服务类似于设备直接调用方法。在此握手期间,两端切换到安全的 Web 套接字通信。完成此通信后,可以更新设备孪生状态。
    • 好的,谢谢!所以从概念上讲,它类似于从设备向云发送请求(设备孪生报告属性或 D2C 消息)并向相关设备发送多个直接方法调用,但它更有效,客户端可以使用 Web 套接字连接发送额外的要求,对吧?
    • 后端服务和设备之间只有一次请求/响应调用。该服务发送您的自定义应用程序有效负载,其中包含少量标头,例如 url、auth-token、ip-address(用于 wss 通信),设备以应用有效负载响应并返回这些标头并再添加一个例如 iothub-streaming-is-accepted:True.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 2012-01-31
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多