你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure IoT 中心设备预配服务是什么?
IoT 中心设备预配服务 (DPS) 是 IoT 中心的帮助器服务,支持零接触、实时预配到适当的 IoT 中心,不需要人为干预。 使用 DPS 能够以安全且可缩放的方式预配数百万台设备。 预配向来所涉及的许多手动步骤通过 DPS 自动完成,以减少部署 IoT 设备的时间并降低手动错误的风险。
设备预配服务的工作原理
下图描述了在使用 DPS 预配设备时在幕后发生的情况。
在设备预配流开始之前,有两个手动步骤需要准备:
- 在设备端,设备制造商通过预配置设备的身份验证凭据和分配的设备预配服务 ID 和终结点,为预配设备做准备。
- 在云端,用户或设备制造商为设备预配服务实例准备单独注册和注册组,以识别有效设备并定义设备预配方法。
设备和云进行预配设置后,只要设备首次启用,以下步骤就会自动启动:
- 设备首次启用,然后连接到 DPS 终结点,并显示其身份验证凭据。
- DPS 实例会根据设备的注册列表检查设备的标识。 验证设备标识后,DPS 会将设备分配到 IoT 中心,并在该中心进行注册。
- DPS 实例从分配的中心接收设备 ID 和注册信息,并将该信息传回设备。
- 设备通过其注册信息直接连接到其分配的 IoT 中心并进行身份验证。
- 设备和 IoT 中心开始直接进行通信。 除非设备需要重新预配,否则 DPS 实例不再作为中间角色。
何时使用设备预配服务
在很多预配方案中,DPS 都是将设备连接并配置到 IoT 中心的绝佳选择,例如:
- 零接触预配到单一 IoT 解决方案,无需在出厂(初始设置)时对 IoT 中心连接信息进行硬编码
- 跨多个中心对设备进行负载均衡
- 根据销售交易数据将设备连接到其所有者的 IoT 解决方案(多租户)
- 根据用例将设备连接到特定的 IoT 解决方案(解决方案隔离)
- 将设备连接到具有最低延迟的 IoT 中心(异地分片)
- 根据设备中的更改重新进行预配
- 滚动设备使用的密钥以连接到 IoT 中心(当不使用 X.509 证书进行连接时)
DPS 当前不支持预配嵌套的 IoT Edge 设备(父/子层次结构)。
预配过程
在使用 DPS 进行设备预配之前,需要执行两个步骤:
- 制造步骤,其中设备在出厂时创建和准备,以及
- 云设置步骤,其中将设备预配服务配置为自动预配 。
这两个步骤都可以合并到现有的制造和部署过程。 DPS 甚至简化了一些部署过程,这些过程需要手动操作来获取设备上的连接信息。
制造步骤
此步骤有关制造线上发生的情况。 此步骤中涉及的角色包括硅设计者、硅制造商、集成商和/或设备的最终制造商。 此步骤关于创建硬件本身。
DPS 没有在制造过程中引入新的步骤;而是与在设备上安装初始软件和(理想情况下)硬件安全模块 (HSM) 的现有步骤相关。 此步骤中不创建设备 ID,而是使用预配服务信息对设备进行编程,使设备能够在开启时调用预配服务来获取其连接信息/IoT 解决方案分配。
同样在此步骤中,制造商向设备部署人员/操作员提供识别性密钥信息。 可以通过简单方法提供该信息,例如,确认所有设备都有基于设备部署人员/操作员提供的签名证书生成的 X.509 证书;也可以通过复杂方法提供该信息,例如,从每个 TPM 设备提取 TPM 认可密钥的公共部分。 许多硅制造商提供这些服务。
云设置步骤
此步骤有关配置云实现正确的自动预配。 云设置步骤中通常涉及两种类型的用户:知道设备需要如何初始设置的用户(设备操作员),以及知道如何在 IoT 中心之间拆分设备的人员(解决方案操作员)。
需要对预配服务进行一次性初始设置,这通常由解决方案操作员来处理。 配置预配服务后,不需要修改,除非用例发生更改。
将服务配置为自动预配后,必须使其准备好注册设备。 此步骤由设备操作员完成,设备操作员知道设备的所需配置,并确保预配服务可以正确地证明设备的标识。 设备操作员从制造商处获取识别性密钥信息,并将其添加到注册列表。 添加新条目或现有条目更新为关于设备的最新信息后,随之会更新注册列表。
注册和预配
预配意味着各种含义,具体取决于使用术语的行业 。 在将 IoT 设备预配至其云解决方案的情况中,预配由两部分构成:
- 第一部分是通过注册设备来建立设备和 IoT 解决方案之间的初始连接。
- 第二部分是根据其注册到的解决方案的具体要求将适当的配置应用于设备。
只有这两个步骤都完成后,才能说该设备已完全预配。 某些云服务仅提供预配过程的第一步,即将设备注册到 IoT 解决方案终结点,但不提供初始配置。 DPS 自动执行这两个步骤,为设备提供无缝的预配体验。
设备预配服务的功能
DPS 具有许多功能,非常适合用于预配设备。
- 对基于 X.509 和 TPM 的标识 的安全证明支持。
- 注册列表,其中包含可能在某一时刻注册的设备/设备组的完整记录 。 注册列表包含有关设备注册后所需的设备配置信息,并可随时更新。
- 多个分配策略,用于根据自己的需要控制 DPS 向 IoT 中心分配设备的方式:最小延迟、均衡加权分布(默认值)和静态配置。 延迟是使用与流量管理器相同的方法确定的。 还支持通过托管在 Azure Functions 中的 Webhook 实现自己的分配策略的自定义分配。
- 监视和诊断日志记录,用于确保一切都正常工作。
- 多中心支持,允许 DPS 将设备分配给多个 IoT 中心。 DPS 可以跨多个 Azure 订阅来与中心通信。
- 跨区域支持使 DPS 能够将设备分配到其他区域的 IoT 中心。
- 静态数据加密允许使用 256 位 AES 加密(可用的最强大的分组加密法之一,并且符合 FIPS 140-2)透明地加密和解密 DPS 中的数据。
可以查看 DPS 术语以及同一部分的其他概念性文章,详细了解设备预配中涉及的概念和功能。
跨平台支持
与所有 Azure IoT 服务一样,DPS 可以在各种操作系统上跨平台运行。 Azure 采用各种语言提供了开放源代码 SDK,以便于连接设备并管理服务。 DPS 支持使用以下协议来连接设备:
- HTTPS
- AMQP
- 基于 Web 套接字的 AMQP
- MQTT
- 基于 Web 套接字的 MQTT
DPS 仅支持使用 HTTPS 连接来执行服务操作。
区域
DPS 已在许多区域中推出。 Azure 区域提供所有服务的支持区域列表。 可以在 Azure 状态页面上检查设备预配服务的可用性。
为了复能力和可靠性,我们建议部署到支持可用性区域的区域之一。
数据驻留注意事项
设备预配服务存储客户数据。 默认情况下,客户数据会复制到次要区域以支持灾难恢复方案。 对于东南亚和巴西南部的部署,客户可以选择通过禁用灾难恢复来仅将其数据保留在该区域。 有关详细信息,请参阅 Azure 中的跨区域复制。
DPS 对所有预配服务实例使用相同的设备预配终结点,并对最近可用的服务终结点执行流量负载平衡。 因此,身份验证机密可能会暂时转移到最初创建 DPS 实例的区域之外。 但是,连接设备后,设备数据将直接流向 DPS 实例的原始区域。 为确保数据不离开原始或次要区域,可使用专用终结点。 若要了解如何设置专用终结点,请参阅虚拟网络的 DPS 支持。
配额和限制
每个 Azure 订阅附带默认的配额限制,这些限制可能影响 IoT 解决方案的范围。 当前限制是每个订阅 10 个设备预配服务实例。
有关配额限制的详细信息,请参阅 Azure 订阅服务限制。
下表列出了适用于 Azure IoT 中心设备预配服务资源的限制。
资源 | 限制 | 可调? |
---|---|---|
每个 Azure 订阅的最大设备预配服务数 | 10 | 否 |
最大注册数 | 1,000,000 | 否 |
单个注册的最大数目 | 1,000,000 | 否 |
注册组的最大数目(X.509 证书) | 100 | 否 |
注册组的最大数目(对称密钥) | 100 | 否 |
最大 CA 数 | 25 | 否 |
链接的 IoT 中心的最大数量 | 50 | 否 |
消息的最大大小 | 96 KB | 否 |
提示
如果对称密钥注册组的硬性限制是一个阻塞性问题,建议使用单个注册作为解决方法。
设备预配服务具有以下速率限制。
费率 | 每单位值 | 可调? |
---|---|---|
Operations | 1,000/分钟/服务 | 否 |
设备注册数 | 1,000/分钟/服务 | 否 |
设备轮询操作 | 5/10 秒/设备 | 否 |
计费服务操作和定价
DPS 上的每个 API 调用都可以作为一个操作来计费。 这包括所有服务 API 和设备注册 API。
下表显示了每个 DPS 服务 API 操作的当前计费状态。 若要详细了解 DPS 定价,请选择Azure IoT 中心定价页顶部的“定价表”。 然后选择“IoT 中心设备预配服务”选项卡,并选择服务的货币和区域。
API | 操作 | 是否计费? |
---|---|---|
设备 API | 设备注册状态查找 | 否 |
设备 API | 操作状态查找 | 否 |
设备 API | 注册设备 | 是 |
DPS 服务 API(注册状态) | 删除 | 是 |
DPS 服务 API(注册状态) | Get | 是 |
DPS 服务 API(注册状态) | 查询 | 是 |
DPS 服务 API(注册组) | 创建或更新 | 是 |
DPS 服务 API(注册组) | 删除 | 是 |
DPS 服务 API(注册组) | Get | 是 |
DPS 服务 API(注册组) | 获取证明机制 | 是 |
DPS 服务 API(注册组) | 查询 | 是 |
DPS 服务 API(注册组) | 运行批量操作 | 是 |
DPS 服务 API(单个注册) | 创建或更新 | 是 |
DPS 服务 API(单个注册) | 删除 | 是 |
DPS 服务 API(单个注册) | Get | 是 |
DPS 服务 API(单个注册) | 获取证明机制 | 是 |
DPS 服务 API(单个注册) | 查询 | 是 |
DPS 服务 API(单个注册) | 运行批量操作 | 是 |
DPS 证书 API | 创建或更新 | 否 |
DPS 证书 API | 删除 | 否 |
DPS 证书 API | 生成验证码 | 否 |
DPS 证书 API | Get | 否 |
DPS 证书 API | 列表 | 否 |
DPS 证书 API | 验证证书 | 否 |
IoT DPS 资源 API | 检查预配服务名称可用性 | 否 |
IoT DPS 资源 API | 创建或更新 | 否 |
IoT DPS 资源 API | 删除 | 否 |
IoT DPS 资源 API | Get | 否 |
IoT DPS 资源 API | 获取操作结果 | 否 |
IoT DPS 资源 API | 按资源组列表 | 否 |
IoT DPS 资源 API | 按订阅列出 | 否 |
IoT DPS 资源 API | 按键列出 | 否 |
IoT DPS 资源 API | 列出密钥名称的密钥 | 否 |
IoT DPS 资源 API | 列出有效 SKU | 否 |
IoT DPS 资源 API | 更新 | 否 |
相关 Azure 组件
DPS 通过 Azure IoT 中心将设备预配自动化。 了解有关 IoT 中心的详细信息。
注意
DPS 当前不支持(父/子层次结构)嵌套边缘设备预配。
IoT Central 应用程序使用内部 DPS 实例来管理设备连接。 若要了解详细信息,请参阅设备如何连接到 IoT Central。
后续步骤
现已大致了解在 Azure 中配置 IoT 设备。 后续步骤是尝试端对端 IoT 方案。