Skip to content

Commit 0806b1b

Browse files
Merge pull request #217332 from JimacoMS4/update-x509-attestation-topic-2
Emphasize 1 and only 1 enrollment entry per cert - 2nd cut
2 parents 6d484a9 + e58ff2a commit 0806b1b

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

articles/iot-dps/concepts-x509-attestation.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ To learn more, see [Authenticate devices signed with X.509 CA certificates](../i
6060
The provisioning service exposes two enrollment types that you can use to control device access with the X.509 attestation mechanism:
6161

6262
- [Individual enrollment](./concepts-service.md#individual-enrollment) entries are configured with the device certificate associated with a specific device. These entries control enrollments for specific devices.
63-
- [Enrollment group](./concepts-service.md#enrollment-group) entries are associated with a specific intermediate or root CA certificate. These entries control enrollments for all devices that have that intermediate or root certificate in their certificate chain.
63+
- [Enrollment group](./concepts-service.md#enrollment-group) entries are associated with a specific intermediate or root CA certificate. These entries control enrollments for all devices that have that intermediate or root certificate in their certificate chain.
64+
65+
A certificate can be specified in only one enrollment entry in your DPS instance.
6466

6567
### Mutual TLS support
6668

@@ -93,18 +95,22 @@ If the device sends the full device chain as follows during provisioning, then D
9395
9496
### DPS order of operations with certificates
9597

96-
When a device connects to the provisioning service, the service prioritizes more specific enrollment entries over less specific enrollment entries. That is, if an individual enrollment for the device exists, the provisioning service applies that entry. If there is no individual enrollment for the device and an enrollment group for the first intermediate certificate in the device's certificate chain exists, the service applies that entry, and so on, down the chain to the root. The service applies the first applicable entry that it finds, such that:
98+
When a device connects to the provisioning service, the service walks its certificate chain beginning with the device (leaf) certificate and looks for a corresponding enrollment entry. It uses the first entry that it finds in the chain to determine whether to provision the device. That is, if an individual enrollment for the device (leaf) certificate exists, the provisioning service applies that entry. If there isn't an individual enrollment for the device, the service looks for an enrollment group that corresponds to the first intermediate certificate. If it finds one, it applies that entry; otherwise, it looks for an enrollment group for the next intermediate certificate, and so on down the chain to the root.
99+
100+
The service applies the first entry that it finds, such that:
97101

98102
- If the first enrollment entry found is enabled, the service provisions the device.
99-
- If the first enrollment entry found is disabled, the service does not provision the device.
100-
- If no enrollment entry is found for any of the certificates in the device's certificate chain, the service does not provision the device.
103+
- If the first enrollment entry found is disabled, the service doesn't provision the device.
104+
- If no enrollment entry is found for any of the certificates in the device's certificate chain, the service doesn't provision the device.
105+
106+
Note that each certificate in a device's certificate chain can be specified in an enrollment entry, but it can be specified in only one entry in the DPS instance.
101107

102-
This mechanism and the hierarchical structure of certificate chains provides powerful flexibility in how you can control access for individual devices as well as for groups of devices. For example, imagine five devices with the following certificate chains:
108+
This mechanism and the hierarchical structure of certificate chains provides powerful flexibility in how you can control access for individual devices as well as for groups of devices. For example, imagine five devices with the following certificate chains:
103109

104110
- *Device 1*: root certificate -> certificate A -> device 1 certificate
105111
- *Device 2*: root certificate -> certificate A -> device 2 certificate
106112
- *Device 3*: root certificate -> certificate A -> device 3 certificate
107113
- *Device 4*: root certificate -> certificate B -> device 4 certificate
108114
- *Device 5*: root certificate -> certificate B -> device 5 certificate
109115

110-
Initially, you can create a single enabled group enrollment entry for the root certificate to enable access for all five devices. If certificate B later becomes compromised, you can create a disabled enrollment group entry for certificate B to prevent *Device 4* and *Device 5* from enrolling. If still later *Device 3* becomes compromised, you can create a disabled individual enrollment entry for its certificate. This revokes access for *Device 3*, but still allows *Device 1* and *Device 2* to enroll.
116+
Initially, you can create a single enabled group enrollment entry for the root certificate to enable access for all five devices. If certificate B later becomes compromised, you can create a disabled enrollment group entry for certificate B to prevent *Device 4* and *Device 5* from enrolling. If still later *Device 3* becomes compromised, you can create a disabled individual enrollment entry for its certificate. This revokes access for *Device 3*, but still allows *Device 1* and *Device 2* to enroll.

0 commit comments

Comments
 (0)