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

Şunlar için geçerlidir:IoT Edge 1.5 onay işareti IoT Edge 1.5 IoT Edge 1.4 onay işareti IoT Edge 1.4

Önemli

IoT Edge 1.5 LTS ve IoT Edge 1.4 LTS desteklenen sürümlerdir. IoT Edge 1.4 LTS, 12 Kasım 2024'te kullanım ömrü sona erer. Önceki bir sürümdeyseniz 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.
  • 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

Not

Bu makalede daha önce IoT C SDK'sından alınan araç, sağlama bilgileri oluşturmak için kullanılmıştır tpm_device_provision . Daha önce bu aracı kullandıysanız, aşağıdaki adımların aynı genel onay anahtarı için farklı bir kayıt kimliği oluşturduğunu unutmayın. Kayıt kimliğini daha önce olduğu gibi yeniden oluşturmanız gerekiyorsa, C SDK'sının tpm_device_provision aracının bunu nasıl oluşturduğuna bakın. DPS'deki bireysel kaydın kayıt kimliğinin IoT Edge cihazının kullanmak üzere yapılandırıldığı kayıt defteri kimliğiyle eşleştiğinden emin olun.

Bu bölümde TPM'nizin onay anahtarını almak ve ardından benzersiz bir kayıt kimliği oluşturmak için TPM2 yazılım araçlarını kullanacaksınız. Bu bölüm 3. Adıma karşılık gelir: Cihazda TPM'yi üretim süreciyle tümleştirme sürecinde yüklü üretici yazılımı ve yazılım vardır.

TPM2 Araçları'nı yükleme

Cihazınızda oturum açın ve paketi yükleyin tpm2-tools .

sudo apt-get install tpm2-tools

Onay anahtarını okumak için aşağıdaki betiği çalıştırın ve henüz yoksa bir tane oluşturun.

#!/bin/sh
if [ "$USER" != "root" ]; then
  SUDO="sudo "
fi

$SUDO tpm2_readpublic -Q -c 0x81010001 -o ek.pub 2> /dev/null
if [ $? -gt 0 ]; then
  # Create the endorsement key (EK)
  $SUDO tpm2_createek -c 0x81010001 -G rsa -u ek.pub

  # Create the storage root key (SRK)
  $SUDO tpm2_createprimary -Q -C o -c srk.ctx > /dev/null

  # make the SRK persistent
  $SUDO tpm2_evictcontrol -c srk.ctx 0x81000001 > /dev/null

  # open transient handle space for the TPM
  $SUDO tpm2_flushcontext -t > /dev/null
fi

printf "Gathering the registration information...\n\nRegistration Id:\n%s\n\nEndorsement Key:\n%s\n" $(sha256sum -b ek.pub | cut -d' ' -f1 | sed -e 's/[^[:alnum:]]//g') $(base64 -w0 ek.pub)
$SUDO rm ek.pub srk.ctx 2> /dev/null

Çıkış penceresinde cihazın Onay anahtarı ve benzersiz bir Kayıt Kimliği 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 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 sanal makinenizi 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:

  • 22.04:

    wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 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
    

İşletim sistemi sürümleri hakkında daha fazla bilgi için bkz . Azure IoT Edge tarafından desteklenen platformlar.

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

Varsayılan olarak, kapsayıcı altyapısı kapsayıcı günlüğü boyutu sınırlarını ayarlamaz. Bu durum, zaman içinde cihazın günlüklerle dolmasına ve disk alanının tamamının kullanılmasına neden olabilir. Ancak, isteğe bağlı olsa da günlüğünüzü yerel olarak gösterilecek şekilde yapılandırabilirsiniz. Günlük yapılandırması hakkında daha fazla bilgi edinmek için bkz . Üretim Dağıtımı Denetim Listesi.

Aşağıdaki adımlarda, kapsayıcınızı günlüğe kaydetme mekanizması olarak günlük sürücüsünü kullanacak local şekilde nasıl yapılandırabileceğiniz gösterilmektedir.

  1. Mevcut Docker daemon'un yapılandırma dosyasını oluşturma veya düzenleme

    sudo nano /etc/docker/daemon.json
    
  2. Varsayılan günlük sürücüsünü local örnekte gösterildiği gibi günlük sürücüsüne ayarlayın.

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

    sudo systemctl restart docker
    

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

IoT Edge hizmeti, IoT Edge cihazında güvenlik standartlarını sağlar ve korur. Hizmet her önyüklemede başlar ve IoT Edge çalışma zamanının geri kalanını başlatarak cihazı bootstraplar.

Not

1.2 sürümünden itibaren IoT kimlik hizmeti , IoT Edge ve IoT Hub ile iletişim kurması gereken diğer cihaz bileşenleri için kimlik sağlama ve yönetimi gerçekleştirir.

Bu bölümdeki adımlar, İnternet bağlantısı olan bir cihaza en son IoT Edge sürümünü 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.

İpucu

Daha eski bir sürümü çalıştıran bir IoT Edge cihazınız varsa ve en son sürüme yükseltmek istiyorsanız IoT Edge güvenlik daemon'unu ve çalışma zamanını güncelleştirme'deki adımları kullanın. Sonraki sürümler, Yükseltme için belirli adımların gerekli olduğu IoT Edge'in önceki sürümlerinden yeterince farklıdır.

IoT Edge'in en son sürümünü ve IoT kimlik hizmeti paketini yükleyin (henüz güncel değilseniz):

  • 22.04:

    sudo apt-get update; \
       sudo apt-get install aziot-edge
    
  • 20.04:

    sudo apt-get update; \
       sudo apt-get install aziot-edge defender-iot-micro-agent-edge
    

İsteğe bağlı defender-iot-micro-agent-edge paket, IoT Edge cihazlarınızın güvenliğini sağlamanıza yardımcı olmak için güvenlik duruşu yönetimi, güvenlik açıkları, tehdit algılama, filo yönetimi ve daha fazlası için uç nokta görünürlüğü sağlayan IoT için Microsoft Defender güvenlik mikro aracısını içerir. Edge cihazlarınızın güvenlik izlemesini ve sağlamlaştırmasını sağlamak için mikro aracıyı Edge aracısıyla yüklemeniz önerilir. IoT için Microsoft Defender hakkında daha fazla bilgi edinmek için bkz . Cihaz oluşturucuları için IoT için Microsoft Defender nedir?

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.

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

IoT Edge yüklemesi kapsamında sağlanan bir şablon dosyasını temel alarak cihazınız için bir yapılandırma dosyası oluşturun.

sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml

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

sudo nano /etc/aziot/config.toml
  1. Dosyanın sağlama yapılandırmaları 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.

    # DPS provisioning with TPM
    [provisioning]
    source = "dps"
    global_endpoint = "https://global.azure-devices-provisioning.net"
    id_scope = "DPS_ID_SCOPE_HERE"
    
    # Uncomment to send a custom payload during DPS registration
    # payload = { uri = "PATH_TO_JSON_FILE" }
    
    [provisioning.attestation]
    method = "tpm"
    registration_id = "REGISTRATION_ID_HERE"
    
    # auto_reprovisioning_mode = Dynamic
    
  2. ve değerlerini id_scoperegistration_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.

    Yapılandırma ayarlarını sağlama hakkında daha fazla bilgi için bkz . IoT Edge cihaz ayarlarını yapılandırma.

  3. İsteğe bağlı olarak, dosyanın otomatik yeniden sağlama modu bölümünü bulun. auto_reprovisioning_mode Cihazınızın yeniden sağlama davranışını yapılandırmak için parametresini kullanın. Dinamik - Cihaz bir IoT Hub'dan diğerine taşınmış olabileceğini algıladığında yeniden sağlama. Bu varsayılan seçenektir. AlwaysOnStartup - Cihaz yeniden başlatıldığında veya bir kilitlenme, daemon'ların yeniden başlatılmasına neden olduğunda yeniden sağlama. OnErrorOnly - Cihaz yeniden sağlamayı otomatik olarak hiçbir zaman tetiklemeyin. Cihaz bağlantı hataları nedeniyle kimlik sağlama sırasında IoT Hub'a bağlanamıyorsa, her modun örtük bir cihaz yeniden sağlama geri dönüşü vardır. Daha fazla bilgi için bkz . IoT Hub cihazı yeniden sağlama kavramları.

  4. İsteğe bağlı olarak, yerel bir JSON dosyasının payload yolunu belirtmek için parametresinin açıklamasını kaldırın. Dosya içeriği, cihaz kaydedildiğinde ek veri olarak DPS'ye gönderilir. Bu, özel ayırma için kullanışlıdır. Örneğin, cihazlarınızı insan müdahalesi olmadan IoT Tak Çalıştır model kimliğine göre ayırmak istiyorsanız.

  5. Dosyayı kaydedip kapatın

IoT Edge'e TPM erişimi verme

IoT Edge çalışma zamanı, bir cihazın TPM'sine aracılık eden bir TPM hizmetine dayanır. Bu hizmetin cihazınızı otomatik olarak sağlamak için TPM'ye erişmesi gerekir.

Hizmetin kök ayrıcalıklarına sahip olması aziottpm için sistemli ayarları geçersiz kılarak TPM'ye erişim 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 veren 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 aziottpm access to tpm0 and tpmrm0
    KERNEL=="tpm0", SUBSYSTEM=="tpm", OWNER="aziottpm", MODE="0660"
    KERNEL=="tpmrm0", SUBSYSTEM=="tpmrm", OWNER="aziottpm", MODE="0660"
    
  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-rw---- 1 root aziottpm 10, 224 Jul 20 16:27 /dev/tpm0
    crw-rw---- 1 root aziottpm 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 yapılandırma değişikliklerini uygulayın.

    sudo iotedge config apply
    

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

Henüz yapmadıysanız cihazda yaptığınız yapılandırma değişikliklerini uygulayın.

sudo iotedge config apply

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

sudo iotedge system status

Daemon günlüklerini inceleyin.

sudo iotedge system logs

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.