X.509 sertifikalarını kullanarak Linux üzerinde 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, X.509 sertifikalarını 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. Sertifikalar ve anahtarlar oluşturun.
  2. Tek bir cihaz için tek bir kayıt veya bir cihaz kümesi için grup kaydı oluşturun.
  3. IoT Edge çalışma zamanını yükleyin ve cihazı IoT Hub'a kaydedin.

X.509 sertifikalarını kanıtlama mekanizması olarak kullanmak, üretimi ölçeklendirmenin ve cihaz sağlamayı basitleştirmenin mükemmel bir yoludur. X.509 sertifikaları genellikle bir güven sertifikası zincirinde düzenlenir. Otomatik olarak imzalanan veya güvenilen bir kök sertifikayla başlayarak, zincirdeki her sertifika bir sonraki alt sertifikayı imzalar. Bu düzen, kök sertifikadan her ara sertifikaya kadar bir cihaza yüklenen son aşağı akış cihaz sertifikasına kadar temsilcili bir güven zinciri oluşturur.

İpucu

Cihazınızda TPM 2.0 gibi bir Donanım Güvenlik Modülü (HSM) varsa, X.509 anahtarlarını HSM'de güvenli bir şekilde depolamanızı öneririz. iotedge-tpm2cloud örneğiyle bu şemada açıklanan ölçekte sıfır dokunma sağlamayı uygulama hakkında daha fazla bilgi edinin.

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

Cihaz kimliği sertifikaları oluşturma

Cihaz kimliği sertifikası, bir sertifika güven zinciri aracılığıyla en üst X.509 sertifika yetkilisi (CA) sertifikasına bağlanan bir aşağı akış cihaz sertifikasıdır. Cihaz kimliği sertifikasının ortak adı (CN), cihazın IoT hub'ınızda olmasını istediğiniz cihaz kimliğine ayarlanmış olmalıdır.

Cihaz kimliği sertifikaları yalnızca IoT Edge cihazını sağlamak ve Azure IoT Hub ile cihazın kimliğini doğrulamak için kullanılır. IoT Edge cihazının doğrulama için modüllere veya aşağı akış cihazlarına sunduğu CA sertifikalarından farklı olarak sertifikaları imzalamaz. Daha fazla bilgi için bkz . Azure IoT Edge sertifika kullanım ayrıntıları.

Cihaz kimliği sertifikasını oluşturduktan sonra iki dosyanız olmalıdır: sertifikanın ortak bölümünü içeren bir .cer veya .pem dosyası ve sertifikanın özel anahtarına sahip bir .cer veya .pem dosyası. DPS'de grup kaydını kullanmayı planlıyorsanız, aynı sertifika güven zincirinde bir ara veya kök CA sertifikasının genel bölümüne de ihtiyacınız vardır.

X.509 ile otomatik sağlamayı ayarlamak için aşağıdaki dosyalara ihtiyacınız vardır:

  • Cihaz kimliği sertifikası ve özel anahtar sertifikası. Tek bir kayıt oluşturursanız cihaz kimliği sertifikası DPS'ye yüklenir. Özel anahtar IoT Edge çalışma zamanına geçirilir.
  • En azından cihaz kimliğine ve ara sertifikalara sahip olması gereken tam zincir sertifikası. Tam zincir sertifikası IoT Edge çalışma zamanına geçirilir.
  • Güven sertifika zincirinden bir ara veya kök CA sertifikası. Grup kaydı oluşturursanız bu sertifika DPS'ye yüklenir.

Test sertifikalarını kullanma (isteğe bağlı)

Yeni kimlik sertifikaları oluşturmak için kullanılabilecek bir sertifika yetkiliniz yoksa ve bu senaryoyu denemek istiyorsanız, Azure IoT Edge git deposu test sertifikaları oluşturmak için kullanabileceğiniz betikler içerir. Bu sertifikalar yalnızca geliştirme testi için tasarlanmıştır ve üretimde kullanılmamalıdır.

Test sertifikaları oluşturmak için IoT Edge cihaz özelliklerini test etmek için tanıtım sertifikaları oluşturma bölümünde yer alan adımları izleyin. Sertifika oluşturma betiklerini ayarlamak ve bir kök CA sertifikası oluşturmak için gerekli iki bölümü tamamlayın. Ardından, cihaz kimliği sertifikası oluşturma adımlarını izleyin. İşiniz bittiğinde aşağıdaki sertifika zincirine ve anahtar çiftlerine sahip olmanız gerekir:

  • <WRKDIR>/certs/iot-edge-device-identity-<name>-full-chain.cert.pem
  • <WRKDIR>/private/iot-edge-device-identity-<name>.key.pem

IoT Edge cihazında bu iki sertifikaya da ihtiyacınız vardır. DPS'de bireysel kayıt kullanacaksanız .cert.pem dosyasını karşıya yüklersiniz. DPS'de grup kaydını kullanacaksanız, karşıya yüklemek için aynı sertifika güven zincirinde bir ara veya kök CA sertifikasına da ihtiyacınız vardır. Tanıtım sertifikaları kullanıyorsanız, grup kaydı için sertifikayı <WRKDIR>/certs/azure-iot-test-only.root.ca.cert.pem kullanın.

DPS kaydı oluşturma

Oluşturulan sertifikalarınızı ve anahtarlarınızı kullanarak bir veya daha fazla IoT Edge cihazı için DPS'de 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 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 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

Bireysel kayıtlar, bir cihazın kimlik sertifikasının genel bölümünü alır ve bunu cihazdaki sertifikayla eşleştirir.

İ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:

    • Mekanizma: X.509'ı seçin.

    • Birincil Sertifika .pem veya .cer dosyası: Cihaz kimliği sertifikasından genel dosyayı karşıya yükleyin. Betikleri test sertifikası oluşturmak için kullandıysanız aşağıdaki dosyayı seçin:

      <WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem

    • IoT Hub Cihaz Kimliği: İsterseniz cihazınız için bir kimlik belirtin. Modül dağıtımı için tek bir cihazı hedeflemek için cihaz kimliklerini kullanabilirsiniz. Cihaz kimliği sağlamazsanız, X.509 sertifikasındaki ortak ad (CN) kullanılır.

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

    • Bu cihazın atanabileceği IoT hub'larını seçin: Cihazınızı bağlamak istediğiniz bağlı IoT hub'ını seçin. Birden çok hub seçebilirsiniz ve cihaz seçilen ayırma ilkesine göre bunlardan birine atanır.

    • İlk Cihaz İkizi Durumu: İstersenize cihaz ikizine eklenecek bir etiket değeri ekleyin. Otomatik dağıtım için cihaz gruplarını hedeflemek için etiketleri kullanabilirsiniz. Örneğin:

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

Kayıtları Yönet'in altında, yeni oluşturduğunuz kaydın Kayıt Kimliğini görebilirsiniz. Cihazınızı sağlarken kullanılabileceğini unutmayı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 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.

Katman 2 desteklenen platform işletim sistemleri için yükleme paketleri Azure IoT Edge sürümlerinde kullanıma sunulur. Çevrimdışı veya belirli bir sürüm yüklemesindeki yükleme adımlarına bakın.

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

  • 24.04:

    wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 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 kapsayıcı altyapısıdır. Docker CE/EE kapsayıcı görüntüleri Moby çalışma zamanıyla uyumludur. Ubuntu Core tutturmalarını kullanıyorsanız Docker snap'e Canonical tarafından hizmet sağlanır ve üretim senaryoları için desteklenir.

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.

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

  • DPS Kimlik Kapsamı değeri. Bu değeri, Azure portalındaki DPS örneğinizin genel bakış sayfasından alabilirsiniz.
  • Cihazdaki cihaz kimliği sertifika zinciri dosyası.
  • Cihazdaki cihaz kimlik anahtarı dosyası.

IoT Edge yüklemesinin bir parçası olarak sağlanan ş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

Dosyanın Sağlama bölümünü bulun. X.509 sertifikasıyla DPS 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 X.509 certificate
[provisioning]
source = "dps"
global_endpoint = "https://global.azure-devices-provisioning.net"
id_scope = "SCOPE_ID_HERE"

# Uncomment to send a custom payload during DPS registration
# payload = { uri = "PATH_TO_JSON_FILE" }

[provisioning.attestation]
method = "x509"
registration_id = "REGISTRATION_ID_HERE"

identity_cert = "DEVICE_IDENTITY_CERTIFICATE_HERE" # For example, "file:///var/aziot/device-id.pem"
identity_pk = "DEVICE_IDENTITY_PRIVATE_KEY_HERE"   # For example, "file:///var/aziot/device-id.key"

# auto_reprovisioning_mode = Dynamic
  1. değerini id_scope DPS örneğinizden kopyaladığınız kapsam kimliğiyle güncelleştirin.

  2. Cihazın IoT Hub'ında bulunan kimliği olan cihaz için bir registration_id belirtin. Kayıt kimliği, kimlik sertifikasının ortak adıyla (CN) eşleşmelidir.

  3. ve identity_pk değerlerini identity_cert sertifikanız ve anahtar bilgilerinizle güncelleştirin.

    Kimlik sertifikası değeri bir dosya URI'si olarak sağlanabilir veya EST veya yerel bir sertifika yetkilisi kullanılarak dinamik olarak verilebilir. Kullanmayı seçtiğiniz biçime göre yalnızca bir satırı açıklamadan kaldırın.

    Kimlik özel anahtarı değeri dosya URI'si veya PKCS#11 URI'si olarak sağlanabilir. Kullanmayı seçtiğiniz biçime göre yalnızca bir satırı açıklamadan kaldırın.

    PKCS#11 URI'leri kullanıyorsanız, yapılandırma dosyasında PKCS#11 bölümünü bulun ve PKCS#11 yapılandırmanız hakkında bilgi sağlayın.

    Sertifikalar hakkında daha fazla bilgi için bkz . IoT Edge sertifikalarını yönetme.

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

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

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

  6. Dosyayı kaydedip kapatın

IoT Edge'de yaptığınız yapılandırma değişikliklerini uygulayın.

sudo iotedge config apply

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.

sudo iotedge system status

Hizmet günlüklerini inceleyin.

sudo iotedge system logs

Çalışan modülleri listeleyin.

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