使用 Windows 上的 TPM 大规模创建和预配 IoT Edge 设备
适用于: IoT Edge 1.1
重要
IoT Edge 1.1 终止支持日期为 2022 年 12 月 13 日。 请查看 Microsoft 产品生命周期,了解此产品、服务、技术或 API 的受支持情况。 有关更新到最新版本的 IoT Edge 的详细信息,请参阅 更新 IoT Edge。
本文提供有关使用受信任的平台模块(TPM)自动预配适用于 Windows 设备的 Azure IoT Edge 的说明。 可以通过 Azure IoT 中心设备预配服务自动预配 IoT Edge 设备。 如果你不熟悉自动预配过程,请在继续操作之前查看预配概述。
注释
从 Azure IoT Edge 版本 1.2 开始,不支持使用 Windows 容器的 Azure IoT Edge。
请考虑使用新方法在 Windows 设备上运行 IoT Edge,适用于 Linux 的 Azure IoT Edge on Windows。
若要在 Windows 上使用适用于 Linux 的 Azure IoT Edge,可以按照 等效的操作指南中的步骤进行操作。
本文概述了两种方法。 根据解决方案的体系结构选择你的首选方法:
- 使用物理 TPM 硬件自动配置 Windows 设备。
- 自动预配一台运行模拟 TPM 的 Windows 设备。 建议仅将此方法用作测试方案。 模拟 TPM 无法提供与物理 TPM 相同的安全性。
具体说明因你的方法而异,因此请确保接下来按照正确选项卡上的说明操作。
任务如下:
先决条件
物理 TPM 和虚拟 TPM 解决方案的先决条件相同。
云资源
- 一个活动的 IoT 中心
- 在 Azure 中,一个与您的 IoT 中心链接的 IoT 中心设备预配服务实例
- 如果没有设备预配服务实例,则可按照 IoT 中心设备预配服务快速入门的创建新的 IoT 中心设备预配服务和将 IoT 中心和设备预配服务相链接部分的说明进行操作。
- 运行设备预配服务后,从概述页复制“ID 范围”的值。 配置 IoT Edge 运行时时,需要使用此值。
设备要求
Windows 开发环境。 本文使用 Windows 10。
注释
将 TPM 证明与设备预配服务结合使用时,需要 TPM 2.0。
使用 TPM 时,只能创建单个设备预配服务注册,不能创建组设备预配服务注册。
设置你的 TPM
在本部分中,将生成一个工具,可用于检索 TPM 的注册 ID 和认可密钥。
按照 设置 Windows 开发环境 中的步骤安装和生成适用于 C 的 Azure IoT 设备 SDK。
在提升权限的 PowerShell 会话中运行以下命令,以构建用于检索您的 TPM 设备预配信息的 SDK 工具。
cd azure-iot-sdk-c\cmake cmake -Duse_prov_client:BOOL=ON .. cd provisioning_client\tools\tpm_device_provision make .\tpm_device_provision
输出窗口显示设备的 注册 ID 和 认可密钥。 请复制这些值,以便稍后在设备预配服务中为设备创建单个注册时使用。
小提示
如果不想使用 SDK 工具检索信息,则需要找到另一种方法来获取预配信息。 认可密钥对于每个 TPM 芯片都是唯一的,需从与之关联的 TPM 芯片制造商处获取。 您可以为您的 TPM 设备生成唯一的注册 ID。 例如,可以创建认可密钥的 SHA-256 哈希。
获得注册 ID 和认可密钥后,即可继续操作。
创建设备预配服务注册
使用 TPM 的预配信息在设备预配服务中创建单个注册。
在设备预配服务中创建注册时,可以声明“初始设备孪生状态”。 在设备孪生中可以设置标记,以便按解决方案中所用的任何指标(例如区域、环境、位置或设备类型)将设备分组。 这些标记用于创建自动部署。
小提示
本文中的步骤适用于 Azure 门户,但你也可使用 Azure CLI 创建单个注册。 欲了解更多信息,请参阅 az iot dps enrollment。 作为 CLI 命令的一部分,使用 edge-enabled 标志指定注册适用于单个 IoT Edge设备。
在 Azure 门户中,转到你的 IoT 中心设备预配服务实例。
在“设置”下,选择“管理注册”。
选择“添加单个注册”,然后完成以下步骤以配置注册:
对于“机制”,请选择“TPM”。
提供从 VM 或物理设备中复制的认可密钥和注册 ID。
如果您愿意,可以为您的设备提供一个 ID。 如果未提供设备 ID,则会使用注册 ID。
选择“True”,以声明 VM 或物理设备是 IoT Edge 设备。
选择要将设备连接到的已关联的 IoT 中心,或者选择“链接到新的 IoT 中心”。 可以选择多个中心,设备将会根据所选分配策略被分配到其中一个中心。
如果需要,可以将标记值添加到“初始设备孪生状态”。 可以使用标记将设备组指定为模块部署的目标。 有关详细信息,请参阅大规模部署 IoT Edge 模块。
选择 保存。
既然此设备已存在注册,IoT Edge 运行时在安装期间可以自动预配设备。
安装 IoT Edge
在本部分中,你将为 IoT Edge 准备 Windows VM 或物理设备。 然后安装 IoT Edge。
Azure IoT Edge依赖于与 OCI 兼容的容器运行时。 Moby(基于 Moby 的引擎)包含在安装脚本中,这意味着没有安装引擎的其他步骤。
要安装 IoT Edge 运行时软件:
以管理员身份运行 PowerShell。
使用 PowerShell 的 AMD64 会话,而不是 PowerShell(x86)。 如果不确定所使用的会话类型,请运行以下命令:
(Get-Process -Id $PID).StartInfo.EnvironmentVariables["PROCESSOR_ARCHITECTURE"]
运行 Deploy-IoTEdge 命令,该命令执行以下任务:
- 检查 Windows 设备是否在受支持的版本上
- 启用容器功能
- 下载 Moby 引擎和 IoT Edge 运行时
. {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; ` Deploy-IoTEdge
如果系统提示,请重启设备。
在设备上安装 IoT Edge 时,可以使用其他参数来修改该过程,包括:
- 将流量引导通过代理服务器
- 将安装程序指向用于脱机安装的本地目录
有关这些附加参数的详细信息,请参阅 具有 Windows 容器的 IoT Edge 的 PowerShell 脚本。
为设备预配其云标识
一旦在设备上安装了运行时,请使用设备用于连接到设备预配服务和 IoT 中心的信息来配置设备。
了解在上一部分中收集的设备预配服务 ID 范围 和设备 注册 ID 。
在管理员模式下打开 PowerShell 窗口。 安装 IoT Edge 而不是 PowerShell(x86)时,请务必使用 PowerShell 的 AMD64 会话。
该
Initialize-IoTEdge
命令在计算机上配置 IoT Edge 运行时。 此命令默认使用 Windows 容器进行手动预配。 使用-Dps
标志使用设备预配服务,而不是手动预配。请将您之前收集的数据替换到占位符
paste_scope_id_here
和paste_registration_id_here
中。. {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; ` Initialize-IoTEdge -Dps -ScopeId paste_scope_id_here -RegistrationId paste_registration_id_here
验证是否成功安装
如果运行时已成功启动,请转到 IoT 中心,并开始将 IoT Edge 模块部署到设备。 在设备上使用以下命令验证是否已成功安装和启动运行时。
检查 IoT Edge 服务的状态。
Get-Service iotedge
检查过去 5 分钟内的服务日志。
. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog
列出正在运行的模块。
iotedge list
后续步骤
使用设备预配服务注册过程可以在预配新设备的同时,设置设备 ID 和设备孪生标记。 可以在自动设备管理中,使用这些值将单个设备或设备组指定为目标。