Skip to content

Commit 900819a

Browse files
Merge pull request #290141 from jlian/release-aio-ga
DOE secrets management and no-auth
2 parents ccec6d9 + 5eb4415 commit 900819a

File tree

4 files changed

+86
-37
lines changed

4 files changed

+86
-37
lines changed

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

Lines changed: 17 additions & 15 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.
@@ -126,19 +126,7 @@ Then, create the *DataflowEndpoint* resource and specify the access token authen
126126

127127
# [Portal](#tab/portal)
128128

129-
1. In the IoT Operations portal, select the **Dataflow endpoints** tab.
130-
1. Under **Create new dataflow endpoint**, select **Azure Data Lake Storage (2nd generation)** > **New**.
131-
1. Enter the following settings for the endpoint:
132-
133-
| Setting | Description |
134-
| --------------------- | ------------------------------------------------------------------------------------------------- |
135-
| Name | The name of the dataflow endpoint. |
136-
| Host | The hostname of the Azure Data Lake Storage Gen2 endpoint in the format `<account>.blob.core.windows.net`. Replace the account placeholder with the endpoint account name. |
137-
| Authentication method | The method used for authentication. Choose *Access token*. |
138-
| Synced secret name | The name of the Kubernetes secret that is synchronized with the ADLSv2 endpoint. |
139-
| Access token secret name | The name of the Kubernetes secret containing the SAS token. |
140-
141-
1. Select **Apply** to provision the endpoint.
129+
See the [access token](#access-token) section for steps to create a secret in the operations experience portal.
142130

143131
# [Bicep](#tab/bicep)
144132

@@ -305,9 +293,23 @@ To enhance security and follow the principle of least privilege, you can generat
305293

306294
# [Portal](#tab/portal)
307295

296+
> [!IMPORTANT]
297+
> 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).
298+
308299
In the operations experience dataflow endpoint settings page, select the **Basic** tab then choose **Authentication method** > **Access token**.
309300

310-
Enter the access token secret name you created in **Access token secret name**.
301+
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.
302+
303+
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.
304+
305+
If you select **Create new**, enter the following settings:
306+
307+
| Setting | Description |
308+
| ------- | ----------- |
309+
| 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. |
310+
| 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>'`. |
311+
| Set activation date | If turned on, the date when the secret becomes active. |
312+
| Set expiration date | If turned on, the date when the secret expires. |
311313

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

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)