Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Erişim denetimi, rol tabanlı erişim denetimi modeli kullanarak istemcilerin konu başlıkları yayımlama veya abone olma yetkilendirmesini yönetmenizi sağlar. IoT ortamlarının muazzam ölçeği göz önüne alındığında, her bir konu başlığına her istemci için izin atamak son derece yorucudur. Azure Event Grid'in MQTT aracı özelliği, istemcileri ve konuları istemci grupları ve konu alanları halinde gruplandırarak bu ölçek sınamasını ele alır.
Erişim denetimi modelinin ana bileşenleri şunlardır:
İstemci, MQTT konularını yayımlaması ve/veya abone olması gereken cihazı veya uygulamayı temsil eder.
İstemci grubu, aynı MQTT konularını yayımlamak ve/veya abone olmak için aynı erişime ihtiyaç duyan bir istemci kümesidir. İstemci grubu, RBAC modelindeki asıl kişiyi/temel kişiyi temsil eder.
Konu alanı, bir dizi konu şablonu aracılığıyla birden çok konuyu temsil eder. Konu şablonları, MQTT joker karakterleriyle birlikte değişkenleri destekleyen MQTT filtrelerinin bir uzantısıdır. Her konu alanı, aynı istemci kümesinin iletişim kurmak için kullanması gereken konuları temsil eder. Konu alanı RBAC modelindeki kaynağı temsil eder.
İzin bağlaması, belirli bir konu alanı tarafından temsil edilen konularda yayımlamak veya abone olmak için belirli bir istemci grubuna erişim verir. İzin bağlaması RBAC modelindeki rolü temsil eder.
Examples:
Aşağıdaki örneklerde, erişim denetimi modelinin aşağıdaki gereksinimlere göre nasıl yapılandırılır ayrıntıları verilmiştir.
Örnek 1:
Fabrika, birbiriyle iletişim kurması gereken makineler de dahil olmak üzere her alanda birden fazla alana sahiptir. Ancak, fabrikanın diğer alanlarındaki makinelerin onlarla iletişim kurmasına izin verilmez.
| Müşteri | Rol | Konu/Konu Filtresi |
|---|---|---|
| Area1_Machine1 | Publisher | alanlar/alan1/makineler/makine1 |
| Area1_Machine2 | Subscriber | alanlar/alan1/makineler/# |
| Area2_Machine1 | Publisher | alanlar/alan2/makineler/makine1 |
| Area2_Machine2 | Subscriber | alanlar/alan2/makineler/# |
Konfigürasyon
- Her makine için bir istemci kaynağı oluşturun.
- Her fabrika alanının makineleri için bir istemci grubu oluşturun.
- Alanın makinelerinin iletişim kuracağı konuları temsil eden her alan için bir konu alanı oluşturun.
- Her alanın istemci grubu için ilgili alanın konu alanını yayımlamak ve abone olmak için iki izin bağlaması oluşturun.
| Müşteri | İstemci Grubu | İzin Bağlama | Konu Alanı |
|---|---|---|---|
| Area1_Machine1 | Area1Machines | Area1-Pub | Alan1 İletiler - Topic Şablonu: alanlar/alan1/makineler/# |
| Area1_Machine2 | Area1Machines | Area1-Sub | Alan1 İletiler - Konu Şablonu: alanlar/alan1/makineler/# |
| Area2_Machine1 | Area2Machines | Area2-Pub | Alan2Mesajlar -Konu Şablonu: alanlar/alan2/makineler/ |
| Area2_Machine2 | Area2Machines | Area2-Sub | Alan2Mesajlar -Topic Şablonu: alanlar/alan2/makineler/# |
Örnek 2:
Önceki örnek için ek bir gereksinim olduğunu varsayalım: Her alanın makinelerle birlikte yönetim istemcileri vardır ve herhangi birinin gizliliğinin tehlikeye düşmesi durumunda makinelerin yayımlama erişimi olmamalıdır. Öte yandan, yönetim istemcilerinin makinelere komut gönderebilmek için yayımlama erişimine ve makinelerden telemetri alabilmek için abonelik erişimine sahip olması gerekir.
| Müşteri | Rol | Konu/Konu Filtresi |
|---|---|---|
| Area1_Machine1 | Publisher | alanlar/alan1/makineler/makine1 |
| Subscriber | alanlar/alan1/yonetim/# | |
| Area1_Mgmt1 | Publisher | alanlar/alan1/mgmt/makine1 |
| Subscriber | alanlar/alan1/makineler/# | |
| Area2_Machine1 | Publisher | alanlar/alan2/makineler/makine1 |
| Subscriber | alanlar/alan2/yonetim/# | |
| Area2_ Mgmt1 | Publisher | alanlar/alan2/yönetim/makine1 |
| Subscriber | alanlar/alan2/makineler/# |
Konfigürasyon:
- Her makine ve yönetim istemcisi için istemci kaynakları oluşturun.
- Alan başına iki İstemci Grubu oluşturun: biri yönetim istemcisi ve diğeri makineler için.
- Her alan için iki Konu Alanı oluşturun: biri telemetri konularını ve diğeri komut konularını temsil ediyor.
- Her alanın yönetim istemcileri için komutlar Başlık Alanı'na yayımlamak ve telemetri Başlık Alanı'na abone olmak üzere iki Yetki Bağlantısı oluşturun.
- Konu Alanı komutlarına abone olmak ve telemetri Konu Alanı'nda yayımlamak için her alanın makineleri için iki İzin Bağlaması oluşturun.
| Müşteri | İstemci Grubu | İzin Bağlama | Konu/Konu Filtresi |
|---|---|---|---|
| Area1_Machine1 | Area1Machines | Area1Machines-Pub | Alan1Telemetri - Konu Şablonu: alanlar/alan1/makineler/# |
| Area1Machines-Sub | Alan1Komutlar -Topic Şablonu: alanlar/alan1/mgmt/# | ||
| Area1_MgmtClient1 | Alan1 Yönetimi | Area1Mgmt-Pub | Alan1Komutlar -Konu Şablonu: alanlar/alan1/mgmt/# |
| Area1Mgmt-Sub | Alan1Telemetri -Konu Şablonu: alanlar/alan1/makineler/# | ||
| Area2_Machine1 | Area2Machines | Area2Machines-Pub | Area2Telemetry -Topic Şablonu: areas/area2/machines/# |
| Area2Machines-Sub | Area2Commands -Konular Şablonu: alanlar/area2/mgmt/# | ||
| Area2_ MgmtClient1 | Area2Mgmt | Area2Mgmt-Pub | Area2Commands -Topic Şablonu: alanlar/alan2/mgmt/ # |
| Area2Mgmt-Sub | Area2Telemetry -Topic Şablonu: areas/area2/machines/ # |
Ayrıntılı erişim denetimi
Ayrıntılı erişim denetimi, bir istemci grubundaki her istemcinin kendi konusunu yayımlamak veya abone olmak için yetkilendirmesini denetlemenize olanak tanır. Bu ayrıntılı erişim denetimi, konu şablonlarındaki değişkenler kullanılarak elde edilir.
Bir istemci grubu, tüm konu şablonlarıyla belirli bir konu alanına erişebilse de, konu şablonlarındaki değişkenler, bu istemci grubundaki her istemcinin kendi konusunu yayımlamak veya abone olmak için yetkilendirmesini denetlemenizi sağlar. Örneğin, "makineler" istemci grubu iki istemci içeriyorsa: "machine1" ve "machine2". Değişkenleri kullanarak, yalnızca machine1'in "machines/machine1/telemetry" MQTT konusunda telemetrisini yayımlamasına ve "machine2"nin "machines/machine2/telemetry" MQTT konusunda mesaj yayımlamasına izin verebilirsiniz.
Değişkenler, istemci kimlik doğrulama adlarını veya istemci özniteliklerini temsil eder. MQTT aracısı ile iletişim sırasında, her istemci MQTT konusunda değişkeni yerine bir değerle değiştirir. Örneğin, ${client.authenticationName} değişkeni her istemcinin kimlik doğrulama adıyla değiştirilir: machine1, machine2, vb. MQTT aracısı yalnızca kimlik doğrulama adıyla veya belirtilen özniteliğin değeriyle eşleşen yerine bir değere sahip istemcilere erişim izni verir.
Örneğin, aşağıdaki yapılandırmayı göz önünde bulundurun:
- İstemci grubu: Makineler
- Konu alanı: Makine Telemetri
- "machines/${client.authenticationName}/telemetry" konu şablonu.
- İzin bağlama: istemci grubu: makineler; konu alanı: machinesTelemetry; İzin: yayımcı
Bu yapılandırmayla, yalnızca istemci kimlik doğrulama adı "machine1" olan istemci "machines/machine1/telemetry" konusunda yayımlayabilir, ve yalnızca "machine 2" istemci kimlik doğrulama adına sahip makine "machines/machine2/telemetry" konusunda yayımlayabilir ve bu böyle devam eder. Buna göre, machine2 aynı konu alanına erişimi olmasına rağmen machine1 adına yanlış bilgi yayımlayamaz ve tam tersi de geçerlidir.
Sonraki adımlar:
Yetkilendirme ve kimlik doğrulaması hakkında daha fazla bilgi edinin: