Aracılığıyla paylaş


Simetrik anahtar kullanarak Linux üzerinde büyük ölçekte IoT Edge cihazları oluşturma ve sağlama

Şunlar için geçerlidir: evet simgesi IoT Edge 1.1

Önemli

IoT Edge 1.1 destek sonu tarihi 13 Aralık 2022'ydi. Bu ürünün, hizmetin, teknolojinin veya API’nin nasıl desteklendiği hakkında bilgi edinmek için Microsoft Ürün Yaşam Döngüsü’ne göz atın. IoT Edge'in en son sürümüne güncelleştirme hakkında daha fazla bilgi için bkz . IoT Edge'i güncelleştirme.

Bu makalede, simetrik anahtarları kullanarak bir veya daha fazla Linux IoT Edge cihazının otomatik sağlamasını sağlamak için uçtan uca yönergeler sağlanmaktadır. Azure IoT Edge cihazlarını Azure IoT Hub cihaz sağlama hizmeti (DPS) ile otomatik olarak sağlayabilirsiniz. Otomatik sağlama işlemini bilmiyorsanız devam etmeden önce sağlama genel bakışını gözden geçirin.

Görevler aşağıdaki gibidir:

  1. Tek bir cihaz için tek bir kayıt veya bir cihaz kümesi için grup kaydı oluşturun.
  2. IoT Edge çalışma zamanını yükleyin ve IoT Hub'a bağlanın.

Simetrik anahtar kanıtlama, cihaz sağlama hizmeti örneğiyle cihazın kimliğini doğrulamaya yönelik basit bir yaklaşımdır. Bu kanıtlama yöntemi, cihaz sağlama konusunda yeni olan veya katı güvenlik gereksinimleri olmayan geliştiriciler için bir "Merhaba dünya" deneyimini temsil eder. TPM veya X.509 sertifikaları kullanan cihaz kanıtlaması daha güvenlidir ve daha sıkı güvenlik gereksinimleri için kullanılmalıdır.

Önkoşullar

Bulut kaynakları

  • Etkin bir IoT hub'ı
  • Azure'da IoT Hub cihaz sağlama hizmetinin IoT hub'ınıza bağlı bir örneği
    • Cihaz sağlama hizmeti örneğiniz yoksa, IoT Hub cihaz sağlama hizmeti hızlı başlangıcının Yeni IoT Hub cihazı sağlama hizmeti oluşturma ve IoT hub'ı ile cihaz sağlama hizmetinizi bağlama bölümlerindeki yönergeleri izleyebilirsiniz.
    • Cihaz sağlama hizmetini çalıştırdıktan sonra, genel bakış sayfasından Kimlik Kapsamı değerini kopyalayın. IoT Edge çalışma zamanını yapılandırırken bu değeri kullanırsınız.

Cihaz gereksinimleri

IoT Edge cihazı olacak fiziksel veya sanal bir Linux cihazı.

Her cihazı tanımlamak için benzersiz bir kayıt kimliği tanımlamanız gerekir. MAC adresini, seri numarasını veya cihazdaki herhangi bir benzersiz bilgiyi kullanabilirsiniz. Örneğin, bir kayıt kimliği için aşağıdaki dizeyi oluşturan bir MAC adresi ve seri numarasının birleşimini kullanabilirsiniz: sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6. Geçerli karakterler küçük harfli alfasayısal ve tire (-).

DPS kaydı oluşturma

DPS aracılığıyla bir veya daha fazla cihaz sağlamak için bir kayıt oluşturun.

Tek bir IoT Edge cihazı sağlamak istiyorsanız tek bir kayıt oluşturun. Birden çok cihazın sağlanması gerekiyorsa DPS grup kaydı oluşturma adımlarını izleyin.

DPS'de bir kayıt oluşturduğunuzda, ilk cihaz ikizi durumunu bildirme fırsatınız vardır. Cihaz ikizinde cihazları bölge, ortam, konum veya cihaz türü gibi çözümünüzde ihtiyacınız olan ölçümlere göre gruplandıracak şekilde ayarlayabilirsiniz. Bu etiketler otomatik dağıtımlar oluşturmak için kullanılır.

Cihaz sağlama hizmetindeki kayıtlar hakkında daha fazla bilgi için bkz . Cihaz kayıtlarını yönetme.

DPS bireysel kaydı oluşturma

İpucu

Bu makaledeki adımlar Azure portalına yöneliktir, ancak Azure CLI kullanarak tek tek kayıtlar da oluşturabilirsiniz. Daha fazla bilgi için bkz . az iot dps enrollment. CLI komutunun bir parçası olarak, kaydın bir IoT Edge cihazına ait olduğunu belirtmek için kenar etkin bayrağını kullanın.

  1. Azure portalında IoT Hub cihaz sağlama hizmeti örneğine gidin.

  2. Ayarlar'ın altında Kayıtları yönet'i seçin.

  3. Bireysel kayıt ekle'yi seçin ve kaydı yapılandırmak için aşağıdaki adımları tamamlayın:

    1. Mekanizma için Simetrik Anahtar'ı seçin.

    2. Cihazınız için benzersiz bir Kayıt Kimliği sağlayın.

    3. İsteğe bağlı olarak, cihazınız için bir IoT Hub Cihaz Kimliği sağlayın. Modül dağıtımı için tek bir cihazı hedeflemek için cihaz kimliklerini kullanabilirsiniz. Cihaz kimliği sağlamazsanız kayıt kimliği kullanılır.

    4. Kaydın bir IoT Edge cihazına yönelik olduğunu bildirmek için True'yu seçin.

    5. İsteğe bağlı olarak, İlk Cihaz İkizi Durumuna bir etiket değeri ekleyin. Modül dağıtımı için cihaz gruplarını hedeflemek için etiketleri kullanabilirsiniz. Örneğin:

      {
         "tags": {
            "environment": "test"
         },
         "properties": {
            "desired": {}
         }
      }
      
    6. Kaydet'i seçin.

  4. IoT Edge çalışma zamanını yüklerken kullanılacak bireysel kaydın Birincil Anahtar değerini kopyalayın.

Artık bu cihaz için bir kayıt var olduğuna göre, IoT Edge çalışma zamanı yükleme sırasında cihazı otomatik olarak sağlayabilir.

IoT Edge'i yükleme

Bu bölümde, Linux VM'nizi veya fiziksel cihazınızı IoT Edge için hazırlarsınız. Ardından IoT Edge'i yüklersiniz.

Paket deposunu eklemek için aşağıdaki komutları çalıştırın ve ardından Microsoft paket imzalama anahtarını güvenilen anahtarlar listenize ekleyin.

Önemli

30 Haziran 2022'de Raspberry Pi OS Stretch, Katman 1 işletim sistemi destek listesinden kullanımdan kaldırıldı. Olası güvenlik açıklarını önlemek için konak işletim sisteminizi Bullseye'a güncelleştirin.

Yükleme birkaç komutla yapılabilir. Bir terminal açın ve aşağıdaki komutları çalıştırın:

  • 20.04:

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 18.04:

    wget https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

Not

Azure IoT Edge yazılım paketleri, her pakette (usr/share/doc/{package-name} veya dizinde) bulunan lisans koşullarına LICENSE tabidir. Paket kullanmadan önce lisans koşullarını okuyun. Bir paketi yüklemeniz ve kullanmanız, bu koşulları kabul etmişsinizdir. Lisans koşullarını kabul etmiyorsanız bu paketi kullanmayın.

Kapsayıcı altyapısı yükleme

Azure IoT Edge, OCI uyumlu bir kapsayıcı çalışma zamanı kullanır. Üretim senaryoları için Moby altyapısını kullanmanızı öneririz. Moby altyapısı, IoT Edge ile resmi olarak desteklenen tek kapsayıcı altyapısıdır. Docker CE/EE kapsayıcı görüntüleri Moby çalışma zamanıyla uyumludur.

Moby motorunu yükleyin.

sudo apt-get update; \
  sudo apt-get install moby-engine

Moby altyapısı başarıyla yüklendikten sonra, günlüğe kaydetme mekanizması olarak günlük sürücüsünü kullanacak local şekilde yapılandırın. Günlük yapılandırması hakkında daha fazla bilgi edinmek için bkz . Üretim Dağıtımı Denetim Listesi.

  • Docker daemon'un yapılandırma dosyasını adresinde /etc/docker/daemon.jsonoluşturun veya açın.

  • Aşağıdaki örnekte gösterildiği gibi varsayılan günlük sürücüsünü local günlüğe kaydetme sürücüsü olarak ayarlayın.

       {
          "log-driver": "local"
       }
    
  • Değişikliklerin etkili olması için kapsayıcı altyapısını yeniden başlatın.

    sudo systemctl restart docker
    

    İpucu

    Moby kapsayıcı altyapısını yüklerken hata alırsanız, Moby uyumluluğu için Linux çekirdeğinizi doğrulayın. Bazı katıştırılmış cihaz üreticileri, kapsayıcı altyapısı uyumluluğu için gereken özellikler olmadan özel Linux çekirdekleri içeren cihaz görüntülerini gönderir. Çekirdek yapılandırmanızı denetlemek için Moby tarafından sağlanan check-config betiğini kullanan aşağıdaki komutu çalıştırın:

    curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
    chmod +x check-config.sh
    ./check-config.sh
    

    Betiğin çıktısında ve Network Drivers altındaki Generally Necessary tüm öğelerin etkinleştirilip etkinleştirilmediğini denetleyin. Özellikleriniz eksikse, çekirdeğinizi kaynaktan yeniden oluşturup uygun çekirdek .config'e eklemek üzere ilişkili modülleri seçerek bunları etkinleştirin. Benzer şekilde, veya menuconfiggibi defconfig bir çekirdek yapılandırma oluşturucu kullanıyorsanız ilgili özellikleri bulup etkinleştirin ve çekirdeğinizi buna göre yeniden oluşturun. Yeni değiştirilen çekirdeğinizi dağıttıktan sonra, gerekli tüm özelliklerin başarıyla etkinleştirildiğini doğrulamak için check-config betiğini yeniden çalıştırın.

IoT Edge çalışma zamanını yükleme

IoT Edge güvenlik daemon'ı IoT Edge cihazında güvenlik standartlarını sağlar ve korur. Daemon her önyüklemede başlar ve IoT Edge çalışma zamanının geri kalanını başlatarak cihazı önyükler.

Bu bölümdeki adımlar, İnternet bağlantısı olan bir cihaza en son sürümü yükleme işlemini gösterir. Yayın öncesi sürüm gibi belirli bir sürümü yüklemeniz veya çevrimdışıyken yüklemeniz gerekiyorsa, bu makalenin devamında yer alan Çevrimdışı veya belirli bir sürüm yükleme adımlarını izleyin.

IoT Edge sürüm 1.1.* ile birlikte libiothsm-std paketini yükleyin:

sudo apt-get update; \
  sudo apt-get install iotedge

Not

IoT Edge sürüm 1.1, IoT Edge'in uzun vadeli destek dalıdır. Eski bir sürüm çalıştırıyorsanız, eski sürümler artık desteklenmediğinden en son düzeltme ekini yüklemenizi veya güncelleştirmenizi öneririz.

Cihazı bulut kimliğiyle sağlama

Çalışma zamanı cihazınıza yüklendikten sonra, cihazı cihaz sağlama hizmetine ve IoT Hub'a bağlanmak için kullandığı bilgilerle yapılandırın.

Aşağıdaki bilgileri hazır bulundurun:

  1. IoT Edge cihazında yapılandırma dosyasını açın.

    sudo nano /etc/iotedge/config.yaml
    
  2. Dosyanın sağlama yapılandırmaları bölümünü bulun. DPS simetrik anahtar sağlama satırlarının açıklamasını kaldırın ve diğer sağlama satırlarının açıklama satırı eklendiğinden emin olun.

    Satırın provisioning: önünde boşluk olmamalıdır ve iç içe öğeler iki boşlukla girintilenmelidir.

    # DPS TPM provisioning configuration
    provisioning:
      source: "dps"
      global_endpoint: "https://global.azure-devices-provisioning.net"
      scope_id: "PASTE_YOUR_SCOPE_ID_HERE"
      attestation:
        method: "symmetric_key"
        registration_id: "PASTE_YOUR_REGISTRATION_ID_HERE"
        symmetric_key: "PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_HERE"
    
    # always_reprovision_on_startup: true
    # dynamic_reprovisioning: true
    
  3. , registration_idve değerlerini scope_idDPS ve symmetric_key cihaz bilgilerinizle güncelleştirin.

  4. İsteğe bağlı olarak, cihazınızın yeniden sağlama davranışını yapılandırmak için veya dynamic_reprovisioning satırlarını kullanınalways_reprovision_on_startup. Bir cihaz başlangıçta yeniden sağlama için ayarlanırsa, her zaman önce DPS ile sağlamayı dener ve başarısız olursa sağlama yedeklemesine geri döner. Bir cihaz dinamik olarak yeniden sağlama yapacak şekilde ayarlanırsa IoT Edge (ve tüm modüller) yeniden başlatılır ve cihaz bir IoT Hub'dan diğerine taşındığında olduğu gibi bir yeniden sağlama olayı algılanırsa yeniden sağlanır. Özellikle IoT Edge, yeniden sağlama olayını algılamak için bad_credential SDK'dan gelen hataları veya device_disabled hataları denetler. Bu olayı el ile tetikleme için Cihazı IoT Hub'da devre dışı bırakın. Daha fazla bilgi için bkz . IoT Hub cihazı yeniden sağlama kavramları.

  5. Cihazda yaptığınız tüm yapılandırma değişikliklerini alması için IoT Edge çalışma zamanını yeniden başlatın.

    sudo systemctl restart iotedge
    

Yüklemenin başarılı olduğunu doğrulama

Çalışma zamanı başarıyla başlatıldıysa IoT Hub'ınıza gidebilir ve IoT Edge modüllerini cihazınıza dağıtmaya başlayabilirsiniz.

Cihaz sağlama hizmetinde oluşturduğunuz bireysel kaydın kullanıldığını doğrulayabilirsiniz. Azure portalında cihaz sağlama hizmeti örneğine gidin. Oluşturduğunuz bireysel kayıt için kayıt ayrıntılarını açın. Kaydın durumunun atandığını ve cihaz kimliğinin listelendiğine dikkat edin.

IoT Edge'in başarıyla yüklendiğini ve başlatıldığını doğrulamak için cihazınızda aşağıdaki komutları kullanın.

IoT Edge hizmetinin durumunu kontrol edin.

systemctl status iotedge

Hizmet günlüklerini inceleyin.

journalctl -u iotedge --no-pager --no-full

Çalışan modülleri listeleyin.

iotedge list

Sonraki adımlar

Cihaz sağlama hizmeti kayıt işlemi, yeni cihazı sağlarken cihaz kimliğini ve cihaz ikizi etiketlerini aynı anda ayarlamanıza olanak tanır. Otomatik cihaz yönetimi kullanarak tek tek cihazları veya cihaz gruplarını hedeflemek için bu değerleri kullanabilirsiniz. Azure portalını veya Azure CLI'yi kullanarak IoT Edge modüllerini uygun ölçekte dağıtmayı ve izlemeyi öğrenin.