IoT Hub Cihaz Akışlar (önizleme)

Azure IoT Hub cihaz akışları , buluttan cihaza çeşitli iletişim senaryoları için güvenli çift yönlü TCP tünellerinin oluşturulmasını kolaylaştırır. Cihaz akışı, cihazınız ve hizmet uç noktaları arasında ara sunucu işlevi gören bir IoT Hub akış uç noktası tarafından aracılık edilir. Aşağıdaki diyagramda gösterilen bu kurulum, özellikle cihazlar bir ağ güvenlik duvarının arkasında olduğunda veya özel bir ağın içinde bulunduğunda kullanışlıdır. Bu nedenle IoT Hub cihaz akışları, müşterilerin ioT cihazlarına güvenlik duvarı dostu bir şekilde ve gelen veya giden ağ güvenlik duvarı bağlantı noktalarını geniş bir şekilde açmaya gerek kalmadan ulaşma sıyrını gidermeye yardımcı olur.

IoT Hub cihaz akışlarını kullanarak cihazların güvenliği korunur ve yalnızca 443 numaralı bağlantı noktası üzerinden IoT hub'ına giden TCP bağlantılarını açması gerekir. Bir akış oluşturulduktan sonra, hizmet tarafı ve cihaz tarafı uygulamaların her biri birbirine ham bayt göndermek ve almak için bir WebSocket istemci nesnesine programlı erişime sahip olur. Bu tünel tarafından sağlanan güvenilirlik ve sıralama garantileri TCP ile aynı düzeydedir.

Sosyal haklar

IoT Hub cihaz akışları aşağıdaki avantajları sağlar:

  • Güvenlik duvarı dostu güvenli bağlantı: IoT cihazlarına, cihazda veya ağ çevrelerinde gelen güvenlik duvarı bağlantı noktası açılmadan hizmet uç noktalarından ulaşılabilir (yalnızca 443 numaralı bağlantı noktası üzerinden IoT Hub'a giden bağlantı gereklidir).

  • Kimlik doğrulaması: Tünelin hem cihaz hem de hizmet tarafının ilgili kimlik bilgilerini kullanarak IoT Hub ile kimlik doğrulaması gerçekleştirmesi gerekir.

  • Şifreleme: IoT Hub cihaz akışları varsayılan olarak TLS özellikli bağlantıları kullanır. Bu, uygulamanın şifreleme kullanıp kullanmadığına bakılmaksızın trafiğin her zaman şifrelenmesini sağlar.

  • Bağlantının basitliği: Çoğu durumda cihaz akışlarının kullanılması, IoT cihazlarına bağlantıyı etkinleştirmek için sanal özel ağların karmaşık kurulumu gereksinimini ortadan kaldırır.

  • TCP/IP yığınıyla uyumluluk: IoT Hub cihaz akışları TCP/IP uygulama trafiğini barındırabilir. Bu, çok çeşitli özel özelliklerin yanı sıra standartlara dayalı protokollerin de bu özelliği kullanabileceği anlamına gelir.

  • Özel ağ kurulumlarında kullanım kolaylığı: Hizmet, cihazın IP adresi yerine cihaz kimliğine başvurarak bir cihazla iletişim kurabilir. Bu, bir cihazın özel ağ içinde bulunduğu ve özel IP adresine sahip olduğu veya IP adresinin dinamik olarak atandığı ve hizmet tarafında bilinmediği durumlarda kullanışlıdır.

Cihaz akışı iş akışları

Hizmet, cihaz kimliğini sağlayarak bir cihaza bağlanmayı istediğinde bir cihaz akışı başlatılır. Bu iş akışı özellikle SSH ve RDP dahil olmak üzere bir istemci/sunucu iletişim modeline uyar. Bu modelde kullanıcı, SSH veya RDP istemci programı kullanarak cihazda çalışan SSH veya RDP sunucusuna uzaktan bağlanmayı hedeflemektedir.

Cihaz akışı oluşturma işlemi, cihaz, hizmet, IoT hub'ın ana ve akış uç noktaları arasında bir anlaşma içerir. IoT hub'ının ana uç noktası bir cihaz akışının oluşturulmasını düzenlerken, akış uç noktası hizmet ve cihaz arasında akan trafiği işler.

Cihaz akışı oluşturma akışı

SDK kullanılarak bir cihaz akışının program aracılığıyla oluşturulması, aşağıdaki şekilde de gösterilen aşağıdaki adımları içerir:

  1. Cihaz uygulaması, cihaza yeni bir cihaz akışı başlatıldığında bildirim almak için önceden bir geri çağırma kaydeder. Bu adım genellikle cihaz önyükleme yapıp IoT Hub'a bağlandığında gerçekleştirilir.

  2. Hizmet tarafı programı, gerektiğinde cihaz kimliğini (IP adresini değil ) sağlayarak bir cihaz akışı başlatır.

  3. IoT hub, 1. adımda kaydedilen geri çağırmayı çağırarak cihaz tarafı programı bildirir. Cihaz, akış başlatma isteğini kabul edebilir veya reddedebilir. Bu mantık uygulama senaryonuza özgü olabilir. Akış isteği cihaz tarafından reddedilirse, IoT Hub hizmete uygun şekilde bilgi verir; aksi takdirde, aşağıdaki adımlar izlenmiştir.

  4. Cihaz, 443 numaralı bağlantı noktası üzerinden akış uç noktasına güvenli bir giden TCP bağlantısı oluşturur ve bağlantıyı bir WebSocket'e yükselter. Akış uç noktasının URL'si ve kimlik doğrulaması için kullanılacak kimlik bilgileri, 3. adımda gönderilen isteğin bir parçası olarak IoT Hub tarafından cihaza sağlanır.

  5. Hizmete, cihazın akışı kabul etme sonucu bildirilir ve akış uç noktasına kendi WebSocket istemcisini oluşturmaya devam eder. Benzer şekilde, akış uç noktası URL'sini ve kimlik doğrulama bilgilerini IoT Hub'dan alır.

Yukarıdaki el sıkışma işleminde:

  • El sıkışma işlemi 60 saniye içinde tamamlanmalıdır (adım 2 ile 5 arasında), aksi takdirde el sıkışma bir zaman aşımıyla başarısız olur ve hizmete uygun olarak bildirim gönderilir.

  • Yukarıdaki akış oluşturma akışı tamamlandıktan sonra akış uç noktası bir ara sunucu görevi görür ve hizmet ile cihaz arasındaki trafiği ilgili WebSockets üzerinden aktarır.

  • Cihaz ve hizmetin hem IoT Hub'ın ana uç noktasına giden bağlantı hem de 443 numaralı bağlantı noktası üzerinden akış uç noktası gerekir. Bu uç noktaların URL'sini IoT Hub'ın portalındaki Genel Bakış sekmesinde bulabilirsiniz.

  • Yerleşik bir akışın güvenilirlik ve sıralama garantileri TCP ile aynı düzeydedir.

  • IoT Hub ve akış uç noktasına yapılan tüm bağlantılar TLS kullanır ve şifrelenir.

Sonlandırma akışı

Kurulan akış, ağ geçidine yönelik TCP bağlantılarının bağlantısı kesildiğinde (hizmet veya cihaz tarafından) sonlandırılır. Bu, cihaz veya hizmet programlarında WebSocket'i kapatarak veya bir ağ bağlantısı zaman aşımı veya işlem hatası durumunda istemeden gerçekleşebilir. Cihaz veya hizmetin akış uç noktasına olan bağlantısı sonlandırıldığında, diğer TCP bağlantısı da (zorla) sonlandırılır ve gerekirse hizmet ve cihaz akışı yeniden oluşturmakla sorumludur.

Bağlantı gereksinimleri

Cihaz akışının hem cihaz hem de hizmet tarafı, IoT Hub'a ve akış uç noktasına TLS özellikli bağlantılar kurabilmelidir. Bu, 443 numaralı bağlantı noktası üzerinden bu uç noktalara giden bağlantı gerektirir. Bu uç noktalarla ilişkilendirilmiş ana bilgisayar adı, aşağıdaki şekilde gösterildiği gibi IoT Hub'ın Genel Bakış sekmesinde bulunabilir:

Alternatif olarak, uç nokta bilgileri hub'ın özellikler bölümü (özellikle property.hostname ve property.deviceStreams anahtarlar) altında Azure CLI kullanılarak alınabilir.

az iot hub devicestream show --name <YourIoTHubName>

Çıkış, hub'ınızın cihaz ve hizmetinin bir cihaz akışı oluşturmak için bağlanması gerekebilecek tüm uç noktaların JSON nesnesidir.

{
  "streamingEndpoints": [
    "https://<YourIoTHubName>.<region-stamp>.streams.azure-devices.net"
  ]
}

Not

Azure CLI sürüm 2.0.57 veya üzerini yüklediğinizden emin olun. Azure CLI Yükleme sayfasından en son sürümü indirebilirsiniz.

Cihaz akış uç noktalarına giden bağlantıya izin ver

Bu makalenin başında belirtildiği gibi cihazınız, cihaz akışı başlatma işlemi sırasında IoT Hub akış uç noktasına giden bir bağlantı oluşturur. Cihaz veya ağındaki güvenlik duvarlarınızın 443 numaralı bağlantı noktası üzerinden akış ağ geçidine giden bağlantıya izin vermesi gerekir (iletişimin TLS kullanılarak şifrelenmiş bir WebSocket bağlantısı üzerinden gerçekleştiğini unutmayın).

Cihaz akış uç noktasının ana bilgisayar adı, Azure IoT Hub portalında Genel Bakış sekmesinin altında bulunabilir.

Alternatif olarak, Azure CLI kullanarak bu bilgileri bulabilirsiniz:

az iot hub devicestream show --name <YourIoTHubName>

Not

Azure CLI sürüm 2.0.57 veya üzerini yüklediğinizden emin olun. Azure CLI Yükleme sayfasından en son sürümü indirebilirsiniz.

Cihaz Akışlar kaynak günlükleri aracılığıyla sorun giderme

IoT Hub'ınız tarafından yayılan cihaz akışları için kaynak günlüklerini toplamak üzere Azure İzleyici'yi ayarlayabilirsiniz. Bu sorun giderme senaryolarında çok yararlı olabilir.

IoT Hub'ınızın cihaz akış günlüklerini Azure İzleyici Günlüklerine göndermek üzere bir tanılama ayarı oluşturmak için aşağıdaki adımları izleyin:

  1. Azure portalında IoT hub'ınıza gidin. Sol bölmedeki İzleme'nin altında Tanılama ayarları'nı seçin. Ardından Tanılama ayarı ekle'yi seçin.

  2. Tanılama ayarınız için bir ad girin ve günlük listesinden Cihaz Akışlar'ı seçin. Ardından Log Analytics'e Gönder'i seçin. Mevcut bir Log Analytics çalışma alanını seçmeniz veya yeni bir çalışma alanı oluşturmanız için size yol gösterilir.

    Enable device streams logs

  3. Cihaz akış günlüklerinizi Log Analytics çalışma alanına göndermek için bir tanılama ayarı oluşturduktan sonra, Azure portalında IoT hub'ınızın sol bölmesindeki İzleme'nin altında Günlükler'i seçerek günlüklere erişebilirsiniz. Cihaz akışları günlükleri tabloda görünür AzureDiagnostics ve olur Category=DeviceStreams. Bir işlemin ardından günlüklerin tabloda gösterilmesinin birkaç dakika sürebileceğini unutmayın.

    Aşağıda gösterildiği gibi, hedef cihazın kimliği ve işlemin sonucu günlüklerde de kullanılabilir.

Azure İzleyici'yi IoT Hub ile kullanma hakkında daha fazla bilgi edinmek için bkz . IoT Hub'ı izleme. IoT Hub için kullanılabilen tüm kaynak günlükleri, ölçümler ve tablolar hakkında bilgi için bkz . Azure IoT Hub veri başvurularını izleme.

Bölgesel kullanılabilirlik

Genel önizleme sırasında IoT Hub cihaz akışları Orta ABD, Doğu ABD EUAP, Kuzey Avrupa ve Güneydoğu Asya bölgelerinde kullanılabilir. Lütfen hub'ınızı bu bölgelerden birinde oluşturduğunuzdan emin olun.

SDK kullanılabilirliği

Her akışın iki tarafı (cihaz ve hizmet tarafında) tüneli oluşturmak için IoT Hub SDK'sını kullanır. Genel önizleme sırasında müşteriler aşağıdaki SDK dillerinden birini seçebilir:

  • C ve C# SDK'sının cihaz tarafında cihaz akışları desteklenir.

  • NodeJS ve C# SDK'sı hizmet tarafında cihaz akışlarını destekler.

Sonraki adımlar

Cihaz akışları hakkında daha fazla bilgi edinmek için aşağıdaki bağlantıları kullanın.