You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/iot-dps/about-iot-dps.md
+31-61Lines changed: 31 additions & 61 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@ title: Overview of Azure IoT Hub Device Provisioning Service
3
3
description: Describes production scale device provisioning in Azure with the Device Provisioning Service (DPS) and IoT Hub
4
4
author: kgremban
5
5
ms.author: kgremban
6
-
ms.date: 03/12/2024
6
+
ms.date: 02/27/2025
7
7
ms.topic: overview
8
8
ms.service: azure-iot-hub
9
9
services: iot-dps
@@ -25,11 +25,11 @@ The following diagram describes what goes on behind the scenes to provision a de
25
25
Before the device provisioning flow begins, there are two manual steps to prepare:
26
26
27
27
* On the device side, the device manufacturer prepares the device for provisioning by preconfiguring it with its authentication credentials and assigned Device Provisioning Service ID and endpoint.
28
-
* On the cloud side, you or the device manufacturer prepares the Device Provisioning Service instance with individual enrollments and enrollment groups that identify valid devices and define how they should be provisioned.
28
+
* On the cloud side, you or the device manufacturer prepares the Device Provisioning Service instance with enrollments that identify valid devices and define how they should be provisioned.
29
29
30
-
Once the device and cloud are set up for provisioning, the following steps kick off automatically as soon as the device powers on for the first time:
30
+
Once the device and cloud are set up for provisioning, the following steps begin automatically when the device powers on for the first time:
31
31
32
-
1. The device powers on for the first time, then connects to the DPS endpoint and presents it authentication credentials.
32
+
1. The device powers on for the first time, then connects to the DPS endpoint and presents its authentication credentials.
33
33
1. The DPS instance checks the identity of the device against its enrollment list. Once the device identity is verified, DPS assigns the device to an IoT hub and registers it in the hub.
34
34
1. The DPS instance receives the device ID and registration information from the assigned hub and passes that information back to the device.
35
35
1. The device uses its registration information to connect directly to its assigned IoT hub and authenticate.
@@ -47,7 +47,7 @@ There are many provisioning scenarios in which DPS is an excellent choice for ge
47
47
* Reprovisioning based on a change in the device
48
48
* Rolling the keys used by the device to connect to IoT Hub (when not using X.509 certificates to connect)
49
49
50
-
Provisioning of nested IoT Edge devices (parent/child hierarchies) isn't currently supported by DPS.
50
+
DPS doesn't support provisioning of nested IoT Edge devices (parent/child hierarchies).
51
51
52
52
## Provisioning process
53
53
@@ -60,9 +60,9 @@ Both of these steps can be incorporated into existing manufacturing and deployme
60
60
61
61
### Manufacturing step
62
62
63
-
This step is all about what happens on the manufacturing line. The roles involved in this step include silicon designer, silicon manufacturer, integrator and/or the end manufacturer of the device. This step is concerned with creating the hardware itself.
63
+
This step is all about what happens on the manufacturing line. The roles involved in this step include silicon designer, silicon manufacturer, integrator, and/or the end manufacturer of the device. This step is concerned with creating the hardware itself.
64
64
65
-
DPS doesn't introduce a new step in the manufacturing process; rather, it ties into the existing step that installs the initial software and (ideally) the hardware security module (HSM) on the device. Instead of creating a device ID in this step, the device is programmed with the provisioning service information, enabling it to call the provisioning service to get its connection info/IoT solution assignment when it's switched on.
65
+
DPS doesn't introduce a new step in the manufacturing process; rather, it ties into the existing step that installs the initial software and (ideally) the hardware security module (HSM) on the device. Instead of creating a device ID in this step, the device is programmed with the provisioning service information, enabling it to call the provisioning service to get its connection info/IoT solution assignment when it turns on.
66
66
67
67
Also in this step, the manufacturer supplies the device deployer/operator with identifying key information. Supplying that information could be as simple as confirming that all devices have an X.509 certificate generated from a signing certificate provided by the device deployer/operator, or as complicated as extracting the public portion of a TPM endorsement key from each TPM device. Many silicon manufacturers offer these services.
68
68
@@ -81,15 +81,15 @@ After the service is configured for automatic provisioning, it must be prepared
81
81
* The first part is establishing the initial connection between the device and the IoT solution by registering the device.
82
82
* The second part is applying the proper configuration to the device based on the specific requirements of the solution it was registered to.
83
83
84
-
Once both of those two steps have been completed, we can say that the device has been fully provisioned. Some cloud services only provide the first step of the provisioning process, registering devices to the IoT solution endpoint, but don't provide the initial configuration. DPS automates both steps to provide a seamless provisioning experience for the device.
84
+
Once both of those steps are completed, we can say that the device is fully provisioned.
85
85
86
86
## Features of the Device Provisioning Service
87
87
88
88
DPS has many features, making it ideal for provisioning devices.
89
89
90
90
***Secure attestation** support for both X.509 and TPM-based identities.
91
-
***Enrollment list** containing the complete record of devices/groups of devices that may at some point register. The enrollment list contains information about the desired configuration of the device once it registers, and it can be updated at any time.
92
-
***Multiple allocation policies** to control how DPS assigns devices to IoT hubs in support of your scenarios: Lowest latency, evenly weighted distribution (default), and static configuration. Latency is determined using the same method as [Traffic Manager](../traffic-manager/traffic-manager-routing-methods.md#performance). Custom allocation, which lets you implement your own allocation policies via webhooks hosted in Azure Functions is also supported.
91
+
***Enrollment list** containing the complete record of devices/groups of devices that might register at some point. The enrollment list contains information about the desired configuration of a device once it registers, and it can be updated at any time.
92
+
***Multiple allocation policies** to control how DPS assigns devices to IoT hubs in support of your scenarios: Lowest latency, evenly weighted distribution (default), and static configuration. Custom allocationlets you implement your own allocation policies via webhooks hosted in Azure Functions instead of using one of the defaults.
93
93
***Monitoring and diagnostics logging** to make sure everything is working properly.
94
94
***Multi-hub support** allows DPS to assign devices to more than one IoT hub. DPS can talk to hubs across multiple Azure subscriptions.
95
95
***Cross-region support** allows DPS to assign devices to IoT hubs in other regions.
@@ -99,93 +99,63 @@ You can learn more about the concepts and features involved in device provisioni
99
99
100
100
## Cross-platform support
101
101
102
-
Just like all Azure IoT services, DPS works cross-platform with various operating systems. Azure offers [open-source SDKs](https://github.com/Azure/azure-iot-sdks) in various languages to facilitate connecting devices and managing the service. DPS supports the following protocols for connecting devices:
102
+
Just like all Azure IoT services, DPS works cross-platform with various operating systems. Azure offers [open-source SDKs](https://github.com/Azure/azure-iot-sdks) in various languages to facilitate connecting devices and managing the service.
103
103
104
-
* HTTPS
104
+
DPS supports the following protocols for connecting devices:
105
+
106
+
* HTTPS*
105
107
* AMQP
106
108
* AMQP over web sockets
107
109
* MQTT
108
110
* MQTT over web sockets
109
111
110
-
DPS only supports HTTPS connections for service operations.
112
+
*DPS only supports HTTPS connections for service operations.
111
113
112
114
## Regions
113
115
114
-
DPS is available in many regions. The list of supported regions for all services is available at [Azure Regions](https://azure.microsoft.com/regions/). You can check availability of the Device Provisioning Service on the [Azure Status](https://azure.microsoft.com/status/) page.
116
+
DPS is available in many regions. For the list of supported regions for all services, see [Azure regions](https://azure.microsoft.com/regions/). You can check availability of the Device Provisioning Service on the [Azure status](https://azure.microsoft.com/status/) page.
115
117
116
-
For resiliency and reliability, we recommend deploying to one of the regions that support [Availability Zones](iot-dps-ha-dr.md).
118
+
For resiliency and reliability, we recommend deploying to one of the regions that support [availability zones](iot-dps-ha-dr.md).
117
119
118
120
### Data residency consideration
119
121
120
122
Device Provisioning Service stores customer data. By default, customer data is replicated to a secondary region to support disaster recovery scenarios. For deployments in Southeast Asia and Brazil South, customers can choose to keep their data only within that region by [disabling disaster recovery](./iot-dps-ha-dr.md). For more information, see [Cross-region replication in Azure](../reliability/cross-region-replication-azure.md).
121
123
122
-
DPS uses the same [device provisioning endpoint](concepts-service.md#device-provisioning-endpoint) for all provisioning service instances, and performs traffic load balancing to the nearest available service endpoint. As a result, authentication secrets may be temporarily transferred outside of the region where the DPS instance was initially created. However, once the device is connected, the device data flows directly to the original region of the DPS instance. To ensure that your data doesn't leave the original or secondary region, use a private endpoint. To learn how to set up private endpoints, see [DPS support for virtual networks](virtual-network-support.md#private-endpoint-limitations).
124
+
DPS uses the same [device provisioning endpoint](concepts-service.md#device-provisioning-endpoint) for all provisioning service instances, and performs traffic load balancing to the nearest available service endpoint. As a result, authentication secrets might be temporarily transferred outside of the region where the DPS instance was initially created. However, once the device is connected, the device data flows directly to the original region of the DPS instance. To ensure that your data doesn't leave the original or secondary region, use a private endpoint. To learn how to set up private endpoints, see [DPS support for virtual networks](virtual-network-support.md#private-endpoint-limitations).
123
125
124
-
## Quotas and Limits
126
+
## Quotas and limits
125
127
126
-
Each Azure subscription has default quota limits in place that could impact the scope of your IoT solution. The current limit is 10 Device Provisioning Service instances per subscription.
128
+
Each Azure subscription has default quota limits in place that could affect the scope of your IoT solution. The current limit is 10 Device Provisioning Service instances per subscription.
127
129
128
-
For more information about quota limits, see [Azure Subscription Service Limits](../azure-resource-manager/management/azure-subscription-service-limits.md).
130
+
For more information about quota limits, see [Azure subscription service limits](../azure-resource-manager/management/azure-subscription-service-limits.md).
Each API call on DPS is billable as one *operation*. This includes all the service APIs and the device registration API.
136
+
Each API call on DPS, whether from the service APIs or the device registration API, is billable as one *operation*.
135
137
136
-
The tables below show the current billable status for each DPS service API operation. To learn more about pricing for DPS, select **Pricing table** at the top of the [Azure IoT Hub pricing](https://azure.microsoft.com/pricing/details/iot-hub/) page. Then select the **IoT Hub Device Provisioning Service** tab and the currency and region for your service.
138
+
The following tables show the current billable status for each DPS API operation. To learn more about pricing for DPS, select **Pricing table** at the top of the [Azure IoT Hub pricing](https://azure.microsoft.com/pricing/details/iot-hub/) page. Then select the **IoT Hub Device Provisioning Service** tab and the currency and region for your service.
137
139
138
140
| API | Operation | Billable? |
139
141
| --------------- | ------- | -- |
140
-
| Device API |[Device Registration Status Lookup](/rest/api/iot-dps/device/runtime-registration/device-registration-status-lookup)| No|
141
-
| Device API |[Operation Status Lookup](/rest/api/iot-dps/device/operation-groups)| No |
142
-
| Device API |[Register Device](/rest/api/iot-dps/device/runtime-registration/register-device)| Yes |
143
-
| DPS Service API (registration state) |[Delete](/rest/api/iot-dps/service/device-registration-state/delete)| Yes|
144
-
| DPS Service API (registration state) |[Get](/rest/api/iot-dps/service/device-registration-state/get)| Yes|
145
-
| DPS Service API (registration state) |[Query](/rest/api/iot-dps/service/device-registration-state/query)| Yes|
146
-
| DPS Service API (enrollment group) |[Create or Update](/rest/api/iot-dps/service/enrollment-group/create-or-update)| Yes|
147
-
| DPS Service API (enrollment group) |[Delete](/rest/api/iot-dps/service/enrollment-group/delete)| Yes|
148
-
| DPS Service API (enrollment group) |[Get](/rest/api/iot-dps/service/enrollment-group/get)| Yes|
149
-
| DPS Service API (enrollment group) |[Get Attestation Mechanism](/rest/api/iot-dps/service/enrollment-group/get-attestation-mechanism)| Yes|
150
-
| DPS Service API (enrollment group) |[Query](/rest/api/iot-dps/service/enrollment-group/query)| Yes|
151
-
| DPS Service API (enrollment group) |[Run Bulk Operation](/rest/api/iot-dps/service/enrollment-group/run-bulk-operation)| Yes|
152
-
| DPS Service API (individual enrollment) |[Create or Update](/rest/api/iot-dps/service/individual-enrollment/create-or-update)| Yes|
153
-
| DPS Service API (individual enrollment)|[Delete](/rest/api/iot-dps/service/individual-enrollment/delete)| Yes|
154
-
| DPS Service API (individual enrollment)|[Get](/rest/api/iot-dps/service/individual-enrollment/get)| Yes|
155
-
| DPS Service API (individual enrollment)|[Get Attestation Mechanism](/rest/api/iot-dps/service/individual-enrollment/get-attestation-mechanism)| Yes|
156
-
| DPS Service API (individual enrollment)|[Query](/rest/api/iot-dps/service/individual-enrollment/query)| Yes|
157
-
| DPS Service API (individual enrollment)|[Run Bulk Operation](/rest/api/iot-dps/service/individual-enrollment/run-bulk-operation)| Yes|
158
-
| DPS Certificate API|[Create or Update](/rest/api/iot-dps/dps-certificate/create-or-update)| No |
159
-
| DPS Certificate API|[Delete](/rest/api/iot-dps/dps-certificate/delete)| No |
| DPS Certificate API|[Verify Certificate](/rest/api/iot-dps/dps-certificate/verify-certificate)| No |
164
-
| IoT DPS Resource API|[Check Provisioning Service Name Availability](/rest/api/iot-dps/iot-dps-resource/check-provisioning-service-name-availability)| No |
165
-
| IoT DPS Resource API|[Create or Update](/rest/api/iot-dps/iot-dps-resource/create-or-update)| No |
|[DPS Device API - runtime registration](/rest/api/iot-dps/device/runtime-registration)| Device registration status lookup | No |
143
+
|| Operation status lookup | No |
144
+
|| Register device | Yes |
145
+
|[DPS Service API - device registration state](/rest/api/iot-dps/service/device-registration-state)| All | Yes |
146
+
|[DPS Service API - enrollment group](/rest/api/iot-dps/service/enrollment-group)| All | Yes |
147
+
|[DPS Service API - individual enrollment](/rest/api/iot-dps/service/individual-enrollment)| All | Yes |
148
+
|[DPS Certificate API](/rest/api/iot-dps/dps-certificate)| All | No |
149
+
|[IoT DPS Resource API](/rest/api/iot-dps/iot-dps-resource)| All | No |
175
150
176
151
## Related Azure components
177
152
178
153
DPS automates device provisioning with Azure IoT Hub. Learn more about [IoT Hub](../iot-hub/index.yml).
179
154
180
-
> [!NOTE]
181
-
> Provisioning of nested edge devices (parent/child hierarchies) is not currently supported by DPS.
182
-
183
155
IoT Central applications use an internal DPS instance to manage device connections. To learn more, see [How devices connect to IoT Central](../iot-central/core/overview-iot-central-developer.md).
184
156
185
157
## Next steps
186
158
187
-
You now have an overview of provisioning IoT devices in Azure. The next step is to try out an end-to-end IoT scenario.
188
-
189
159
[Set up IoT Hub Device Provisioning Service with the Azure portal](quick-setup-auto-provision.md)
190
160
191
161
[Create and provision a simulated device](quick-create-simulated-device-tpm.md)
0 commit comments