Administrar secretos mediante Azure Key Vault o secretos de Kubernetes en la versión preliminar de MQ de Azure IoT
Importante
Operaciones de IoT de Azure, habilitado por Azure Arc, está actualmente en VERSIÓN PRELIMINAR. No se debería usar este software en versión preliminar en entornos de producción.
Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.
Puede usar Azure Key Vault para administrar secretos para el MQTT broker distribuido de la versión preliminar de MQ de Azure IoT en lugar de los secretos de Kubernetes. En este artículo se muestra cómo configurar Key Vault para el agente y usarlo para administrar secretos.
Requisitos previos
Una instancia de Azure Key Vault con un secreto.
Una entidad de servicio de Microsoft Entra con permisos
get
ylist
para secretos en la instancia de Key Vault. Para configurar la entidad de servicio para los permisos de Key Vault, consulte Asignar una directiva de acceso de Key Vault.Un secreto de Kubernetes con las credenciales de la entidad de servicio, como en este ejemplo con el secreto
aio-akv-sp
predeterminado:apiVersion: v1 kind: Secret metadata: name: aio-akv-sp namespace: azure-iot-operations type: Opaque data: clientid: <base64 encoded client id> clientsecret: <base64 encoded client secret>
El proveedor de Azure Key Vault para el controlador de CSI del almacén de secretos
Usar Azure Key Vault para la administración de secretos
El campo keyVault
está disponible siempre que se usen los secretos de Kubernetes (secretName
). En la tabla siguiente se describen las propiedades del campo keyVault
.
Propiedad | Obligatorio | Descripción |
---|---|---|
almacén | Sí | Especifica la instancia de Azure Key Vault que contiene los secretos. |
vault.name | Sí | Especifica el nombre de Azure Key Vault. Para obtener el nombre de Key Vault desde Azure Portal, vaya a la instancia de Key Vault y copie el nombre en la página Información general. |
vault.directoryId | Sí | Especifica el id. de inquilino de Microsoft Entra. Para obtener el id. de inquilino de Azure Portal, vaya a la instancia de Key Vault y copie el id. de inquilino en la página Información general. |
vault.credentials.servicePrincipalLocalSecretName | Sí | Especifica el nombre del secreto que contiene las credenciales de la entidad de servicio. |
vaultSecret | Sí, cuando se utilizan secretos normales de Key Vault | Especifica el secreto en Azure Key Vault. |
vaultSecret.name | Sí | Especifica el nombre del secreto. |
vaultSecret.version | No | Especifica la versión del secreto. |
vaultCert | Sí, cuanto se utilizan certificados de Key Vault | Especifica el certificado en Azure Key Vault. |
vaultCert.name | Sí | Especifica el nombre del secreto de certificado. |
vaultCert.version | No | Especifica la versión del secreto de certificado. |
vaultCaChainSecret | Sí, cuando se utiliza la cadena de certificados | Especifica la cadena de certificados en Azure Key Vault. |
vaultCaChainSecret.name | Sí | Especifica el nombre de la cadena de certificados. |
vaultCaChainSecret.version | No | Especifica la versión de la cadena de certificados. |
username | No | Solo se usa para el conector de Kafka de Event Hubs; consulte Envío y recepción de mensajes entre MQ de Azure IoT y Event Hubs o Kafka. |
El tipo de secreto que utiliza determina cuáles de los campos siguientes puede utilizar:
vaultSecret
: utilice este campo cuando utilice un secreto normal. Por ejemplo, puede utilizar este campo para configurar un recurso BrokerAuthentication con el campousernamePassword
.vaultCert
: utilice este campo cuando utilice el secreto de tipo de certificado con el certificado de cliente y la clave. Por ejemplo, puede utilizar este campo para habilitar TLS en un BrokerListener.vaultCaChainSecret
: utilice este campo cuando necesite presentar una cadena de certificados completa, con todos los certificados raíz o intermedios adicionales, en el servidor remoto. Por ejemplo, puede utilizar este campo para configurar un recurso MqttBridgeConnector con el camporemoteBrokerConnection
. Para utilizar este campo, importe certificados X.509 sin claves privadas en formato PEM como un secreto normal de varias líneas (no de tipo de certificado) en Key Vault. Este campo debe utilizarse además delvaultCert
que tiene el certificado de cliente y la clave privada.
Ejemplos
Por ejemplo, para crear un recurso BrokerListener de TLS que usa Azure Key Vault para secretar el certificado de servidor, use el siguiente código YAML:
apiVersion: mq.iotoperations.azure.com/v1beta1
kind: BrokerListener
metadata:
name: tls-listener-manual
namespace: azure-iot-operations
spec:
brokerRef: broker
authenticationEnabled: true
authorizationEnabled: false
port: 8883
tls:
keyVault:
vault:
name: my-key-vault
directoryId: <AKV directory ID>
credentials:
servicePrincipalLocalSecretName: aio-akv-sp
vaultCert:
name: my-server-certificate
# version: 939ecc2...
En este ejemplo siguiente se muestra cómo usar Azure Key Vault para el campo usernamePassword
en un recurso BrokerAuthentication:
apiVersion: mq.iotoperations.azure.com/v1beta1
kind: BrokerAuthentication
metadata:
name: my-authentication
namespace: azure-iot-operations
spec:
listenerRef:
- tls-listener-manual
authenicationMethods:
- usernamePassword:
keyVault:
vault:
name: my-key-vault
directoryId: <AKV directory ID>
credentials:
servicePrincipalLocalSecretName: aio-akv-sp
vaultSecret:
name: my-username-password-db
# version: 939ecc2...
En este ejemplo se muestra cómo usar Azure Key Vault para las credenciales del agente remoto del puente de MQTT:
apiVersion: mq.iotoperations.azure.com/v1beta1
kind: MqttBridgeConnector
metadata:
name: my-bridge
namespace: azure-iot-operations
spec:
image:
repository: mcr.microsoft.com/azureiotoperations/mqttbridge
tag: 0.4.0-preview
pullPolicy: IfNotPresent
protocol: v5
bridgeInstances: 1
remoteBrokerConnection:
endpoint: example.broker.endpoint:8883
tls:
tlsEnabled: true
trustedCaCertificateConfigMap: my-ca-certificate
authentication:
x509:
keyVault:
vault:
name: my-key-vault
directoryId: <AKV directory ID>
credentials:
servicePrincipalLocalSecretName: aio-akv-sp
vaultCaChainSecret:
name: my-remote-broker-certificate
# version: 939ecc2...
Contenido relacionado
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de