Compartir a través de


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

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 Especifica la instancia de Azure Key Vault que contiene los secretos.
vault.name 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 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 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 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 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 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 campo usernamePassword.
  • 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 campo remoteBrokerConnection. 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 del vaultCert 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...