Sdílet prostřednictvím


Zabezpečení komunikace Azure IoT MQ Preview pomocí BrokerListeneru

Důležité

Azure IoT Operations Preview – Služba Azure Arc je aktuálně ve verzi PREVIEW. Tento software ve verzi Preview byste neměli používat v produkčních prostředích.

Právní podmínky, které platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze Preview.

K přizpůsobení síťového přístupu a zabezpečení použijte prostředek BrokerListener . Naslouchací proces odpovídá koncovému bodu sítě, který zprostředkuje zprostředkovatele síti. Pro každý prostředek zprostředkovatele můžete mít jeden nebo více prostředků BrokerListener, a tedy více portů s jiným řízením přístupu.

Každý naslouchací proces může mít vlastní ověřovací a autorizační pravidla, která definují, kdo se může připojit k naslouchacímu procesu a jaké akce můžou u zprostředkovatele provádět. Prostředky BrokerAuthentication a BrokerAuthorization můžete použít k určení zásad řízení přístupu pro každý naslouchací proces. Tato flexibilita umožňuje jemně vyladit oprávnění a role klientů MQTT na základě jejich potřeb a případů použití.

Prostředek BrokerListener má tato pole:

Název pole Požadováno Popis
brokerRef Ano Název prostředku zprostředkovatele, ke kterému tento naslouchací proces patří. Toto pole je povinné a musí odpovídat existujícímu prostředku zprostředkovatele ve stejném oboru názvů.
port Ano Číslo portu, na který tento naslouchací proces naslouchá. Toto pole je povinné a musí být platným číslem portu TCP.
serviceType No Typ služby Kubernetes vytvořené pro tento naslouchací proces. Toto dílčí pole je volitelné a výchozí hodnota clusterIpje . Musí být buď loadBalancer, clusterIpnebo nodePort.
serviceName No Název služby Kubernetes vytvořené pro tento naslouchací proces. Kubernetes vytvoří záznamy DNS, serviceName které by klienti měli použít pro připojení k Azure IoT MQ Preview. Toto dílčí pole je volitelné a výchozí hodnota aio-mq-dmqtt-frontendje . Důležité: Pokud máte více naslouchacích procesů se stejnými serviceType a serviceNamenaslouchací procesy sdílejí stejnou službu Kubernetes. Další informace naleznete v tématu Název služby a typ služby.
authenticationEnabled No Logický příznak, který označuje, jestli tento naslouchací proces vyžaduje ověření od klientů. Pokud je truetato hodnota nastavená, použije tento naslouchací proces k ověření a ověření klientů všechny prostředky BrokerAuthentication přidružené k němu. Pokud je tato možnost nastavená, falsetento naslouchací proces umožňuje každému klientovi připojit se bez ověřování. Toto pole je volitelné a výchozí hodnota falseje . Další informace o ověřování najdete v tématu Konfigurace ověřování Azure IoT MQ Preview.
authorizationEnabled No Logický příznak, který označuje, jestli tento naslouchací proces vyžaduje autorizaci od klientů. Pokud je tato možnost nastavená, truepoužívá tento naslouchací proces k ověření a autorizaci klientů všechny prostředky BrokerAuthorization přidružené k němu. Pokud je tato možnost nastavená na false, tento naslouchací proces umožňuje každému klientovi připojit se bez autorizace. Toto pole je volitelné a výchozí hodnota falseje . Další informace o autorizaci najdete v tématu Konfigurace autorizace Azure IoT MQ Preview.
tls No Nastavení protokolu TLS pro naslouchací proces. Pole je volitelné a je možné ho vynechat a zakázat tls pro naslouchací proces. Pokud chcete nakonfigurovat protokol TLS, nastavte ho jedním z těchto typů:
* Pokud je nastavena hodnota automatic, tento naslouchací proces používá nástroj cert-manager k získání a obnovení certifikátu pro naslouchací proces. Chcete-li použít tento typ, zadejte issuerRef pole, které má odkazovat na vystavitele cert-manageru.
* Pokud je nastavená hodnota manual, naslouchací proces používá pro naslouchací proces ručně zadaný certifikát. Chcete-li použít tento typ, zadejte pole, které odkazuje na tajný klíč Kubernetes obsahující certifikát a privátní klíč.secretName
* Pokud je nastavená hodnota keyVault, naslouchací proces používá certifikát ze služby Azure Key Vault. Pokud chcete tento typ použít, zadejte keyVault pole, které odkazuje na instanci a tajný klíč služby Azure Key Vault.
protocol No Protokol, který tento naslouchací proces používá. Toto pole je volitelné a výchozí hodnota mqttje . Musí být buď mqtt nebo websockets.

Výchozí brokerListener

Když nasadíte Azure IoT Operations Preview, nasazení také vytvoří prostředek BrokerListener pojmenovaný listener v azure-iot-operations oboru názvů. Tento naslouchací proces je propojený s výchozím prostředkem zprostředkovatele, broker který se vytvoří také během nasazení. Výchozí naslouchací proces zpřístupňuje zprostředkovatele na portu 8883 s povoleným ověřováním TLS a SAT. Certifikát TLS se automaticky spravuje správcem certifikátů. Autorizace je ve výchozím nastavení zakázaná.

Pokud chcete zkontrolovat naslouchací proces, spusťte:

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

Výstup by měl vypadat takto, přičemž většina metadat byla odebrána kvůli stručnosti:

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: BrokerListener
metadata:
  name: listener
  namespace: azure-iot-operations
spec:
  brokerRef: broker
  authenticationEnabled: true
  authorizationEnabled: false
  port: 8883
  serviceName: aio-mq-dmqtt-frontend
  serviceType: clusterIp
  tls:
    automatic:
      issuerRef:
        group: cert-manager.io
        kind: Issuer
        name: mq-dmqtt-frontend

Další informace o výchozím prostředku BrokerAuthentication propojeném s tímto naslouchacím procesem najdete v tématu Výchozí prostředek BrokerAuthentication.

Vytvoření nových brokerListeners

Tento příklad ukazuje, jak vytvořit dva nové prostředky BrokerListener pro prostředek zprostředkovatele s názvem my-broker. Každý prostředek BrokerListener definuje port a nastavení PROTOKOLU TLS pro naslouchací proces, který přijímá připojení MQTT z klientů.

  • První prostředek BrokerListener s názvem my-test-listener definuje naslouchací proces na portu 1883 bez tls a ověřování vypnuto. Klienti se můžou k zprostředkovateli připojit bez šifrování nebo ověřování.
  • Druhý prostředek BrokerListener s názvem my-secure-listener definuje naslouchací proces na portu 8883 s povoleným protokolem TLS a ověřováním. K zprostředkovateli se můžou připojit pouze ověření klienti pomocí šifrování TLS. Pole tls je nastavené na automatichodnotu , což znamená, že naslouchací proces používá nástroj cert-manager k získání a obnovení certifikátu serveru.

Pokud chcete vytvořit tyto prostředky BrokerListener , použijte tento manifest YAML na cluster Kubernetes:

apiVersion: mq.iotoperations.azure.com/v1beta1
kind: BrokerListener
metadata:
  name: my-test-listener
  namespace: azure-iot-operations
spec:
  authenticationEnabled: false
  authorizationEnabled: false
  brokerRef: broker
  port: 1883
---
apiVersion: mq.iotoperations.azure.com/v1beta1
kind: BrokerListener
metadata:
  name: my-secure-listener
  namespace: azure-iot-operations
spec:
  authenticationEnabled: true
  authorizationEnabled: false
  brokerRef: broker
  port: 8883
  tls:
    automatic:
      issuerRef:
        name: e2e-cert-issuer
        kind: Issuer
        group: cert-manager.io

Název služby a typ služby

Pokud máte více prostředků BrokerListener se stejnými serviceType prostředky a serviceNameprostředky sdílejí stejnou službu Kubernetes. To znamená, že služba zveřejňuje všechny porty všech naslouchacích procesů. Pokud máte například dva naslouchací procesy se stejnými serviceType a serviceName, jeden na portu 1883 a druhý na portu 8883, služba zveřejňuje oba porty. Klienti se můžou připojit ke zprostředkovateli na obou portech.

Při sdílení názvu služby je potřeba dodržovat dvě důležitá pravidla:

  1. Naslouchací procesy se stejnými serviceType musí sdílet stejné serviceName.

  2. Naslouchací procesy s různými serviceType musí mít jiné serviceName.

Zejména je služba pro výchozí naslouchací proces na portu 8883 clusterIp a pojmenována aio-mq-dmqtt-frontend. Následující tabulka shrnuje, co se stane, když vytvoříte nový naslouchací proces na jiném portu:

Nový naslouchací proces serviceType Nový naslouchací proces serviceName Výsledek
clusterIp aio-mq-dmqtt-frontend Nový naslouchací proces se úspěšně vytvoří a služba zveřejňuje oba porty.
clusterIp my-service Nový naslouchací proces se nepodaří vytvořit, protože typ služby je v konfliktu s výchozím naslouchacím procesem.
loadBalancer nebo nodePort aio-mq-dmqtt-frontend Nový naslouchací proces se nepodaří vytvořit, protože název služby je v konfliktu s výchozím naslouchacím procesem.
loadBalancer nebo nodePort my-service Nový naslouchací proces se úspěšně vytvoří a vytvoří se nová služba.