Aracılığıyla paylaş


Linux üzerinde TPM ile 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, Güvenilen Platform Modülü (TPM) kullanarak Linux için Azure IoT Edge cihazını otomatik sağlama yönergeleri sağlanır. IoT Edge cihazlarını Azure IoT Hub cihaz sağlama hizmetiyle otomatik olarak sağlayabilirsiniz. Otomatik sağlama işlemini bilmiyorsanız devam etmeden önce sağlama genel bakışını gözden geçirin.

Bu makalede iki yöntem özetlenmiştir. Çözümünüzün mimarisine göre tercihinizi seçin:

  • Linux cihazını fiziksel TPM donanımıyla otomatik sağlama. Infineon OPTIGA™ TPM SLB 9670 örnektir.
  • Hyper-V'nin etkin olduğu bir Windows geliştirme makinesinde çalışan sanal TPM ile Linux sanal makinesini (VM) otomatik sağlama. Bu metodolojiyi yalnızca test senaryosu olarak kullanmanızı öneririz. Sanal TPM, fiziksel TPM ile aynı güvenliği sunmaz.

Yönergeler metodolojinize göre farklılık gösterdiğinden ileriye doğru sekmede olduğunuzdan emin olun.

Görevler aşağıdaki gibidir:

  1. TPM'niz için sağlama bilgilerini alın.
  2. IoT Hub cihaz sağlama hizmetinin bir örneğinde cihazınız için tek bir kayıt oluşturun.
  3. IoT Edge çalışma zamanını yükleyin ve cihazı IoT hub'ına bağlayın.

Ö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 bir Linux cihazı.

Cihaz üreticisiyseniz TPM'yi üretim sürecine tümleştirme yönergelerine bakın.

Not

Cihaz sağlama hizmetiyle TPM kanıtlama kullandığınızda TPM 2.0 gereklidir.

Yalnızca TPM kullanırken grup değil, cihaz sağlama hizmeti kayıtları oluşturabilirsiniz.

Cihazınızı ayarlama

TPM ile fiziksel bir Linux cihazı kullanıyorsanız cihazınızı ayarlamak için ek bir adım yoktur.

Devam etmeye hazırsınız.

TPM'niz için sağlama bilgilerini alma

Bu bölümde, TPM'nizin kayıt kimliğini ve onay anahtarını almak için kullanabileceğiniz bir araç oluşturacaksınız.

  1. Cihazınızda oturum açın ve ardından C için Azure IoT cihaz SDK'sını yüklemek ve derlemek için Linux geliştirme ortamı ayarlama konusundaki adımları izleyin.

  2. TPM'niz için cihaz sağlama bilgilerinizi alan SDK aracını oluşturmak için aşağıdaki komutları çalıştırın.

    cd azure-iot-sdk-c/cmake
    cmake -Duse_prov_client:BOOL=ON ..
    cd provisioning_client/tools/tpm_device_provision
    make
    sudo ./tpm_device_provision
    
  3. Çıkış penceresinde cihazın Kayıt Kimliği ve Onay anahtarı görüntülenir. Bu değerleri daha sonra cihaz sağlama hizmetinde cihazınız için tek bir kayıt oluşturduğunuzda kullanmak üzere kopyalayın.

Kayıt kimliğinizi ve onay anahtarınızı aldıktan sonra devam etmeye hazırsınız demektir.

İpucu

Bilgileri almak için TPM2 yazılım araçlarını kullanmak istemiyorsanız, sağlama bilgilerini almak için başka bir yol bulmanız gerekir. Her TPM yongası için benzersiz olan onay anahtarı, kendisiyle ilişkilendirilmiş TPM yonga üreticisinden alınır. TPM cihazınız için benzersiz bir kayıt kimliği türetebilirsiniz. Örneğin, yukarıda gösterildiği gibi onay anahtarının SHA-256 karması oluşturabilirsiniz.

Cihaz sağlama hizmeti kaydı oluşturma

Cihaz sağlama hizmetinde tek bir kayıt oluşturmak için TPM'nizin sağlama bilgilerini kullanın.

Cihaz sağlama hizmetinde bir kayıt oluşturduğunuzda, İlk Cihaz İkizi Durumunu bildirme fırsatınız vardır. Cihaz ikizinde cihazları bölge, ortam, konum veya cihaz türü gibi çözümünüzde kullanılan ölçümlere göre gruplandıracak şekilde ayarlayabilirsiniz. Bu etiketler otomatik dağıtımlar oluşturmak için kullanılır.

İ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ğinize 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 TPM'yi seçin.

    2. VM'nizden veya fiziksel cihazınızdan kopyaladığınız Onay anahtarını ve Kayıt Kimliğini belirtin.

    3. İstersensiniz cihazınız için bir kimlik belirtin. Cihaz kimliği sağlamazsanız kayıt kimliği kullanılır.

    4. VM'nizin veya fiziksel cihazınızın bir IoT Edge cihazı olduğunu bildirmek için True'yu seçin.

    5. Cihazınızı bağlamak istediğiniz bağlı IoT hub'ını seçin veya Yeni IoT Hub'a bağla'yı seçin. Birden çok hub seçebilirsiniz ve cihaz seçilen atama ilkesine göre bunlardan birine atanır.

    6. İstersenize İlk Cihaz İkizi Durumuna bir etiket değeri ekleyin. Modül dağıtımı için cihaz gruplarını hedeflemek için etiketleri kullanabilirsiniz. Daha fazla bilgi için bkz . IoT Edge modüllerini uygun ölçekte dağıtma.

    7. Kaydet'i seçin.

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.

  1. Daha önce toplanan cihaz sağlama hizmet kimliği Kapsamı ve cihaz Kayıt Kimliği'ni bilin.

  2. IoT Edge cihazınızda yapılandırma dosyasını açın.

    sudo nano /etc/iotedge/config.yaml
    
  3. Dosyanın sağlama yapılandırması bölümünü bulun. TPM 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: "SCOPE_ID_HERE"
      attestation:
        method: "tpm"
        registration_id: "REGISTRATION_ID_HERE"
    
    # always_reprovision_on_startup: true
    # dynamic_reprovisioning: false
    
  4. ve değerlerini scope_id registration_id cihaz sağlama hizmetiniz ve cihaz bilgilerinizle güncelleştirin. scope_id Değer, cihazınızın sağlama hizmeti örneğinin genel bakış sayfasındaki Kimlik Kapsamı'dır.

  5. İ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ı.

  6. Dosyayı kaydedip kapatın

IoT Edge'e TPM erişimi verme

IoT Edge çalışma zamanının cihazınızı otomatik olarak sağlamak için TPM'ye erişmesi gerekir.

Hizmetin kök ayrıcalıklarına sahip olması için sistemli ayarları geçersiz kılarak IoT Edge çalışma zamanına iotedge TPM erişimi verebilirsiniz. Hizmet ayrıcalıklarını yükseltmek istemiyorsanız, TPM erişimini el ile sağlamak için aşağıdaki adımları da kullanabilirsiniz.

  1. IoT Edge çalışma zamanına ve tpmrm0erişimi tpm0 verecek yeni bir kural oluşturun.

    sudo touch /etc/udev/rules.d/tpmaccess.rules
    
  2. Kural dosyasını açın.

    sudo nano /etc/udev/rules.d/tpmaccess.rules
    
  3. Aşağıdaki erişim bilgilerini kural dosyasına kopyalayın. tpmrm0 4.12'den önceki bir çekirdek kullanan cihazlarda mevcut olmayabilir. Sahip olmayan tpmrm0 cihazlar bu kuralı güvenle yoksayar.

    # allow iotedge access to tpm0
    KERNEL=="tpm0", SUBSYSTEM=="tpm", OWNER="iotedge", MODE="0600"
    KERNEL=="tpmrm0", SUBSYSTEM=="tpmrm", OWNER="iotedge", MODE="0600"
    
  4. Dosyayı kaydedin ve dosyadan çıkın.

  5. udev Yeni kuralı değerlendirmek için sistemi tetikleme.

    /bin/udevadm trigger --subsystem-match=tpm --subsystem-match=tpmrm
    
  6. Kuralın başarıyla uygulandığını doğrulayın.

    ls -l /dev/tpm*
    

    Başarılı çıktı aşağıdaki gibi görünür:

    crw------- 1 iotedge root 10, 224 Jul 20 16:27 /dev/tpm0
    crw------- 1 iotedge root 10, 224 Jul 20 16:27 /dev/tpmrm0
    

    Doğru izinlerin uygulandığını görmüyorsanız yenilemek için makinenizi yeniden başlatmayı udevdeneyin.

  7. 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

Henüz yapmadıysanız, 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

IoT Edge çalışma zamanının çalışıp çalışmadığını denetleyin.

sudo systemctl status iotedge

Daemon günlüklerini inceleyin.

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

Sağlama hataları görürseniz yapılandırma değişiklikleri henüz geçerli olmayabilir. IoT Edge daemon'unu yeniden başlatmayı deneyin.

sudo systemctl daemon-reload

Alternatif olarak, değişikliklerin yeni bir başlangıç üzerinde etkili olup olmadığını görmek için VM'nizi yeniden başlatmayı da deneyebilirsiniz.

Çalışma zamanı başarıyla başlatıldıysa IoT hub'ınıza gidip yeni cihazınızın otomatik olarak sağlandığını görebilirsiniz. Cihazınız artık IoT Edge modüllerini çalıştırmaya hazırdır.

Çalışan modülleri listeleyin.

iotedge list

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.

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önetimini 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.