Skip to content

Commit 70a68a2

Browse files
committed
DOE secrets management and no-auth
1 parent ee1f772 commit 70a68a2

File tree

4 files changed

+85
-24
lines changed

4 files changed

+85
-24
lines changed

articles/iot-operations/connect-to-cloud/howto-configure-adlsv2-endpoint.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ms.author: patricka
66
ms.service: azure-iot-operations
77
ms.subservice: azure-data-flows
88
ms.topic: how-to
9-
ms.date: 10/30/2024
9+
ms.date: 11/07/2024
1010
ai-usage: ai-assisted
1111

1212
#CustomerIntent: As an operator, I want to understand how to configure dataflow endpoints for Azure Data Lake Storage Gen2 in Azure IoT Operations so that I can send data to Azure Data Lake Storage Gen2.
@@ -305,9 +305,23 @@ To enhance security and follow the principle of least privilege, you can generat
305305

306306
# [Portal](#tab/portal)
307307

308+
> [!IMPORTANT]
309+
> To use the operations experience portal to manage secrets, Azure IoT Operations must first be enabled with secure settings by configuring an Azure Key Vault and enabling workload identities. To learn more, see [Enable secure settings in Azure IoT Operations deployment](../deploy-iot-ops/howto-enable-secure-settings.md).
310+
308311
In the operations experience dataflow endpoint settings page, select the **Basic** tab then choose **Authentication method** > **Access token**.
309312

310-
Enter the access token secret name you created in **Access token secret name**.
313+
Here, under **Synced secret name**, enter a name for the secret. This name is used to reference the secret in the dataflow endpoint settings and is the name of the secret as stored in the Kubernetes cluster.
314+
315+
Then, under **Access token secret name**, select **Add reference** to add the secret from Azure Key Vault. On the next page, select the secret from Azure Key Vault with **Add from Azure Key Vault** or **Create new** secret.
316+
317+
If you select **Create new**, enter the following settings:
318+
319+
| Setting | Description |
320+
| ------- | ----------- |
321+
| Secret name | The name of the secret in Azure Key Vault. Pick a name that is easy to remember to select the secret later from the list. |
322+
| Secret value | The SAS token in the format of `'sv=2022-11-02&ss=b&srt=c&sp=rwdlax&se=2023-07-22T05:47:40Z&st=2023-07-21T21:47:40Z&spr=https&sig=<signature>'`. |
323+
| Set activation date | If turned on, the date when the secret becomes active. |
324+
| Set expiration date | If turned on, the date when the secret expires. |
311325

312326
To learn more about secrets, see [Create and manage secrets in Azure IoT Operations Preview](../secure-iot-ops/howto-manage-secrets.md).
313327

articles/iot-operations/connect-to-cloud/howto-configure-kafka-endpoint.md

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ms.author: patricka
66
ms.service: azure-iot-operations
77
ms.subservice: azure-data-flows
88
ms.topic: how-to
9-
ms.date: 11/06/2024
9+
ms.date: 11/07/2024
1010
ai-usage: ai-assisted
1111

1212
#CustomerIntent: As an operator, I want to understand how to configure dataflow endpoints for Kafka in Azure IoT Operations so that I can send data to and from Kafka endpoints.
@@ -142,16 +142,30 @@ kubectl apply -f <FILE>.yaml
142142

143143
# [Portal](#tab/portal)
144144

145+
> [!IMPORTANT]
146+
> To use the operations experience portal to manage secrets, Azure IoT Operations must first be enabled with secure settings by configuring an Azure Key Vault and enabling workload identities. To learn more, see [Enable secure settings in Azure IoT Operations deployment](../deploy-iot-ops/howto-enable-secure-settings.md).
147+
145148
In the operations experience dataflow endpoint settings page, select the **Basic** tab then choose **Authentication method** > **SASL**.
146149

147150
Enter the following settings for the endpoint:
148151

149152
| Setting | Description |
150153
| ------------------------------ | ------------------------------------------------------------------------------------------------- |
151154
| SASL type | Choose `Plain`. |
152-
| Synced secret name | The name of the Kubernetes secret that contains the connection string. |
153-
| Username reference or token secret | The reference to the username or token secret used for SASL authentication. |
154-
| Password reference of token secret | The reference to the password or token secret used for SASL authentication. |
155+
| Synced secret name | Enter a name of the Kubernetes secret that contains the connection string. |
156+
| Username reference or token secret | The reference to the username or token secret used for SASL authentication. Either pick it from the Key Vault list or create a new one. The value must be `$ConnectionString`. |
157+
| Password reference of token secret | The reference to the password or token secret used for SASL authentication. Either pick it from the Key Vault list or create a new one. The value must be in the format of `Endpoint=sb://<NAMESPACE>.servicebus.windows.net/;SharedAccessKeyName=<KEY-NAME>;SharedAccessKey=<KEY>`. |
158+
159+
After you select **Add reference**, if you select **Create new**, enter the following settings:
160+
161+
| Setting | Description |
162+
| ------- | ----------- |
163+
| Secret name | The name of the secret in Azure Key Vault. Pick a name that is easy to remember to select the secret later from the list. |
164+
| Secret value | For the username, enter `$ConnectionString`. For the password, enter the connection string in the format `Endpoint=sb://<NAMESPACE>.servicebus.windows.net/;SharedAccessKeyName=<KEY-NAME>;SharedAccessKey=<KEY>`. |
165+
| Set activation date | If turned on, the date when the secret becomes active. |
166+
| Set expiration date | If turned on, the date when the secret expires. |
167+
168+
To learn more about secrets, see [Create and manage secrets in Azure IoT Operations Preview](../secure-iot-ops/howto-manage-secrets.md).
155169

156170
# [Bicep](#tab/bicep)
157171

@@ -469,11 +483,17 @@ To use anonymous authentication, update the authentication section of the Kafka
469483

470484
# [Portal](#tab/portal)
471485

472-
Not yet supported in the operations experience. See [known issues](../troubleshoot/known-issues.md).
486+
In the operations experience dataflow endpoint settings page, select the **Basic** tab then choose **Authentication method** > **None**.
473487

474488
# [Bicep](#tab/bicep)
475489

476-
Not yet supported with Bicep. See [known issues](../troubleshoot/known-issues.md).
490+
```bicep
491+
kafkaSettings: {
492+
authentication: {
493+
method: 'Anonymous'
494+
}
495+
}
496+
```
477497

478498
# [Kubernetes](#tab/kubernetes)
479499

articles/iot-operations/connect-to-cloud/howto-configure-mqtt-endpoint.md

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ms.author: patricka
66
ms.service: azure-iot-operations
77
ms.subservice: azure-data-flows
88
ms.topic: how-to
9-
ms.date: 11/01/2024
9+
ms.date: 11/07/2024
1010
ai-usage: ai-assisted
1111

1212
#CustomerIntent: As an operator, I want to understand how to understand how to configure dataflow endpoints for MQTT sources and destinations in Azure IoT Operations so that I can send data to and from MQTT brokers.
@@ -407,23 +407,43 @@ To customize the MQTT endpoint settings, see the following sections for more inf
407407

408408
## Available authentication methods
409409

410-
The following authentication methods are available for MQTT broker dataflow endpoints. For more information about enabling secure settings by configuring an Azure Key Vault and enabling workload identities, see [Enable secure settings in Azure IoT Operations deployment](../deploy-iot-ops/howto-enable-secure-settings.md).
410+
The following authentication methods are available for MQTT broker dataflow endpoints.
411411

412412
### X.509 certificate
413413

414414
Many MQTT brokers, like Event Grid, support X.509 authentication. Dataflows can present a client X.509 certificate and negotiate the TLS communication.
415415

416+
To use with dataflows, the certificate and private key must in PEM format and not password protected.
417+
418+
> [!TIP]
419+
> PEM format is a common format for certificates and keys. Certificates and keys in PEM format are base64-encoded ASCII files with a headers that look like `-----BEGIN CERTIFICATE-----` and `-----BEGIN EC PRIVATE KEY----`
420+
>
421+
> If you have a certificate in another format, you can convert it to PEM format using OpenSSL. To learn more, see [How to convert a certificate into the appropriate format](https://knowledge.digicert.com/solution/how-to-convert-a-certificate-into-the-appropriate-format).
422+
416423
# [Portal](#tab/portal)
417424

425+
> [!IMPORTANT]
426+
> To use the operations experience portal to manage secrets, Azure IoT Operations must first be enabled with secure settings by configuring an Azure Key Vault and enabling workload identities. To learn more, see [Enable secure settings in Azure IoT Operations deployment](../deploy-iot-ops/howto-enable-secure-settings.md).
427+
428+
> [!IMPORTANT]
429+
> The operations experience portal currently has a known issue where creating a X.509 secret results in a secret with incorrectly encoded data. To learn more and the workaround, see [known issues](../troubleshoot/known-issues.md).
430+
418431
In the operations experience dataflow endpoint settings page, select the **Basic** tab then choose **Authentication method** > **X509 certificate**.
419432

420-
Enter the following settings for the endpoint:
433+
Here, under **Synced secret name**, enter a name for the secret. This name is used to reference the secret in the dataflow endpoint settings and is the name of the secret as stored in the Kubernetes cluster.
434+
435+
Then, under *X509 client certificate*, *X509 client key*, and *X509 intermediate certificates*, select **Add reference** to add the certificate, private key, and intermediate certificates. On the next page, select the secret from Azure Key Vault with **Add from Azure Key Vault** or **Create new** secret.
421436

422-
| Setting | Description |
423-
| --------------------- | ------------------------------------------------------------------------------------------------- |
424-
| X509 client certificate | The X.509 client certificate used for authentication. |
425-
| X509 intermediate certificates | The intermediate certificates for the X.509 client certificate chain. |
426-
| X509 client key | The private key corresponding to the X.509 client certificate. |
437+
If you select **Create new**, enter the following settings:
438+
439+
| Setting | Description |
440+
| ------- | ----------- |
441+
| Secret name | The name of the secret in Azure Key Vault. Pick a name that is easy to remember to select the secret later from the list. |
442+
| Secret value | The certificate, private key, or intermediate certificates in PEM format. |
443+
| Set activation date | If turned on, the date when the secret becomes active. |
444+
| Set expiration date | If turned on, the date when the secret expires. |
445+
446+
To learn more about secrets, see [Create and manage secrets in Azure IoT Operations Preview](../secure-iot-ops/howto-manage-secrets.md).
427447

428448
# [Bicep](#tab/bicep)
429449

@@ -439,12 +459,10 @@ mqttSettings: {
439459

440460
# [Kubernetes](#tab/kubernetes)
441461

442-
To use X.509 certificate authentication, you need to create a secret with the certificate and private key. Use the Kubernetes TLS secret containing the public certificate and private key. For example:
462+
To use X.509 certificate authentication, you need to create a secret with the certificate and private key. Create a secret with the certificate and private key in the same namespace as the MQTT dataflow resource.
443463

444464
```bash
445-
kubectl create secret tls my-tls-secret -n azure-iot-operations \
446-
--cert=path/to/cert/file \
447-
--key=path/to/key/file
465+
kubectl create secret generic <X509_SECRET_NAME> -n azure-iot-operations --from-file=client_cert.pem=<CLIENT_CERT_FILE>.pem --from-file=client_key.pem=<PRIVATE_KEY_FILE>.pem --from-file=client_intermediate_certs.pem=<INTERMEDIATE_CERT_FILE>.pem
448466
```
449467

450468
```yaml
@@ -612,11 +630,17 @@ To use anonymous authentication, set the authentication method to `Anonymous`.
612630

613631
# [Portal](#tab/portal)
614632

615-
Not yet supported in the operations experience. See [known issues](../troubleshoot/known-issues.md).
633+
In the operations experience dataflow endpoint settings page, select the **Basic** tab then choose **Authentication method** > **None**.
616634

617635
# [Bicep](#tab/bicep)
618636

619-
Not yet supported with Bicep. See [known issues](../troubleshoot/known-issues.md).
637+
```bicep
638+
mqttSettings: {
639+
authentication: {
640+
method: 'Anonymous'
641+
}
642+
}
643+
```
620644

621645
# [Kubernetes](#tab/kubernetes)
622646

articles/iot-operations/troubleshoot/known-issues.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ kubectl delete pod aio-opc-opc.tcp-1-f95d76c54-w9v9c -n azure-iot-operations
8686

8787
## Dataflows
8888

89-
- You can't use anonymous authentication for MQTT and Kafka endpoints when you deploy dataflow endpoints from the operations experience UI. The current workaround is to use a YAML configuration file and apply it by using `kubectl`.
90-
9189
- Dataflow custom resources created in your cluster aren't visible in the operations experience UI. This is expected because synchronizing dataflow resources from the edge to the cloud isn't currently supported.
90+
91+
- X.509 authentication for custom Kafka endpoints isn't supported yet.
92+
93+
<!-- TODO: double check -->
94+
- Creating a X.509 secret in the operations experience portal results in a secret with incorrectly encoded data. To work around this issue, create the [multi-line secrets through Azure Key Vault](/azure/key-vault/secrets/multiline-secrets), then select it from the list of secrets in the operations experience portal.

0 commit comments

Comments
 (0)