Skydda Azure IoT MQ Preview-kommunikation med BrokerListener
Viktigt!
Förhandsversion av Azure IoT Operations – aktiverad av Azure Arc finns för närvarande i FÖRHANDSVERSION. Du bör inte använda den här förhandsgranskningsprogramvaran i produktionsmiljöer.
Juridiska villkor för Azure-funktioner i betaversion, förhandsversion eller som av någon annan anledning inte har gjorts allmänt tillgängliga ännu finns i kompletterande användningsvillkor för Microsoft Azure-förhandsversioner.
Om du vill anpassa nätverksåtkomsten och säkerheten använder du BrokerListener-resursen. En lyssnare motsvarar en nätverksslutpunkt som exponerar asynkron meddelandekö för nätverket. Du kan ha en eller flera BrokerListener-resurser för varje Broker-resurs och därmed flera portar med olika åtkomstkontroll vardera.
Varje lyssnare kan ha sina egna autentiserings- och auktoriseringsregler som definierar vem som kan ansluta till lyssnaren och vilka åtgärder de kan utföra på koordinatorn. Du kan använda BrokerAuthentication - och BrokerAuthorization-resurser för att ange åtkomstkontrollprinciperna för varje lyssnare. Med den här flexibiliteten kan du finjustera dina MQTT-klienters behörigheter och roller baserat på deras behov och användningsfall.
BrokerListener-resursen har följande fält:
Fältnamn | Obligatoriskt | Beskrivning |
---|---|---|
brokerRef |
Ja | Namnet på den asynkrona resurs som lyssnaren tillhör. Det här fältet krävs och måste matcha en befintlig Broker-resurs i samma namnområde. |
port |
Ja | Portnumret som lyssnaren lyssnar på. Det här fältet krävs och måste vara ett giltigt TCP-portnummer. |
serviceType |
Nej | Typen av Kubernetes-tjänst som skapats för den här lyssnaren. Det här underfältet är valfritt och standardvärdet är clusterIp . Måste vara antingen loadBalancer , clusterIp eller nodePort . |
serviceName |
Nej | Namnet på Kubernetes-tjänsten som skapats för den här lyssnaren. Kubernetes skapar DNS-poster för detta serviceName som klienter ska använda för att ansluta till Förhandsversionen av Azure IoT MQ. Det här underfältet är valfritt och standardvärdet är aio-mq-dmqtt-frontend . Viktigt: Om du har flera lyssnare med samma serviceType och serviceName delar lyssnarna samma Kubernetes-tjänst. Mer information finns i Tjänstnamn och tjänsttyp. |
authenticationEnabled |
Nej | En boolesk flagga som anger om lyssnaren kräver autentisering från klienter. Om värdet är inställt true på använder den här lyssnaren alla BrokerAuthentication-resurser som är associerade med den för att verifiera och autentisera klienterna. Om den här lyssnaren är inställd false på tillåter den här lyssnaren att alla klienter ansluter utan autentisering. Det här fältet är valfritt och standardvärdet är false . Mer information om autentisering finns i Konfigurera Azure IoT MQ Preview-autentisering. |
authorizationEnabled |
Nej | En boolesk flagga som anger om lyssnaren kräver auktorisering från klienter. Om värdet är true inställt på använder den här lyssnaren alla BrokerAuthorization-resurser som är associerade med den för att verifiera och auktorisera klienterna. Om värdet är false inställt på tillåter den här lyssnaren att alla klienter ansluter utan auktorisering. Det här fältet är valfritt och standardvärdet är false . Mer information om auktorisering finns i Konfigurera förhandsversion av Azure IoT MQ. |
tls |
Nej | TLS-inställningarna för lyssnaren. Fältet är valfritt och kan utelämnas för att inaktivera TLS för lyssnaren. Konfigurera TLS genom att ange en av följande typer: * Om värdet är inställt automatic på använder den här lyssnaren cert-manager för att hämta och förnya ett certifikat för lyssnaren. Om du vill använda den här typen anger du ett issuerRef fält som refererar till utfärdaren av certifikathanteraren. * Om värdet är inställt manual på använder lyssnaren ett manuellt angivet certifikat för lyssnaren. Om du vill använda den här typen anger du ett secretName fält som refererar till en Kubernetes-hemlighet som innehåller certifikatet och den privata nyckeln. * Om värdet är inställt keyVault på använder lyssnaren ett certifikat från Azure Key Vault. Om du vill använda den här typen anger du ett keyVault fält som refererar till Azure Key Vault-instansen och hemligheten. |
protocol |
Nej | Det protokoll som lyssnaren använder. Det här fältet är valfritt och standardvärdet är mqtt . Måste vara antingen mqtt eller websockets . |
Standard brokerlistener
När du distribuerar Förhandsversionen av Azure IoT Operations skapar distributionen även en BrokerListener-resurs med namnet listener
i azure-iot-operations
namnområdet. Den här lyssnaren är länkad till standardköresursen med namnet broker
som också skapas under distributionen. Standardlyssnaren exponerar koordinatorn på port 8883 med TLS- och SAT-autentisering aktiverat. TLS-certifikatet hanteras automatiskt av cert-manager. Auktorisering är inaktiverat som standard.
Kontrollera lyssnaren genom att köra:
kubectl get brokerlistener listener -n azure-iot-operations -o yaml
Utdata bör se ut så här, med de flesta metadata borttagna för korthet:
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
Mer information om standardresursen BrokerAuthentication som är länkad till den här lyssnaren finns i Standard brokerAuthentication-resurs.
Skapa nya BrokerListeners
Det här exemplet visar hur du skapar två nya BrokerListener-resurser för en Broker-resurs med namnet my-broker. Varje BrokerListener-resurs definierar en port och en TLS-inställning för en lyssnare som accepterar MQTT-anslutningar från klienter.
- Den första BrokerListener-resursen med namnet my-test-listener definierar en lyssnare på port 1883 utan TLS och autentisering av. Klienter kan ansluta till asynkron meddelandekö utan kryptering eller autentisering.
- Den andra BrokerListener-resursen med namnet my-secure-listener definierar en lyssnare på port 8883 med TLS och autentisering aktiverat. Endast autentiserade klienter kan ansluta till koordinatorn med TLS-kryptering. Fältet
tls
är inställt påautomatic
, vilket innebär att lyssnaren använder cert-manager för att hämta och förnya sitt servercertifikat.
Om du vill skapa dessa BrokerListener-resurser använder du det här YAML-manifestet på ditt Kubernetes-kluster:
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
Tjänstnamn och tjänsttyp
Om du har flera BrokerListener-resurser med samma serviceType
och serviceName
delar resurserna samma Kubernetes-tjänst. Det innebär att tjänsten exponerar alla portar för alla lyssnare. Om du till exempel har två lyssnare med samma serviceType
och serviceName
, en på port 1883 och den andra på port 8883, exponerar tjänsten båda portarna. Klienter kan ansluta till asynkron meddelandekö på någon av portarna.
Det finns två viktiga regler att följa när du delar tjänstnamn:
Lyssnare med samma
serviceType
måste dela sammaserviceName
.Lyssnare med olika
serviceType
måste ha olikaserviceName
.
I synnerhet är clusterIp
tjänsten för standardlyssnaren på port 8883 och heter aio-mq-dmqtt-frontend
. I följande tabell sammanfattas vad som händer när du skapar en ny lyssnare på en annan port:
Ny lyssnare serviceType |
Ny lyssnare serviceName |
Result |
---|---|---|
clusterIp |
aio-mq-dmqtt-frontend |
Den nya lyssnaren har skapats och tjänsten exponerar båda portarna. |
clusterIp |
my-service |
Det går inte att skapa den nya lyssnaren eftersom tjänsttypen står i konflikt med standardlyssnaren. |
loadBalancer eller nodePort |
aio-mq-dmqtt-frontend |
Det går inte att skapa den nya lyssnaren eftersom tjänstnamnet står i konflikt med standardlyssnaren. |
loadBalancer eller nodePort |
my-service |
Den nya lyssnaren skapas och en ny tjänst skapas. |
Relaterat innehåll
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för