Partage via


Sécuriser la communication de l’Agent MQTT à l’aide de BrokerListener

Important

Opérations Azure IoT Préversion avec Azure Arc est actuellement en préversion. Vous ne devez pas utiliser ce logiciel en préversion dans des environnements de production.

Lorsqu’une version en disponibilité générale sera publiée, vous devrez déployer une nouvelle installation d’Opérations Azure IoT. Vous ne pourrez pas mettre à niveau une installation en préversion.

Pour connaître les conditions juridiques qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou plus généralement non encore en disponibilité générale, consultez l’Avenant aux conditions d’utilisation des préversions de Microsoft Azure.

Pour personnaliser l’accès réseau et la sécurité, utilisez la ressource BrokerListener. Un écouteur correspond à un point de terminaison réseau qui expose le répartiteur au réseau. Vous pouvez avoir une ou plusieurs ressources BrokerListener pour chaque ressource Broker, et donc plusieurs ports avec chacun un contrôle d’accès différent.

Chaque port d’écouteur peut avoir ses propres règles d’authentification et d’autorisation qui définissent qui peut se connecter à l’écouteur et quelles actions il peut effectuer sur le répartiteur. Vous pouvez utiliser les ressources BrokerAuthentication et BrokerAuthorization pour spécifier les stratégies de contrôle d’accès pour chaque écouteur. Cette flexibilité vous permet d’affiner les autorisations et les rôles de vos clients MQTT, en fonction de leurs besoins et de leurs cas d’usage.

Conseil

Vous pouvez accéder au déploiement du MQTT broker par défaut seulement en utilisant l’adresse IP du cluster, le protocole TLS et un jeton de compte de service. Les clients se connectant depuis l’extérieur du cluster ont besoin d’une configuration supplémentaire pour pouvoir se connecter.

Les écouteurs présentent les caractéristiques suivantes :

  • Vous pouvez avoir jusqu’à trois écouteurs. Un écouteur par type de service de loadBalancer, de clusterIp ou de nodePort. Le BrokerListener par défaut nommé écouteur est un type de service clusterIp.
  • Chaque écouteur prend en charge plusieurs ports
  • Les références à BrokerAuthentication et à BrokerAuthorization se font pour un port donné.
  • La configuration TLS fonctionne par port
  • Les noms de service doivent être uniques
  • Les ports ne peuvent pas entrer en conflit sur différents écouteurs

Pour obtenir la liste des paramètres disponibles, consultez les informations de référence sur l’API Écouteur de broker.

BrokerListener par défaut

Lorsque vous déployez Opérations Azure IoT (préversion), le déploiement crée également une ressource BrokerListener nommée listener dans l’espace de noms azure-iot-operations. Cet écouteur est lié à la ressource Broker par défaut nommée broker également créée pendant le déploiement. L’écouteur par défaut expose le broker sur le port 18883 avec TLS et l’authentification SAT activée. Le certificat TLS est automatiquement managé par le gestionnaire de certificats. L’autorisation est désactivée par défaut.

Pour inspecter l’écouteur, exécutez :

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

La sortie devrait ressembler à ceci, la majorité des métadonnées ayant été supprimées par souci de concision :

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

Pour en savoir plus sur la ressource BrokerAuthentication par défaut liée à cet écouteur, consultez Ressource BrokerAuthentication par défaut.

Mettre à jour le BrokerListener par défaut

Le BrokerListener par défaut utilise le type de service ClusterIp. Vous ne pouvez avoir qu’un seul écouteur par type de service. Si vous souhaitez ajouter d’autres ports au type de service ClusterIp, vous pouvez mettre à jour l’écouteur par défaut pour ajouter d’autres ports. Par exemple, vous pouvez ajouter un nouveau port 1883 sans TLS et une authentification désactivée avec la commande kubectl patch suivante :

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

Créer des BrokerListeners

Cet exemple montre comment créer une ressource BrokerListener pour une ressource Broker nommée my-broker. La ressource BrokerListener définit deux ports qui acceptent les connexions MQTT venant des clients.

  • Le premier port écoute le port 1883 sans TLS et l’authentification désactivée. Les clients peuvent se connecter au répartiteur sans chiffrement ni authentification.
  • Le second port écoute le port 18883 avec TLS et l’authentification activée. Seuls les clients authentifiés peuvent se connecter au répartiteur avec le chiffrement TLS. TLS est défini sur automatic, ce qui signifie que l’écouteur utilise le gestionnaire de certificats pour obtenir et renouveler son certificat de serveur.

Pour créer ces ressources BrokerListener, appliquez ce manifeste YAML à votre cluster 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