Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ett ämnesutrymme representerar flera ämnen genom en uppsättning ämnesmallar. Ämnesmallar utökar MQTT-ämnesfilter med stöd för variabler, utöver de vanliga MQTT-jokerna. Varje ämnesutrymme representerar de MQTT-ämnen som samma uppsättning klienter använder för att kommunicera.
Ämnesutrymmen förenklar åtkomstkontrollen genom att låta dig ge publicera eller prenumerera tillgång till en grupp ämnen samtidigt, istället för att hantera åtkomst för varje enskilt ämne. Åtkomstkontrollmodellen kombinerar fyra resurser för att ge en klientgrupp tillgång till att publicera eller prenumerera på ett ämnesutrymme:
- Klient: Representerar en enhet eller applikation som kommunicerar över MQTT.
- Klientgrupp: Grupperar klienter som behöver samma åtkomst till samma uppsättning MQTT-ämnen.
- Ämnesutrymme: Grupperar en eller flera ämnesmallar som representerar avsedda ämnen eller ämnesfilter.
- Behörighetsbindning: Ger en klientgrupp publicerings- eller prenumerationsåtkomst till ett ämnesutrymme.
För mer information, se Åtkomstkontroll för MQTT-klienter.
Den här artikeln förklarar hur MQTT-ämnesfilter, ämnesmallar och konfiguration av ämnesutrymme samarbetar, så att du kan gruppera relaterade ämnen och hantera klientåtkomst effektivt.
MQTT-ämnesfilter
Ett MQTT-ämnesfilter är ett MQTT-ämne som kan inkludera jokrar för ett eller flera av sina segment, så att det matchar flera MQTT-ämnen. Ämnesfilter förenklar prenumerationsförfrågningar, eftersom ett ämnesfilter kan matcha flera ämnen.
MQTT-mäklaren stöder alla MQTT-wildcards som definieras av MQTT-specifikationen:
-
+motsvarar ett enda segment. Till exempel matchar ämnesfiltretmachines/+/alertdessa ämnen:machines/temp/alertmachines/humidity/alert
-
#matchar noll eller fler segment i slutet av ämnet. Till exempel matchar ämnesfiltretmachines/#dessa ämnen:machinesmachines/tempmachines/humiditymachines/temp/alert
För mer information om jokrar, se Ämnesjokrar i MQTT-specifikationen.
Ämnesmallar
Ämnesmallar utökar MQTT-ämnesfilter med stöd för variabler, utöver MQTT-wildcards. Konfiguration av ämnesutrymme ger också detaljerad åtkomstkontroll genom att låta dig styra auktorisationen av varje klient inom en klientgrupp att publicera eller prenumerera på sitt eget ämne. För mer information, se hur ämnesmallar ger detaljerad åtkomstkontroll.
Temautrymmeskonfiguration
Ett ämnesutrymme kan gruppera upp till 10 ämnesmallar. Ämnesmallar stödjer MQTT-wildcards (+ och #) och följande variabler:
-
${client.authenticationName}: Representerar autentiseringsnamnet på klienten. För mer information, se nyckeltermer för klientmetadata. -
${client.attributes.x}: Representerar ett attribut som tilldelas en klient när klienten skapas eller uppdateras, därxär den exakta strängen för attributnyckeln. Till exempel, om en klient har attributetarea:section1, möjliggör ämnesmallenarea/${client.attributes.area}/telemetryatt endast klienter med det attributet kan publicera på MQTT-ämnetarea/section1/telemetry. För mer information, se MQTT-klienter.
Anmärkning
- Ämnen som börjar med
$är reserverade för internt bruk. - En variabel kan representera en del av ett segment eller ett helt segment, men den kan inte täcka mer än ett segment. Till exempel matchar ämnesmallen
machines/${client.authenticationName|.factory1}/tempämnen sommachines/machine1.factory1/tempochmachines/machine2.factory1/temp. - Ämnesmallar använder specialtecknen
$och|, som du kan behöva fly från beroende på vilken shell du använder. Till exempel, i PowerShell, undvik dessa tecken som visas i följande exempel:"vehicles/${client.authenticationName|dollar}/#"vehicles/${client.authenticationName"|"dollar}/#
För att skapa ett ämnesutrymme i Azure-portalen eller med Azure CLI, se Publicera och prenumerera på MQTT-meddelanden. När du namnger ett ämnesutrymme, använd dessa regler:
- Ett ämnesutrymmesnamn kan vara 3–50 tecken långt.
- Ett ämnesrymdnamn kan innehålla alfanumeriska tecken och bindestreck (
-), utan mellanslag.
Följande Azure CLI-exempel skapar ett ämnesutrymme som har två ämnesmallar:
az eventgrid namespace topic-space create -g myRG --namespace-name myNS -n myTopicSpace --topic-templates ['segment1/+/segment3/${client.authenticationName}', "segment1/${client.attributes.attribute1}/segment3/#"]
Anmärkning
Uppdateringar av ämnesutrymmets konfiguration kan ta ett par minuter att slå igenom.