Compartir a través de


Protección de la comunicación de agente MQTT mediante BrokerListener

Importante

Versión preliminar de operaciones de Azure IoT: habilitada 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.

Deberá implementar una nueva instalación de Azure IoT Operations cuando esté disponible una versión general. No podrá actualizar una instalación de versión preliminar.

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.

Para personalizar el acceso a la red y la seguridad, use el recurso BrokerListener. Un agente de escucha corresponde a un punto de conexión de red que expone el agente a la red. Puede tener uno o varios recursos de BrokerListener para cada recurso de Broker y, por tanto, varios puertos con control de acceso diferente cada uno.

Cada puerto del agente de escucha puede tener sus propias reglas de autenticación y autorización que definen quién puede conectarse al agente de escucha y qué acciones pueden realizar en el agente. Puede usar recursos BrokerAuthentication y BrokerAuthorization para especificar las directivas de control de acceso para cada agente de escucha. Esta flexibilidad le permite ajustar los permisos y roles de los clientes MQTT, en función de sus necesidades y casos de uso.

Sugerencia

Solo puede acceder a la implementación de corredor MQTT predeterminada mediante la dirección IP del clúster, TLS y un token de cuenta de servicio. Los clientes que se conectan fuera del clúster necesitan una configuración adicional para poder conectarse.

Los agentes de escucha tienen las siguientes características:

  • Puede tener hasta tres agentes de escucha. Un agente de escucha por tipo de servicio de loadBalancer, clusterIp, o nodePort. El BrokerListener predeterminado denominado escucha es el tipo de servicio clusterIp.
  • Cada agente de escucha admite varios puertos
  • Las referencias BrokerAuthentication y BrokerAuthorization son por puerto
  • La configuración de TLS es por puerto
  • Los nombres de servicio deben ser únicos
  • Los puertos no pueden entrar en conflicto con diferentes agentes de escucha

Para obtener una lista de las configuraciones disponibles, consulte la referencia de API de Broker Listener.

BrokerListener predeterminado

Al implementar versión preliminar de Operaciones de IoT de Azure, la implementación también crea un recurso de BrokerListener denominado listener en el espacio de nombres azure-iot-operations. Este agente de escucha está vinculado al recurso de agente predeterminado denominado broker que también se crea durante la implementación. El agente de escucha predeterminado expone el agente en el puerto 18883 con la autenticación TLS y SAT habilitada. El certificado TLS se administra automáticamente por medio de cert-manager. La autorización está deshabilitada de forma predeterminada.

Para inspeccionar el agente de escucha, ejecute:

kubectl get brokerlistener listener -n azure-iot-operations -o yaml

La salida debe tener un aspecto similar al siguiente, con la mayoría de los metadatos quitados para mayor brevedad:

apiVersion: mqttbroker.iotoperations.azure.com/v1beta1
kind: BrokerListener
metadata:
  name: listener
  namespace: azure-iot-operations
spec:
  brokerRef: broker
  serviceName: aio-broker
  serviceType: ClusterIp
  ports:
  - port: 18883
    authenticationRef: authn
    protocol: Mqtt
    tls:
      certManagerCertificateSpec:
        issuerRef:
          group: cert-manager.io
          kind: Issuer
          name: mq-dmqtt-frontend
      mode: Automatic

Para obtener más información sobre el recurso BrokerAuthentication predeterminado vinculado a este agente de escucha, consulte recurso Default BrokerAuthentication.

Actualización del BrokerListener predeterminado

El BrokerListener predeterminado utiliza el tipo de servicio ClusterIp. Solo puede tener un agente de escucha por tipo de servicio. Si desea agregar más puertos al tipo de servicio ClusterIp, puede actualizar el agente de escucha predeterminado para agregar más puertos. Por ejemplo, podría agregar un nuevo puerto 1883 sin TLS ni autenticación desactivada con el siguiente comando kubectl patch:

kubectl patch brokerlistener listener -n azure-iot-operations --type='json' -p='[{"op": "add", "path": "/spec/ports/", "value": {"port": 1883, "protocol": "Mqtt"}}]'

Crear nuevos BrokerListeners

En este ejemplo se muestra cómo crear un nuevo recurso de BrokerListener para un recurso de Broker denominado my-broker. El recurso BrokerListener define dos puertos que aceptan conexiones MQTT de clientes.

  • El primer puerto escucha en el puerto 1883 sin TLS ni autenticación desactivada. Los clientes pueden conectarse al agente sin cifrado ni autenticación.
  • El segundo puerto escucha en el puerto 18883 con TLS y la autenticación habilitada. Solo los clientes autenticados pueden conectarse al agente con cifrado TLS. TLS se establece en automatic, lo que significa que el agente de escucha usa cert-manager para obtener y renovar su certificado de servidor.

Para crear estos recursos de BrokerListener, aplique este manifiesto de YAML al clúster de Kubernetes:

apiVersion: mqttbroker.iotoperations.azure.com/v1beta1
kind: BrokerListener
metadata:
  name: my-test-listener
  namespace: azure-iot-operations
spec:
  brokerRef: broker
  serviceType: LoadBalancer
  serviceName: my-new-listener
  ports:
  - port: 1883
    protocol: Mqtt
  - port: 18883
    authenticationRef: authn
    protocol: Mqtt
    tls:
      mode: Automatic
      certManagerCertificateSpec:
        issuerRef:
            name: e2e-cert-issuer
            kind: Issuer
            group: cert-manager.io