Windows üzerinde Linux için Azure IoT Edge için dTPM erişimi

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

Önemli

IoT Edge 1.4 desteklenen sürümdür. Önceki bir sürümdeyseniz bkz. güncelleştirme IoT Edge.

Güvenilir platform modülü (TPM) yongası, şifreleme işlemlerini gerçekleştirmek için tasarlanmış güvenli bir şifreleme işlemcisidir. Bu teknoloji, donanım tabanlı, güvenlikle ilgili işlevler sağlamak için tasarlanmıştır. Windows üzerinde Linux için Azure IoT Edge (EFLOW) sanal makinesinde VM'ye bağlı sanal TPM'ler yoktur. Ancak kullanıcı, EFLOW sanal makinesinin Windows ana bilgisayar işletim sistemi TPM'sini kullanmasına izin veren TPM geçiş özelliğini etkinleştirebilir veya devre dışı bırakabilir. TPM geçiş özelliği iki ana senaryoyu etkinleştirir:

  • Cihaz Sağlama Hizmeti'ni (DPS) kullanarak IoT Edge cihaz sağlama için TPM teknolojisini kullanma
  • TPM içinde depolanan şifreleme anahtarlarına salt okunur erişim.

Bu makalede, cihaz TPM'sinde depolanan şifreleme anahtarlarını okumak için C# dilinde bir örnek kodun nasıl geliştirilecekleri açıklanır.

Önemli

TPM anahtarlarına erişim salt okunur ile sınırlıdır. TPM'ye anahtar yazmak istiyorsanız, bunu Windows ana bilgisayar işletim sisteminden yapmanız gerekir.

Önkoşullar

  • TPM veya vTPM içeren bir Windows ana bilgisayar işletim sistemi (Windows ana bilgisayar işletim sistemi sanal makinesi kullanılarak ig).

  • TPM geçişinin etkinleştirildiği EFLOW sanal makinesi. Yükseltilmiş bir PowerShell oturumu kullanarak TPM geçişlerini etkinleştirmek için kullanın Set-EflowVmFeature -feature "DpsTpm" -enable . Daha fazla bilgi için bkz . TPM geçişini etkinleştirmek için Set-EflowVmFeature.

  • NV dizininin (varsayılan dizin=3001) 8 bayt veriyle başlatıldığından emin olun. Örnek tarafından kullanılan varsayılan AuthValue, {1,2,3,4,5,6,7,8} TSS'deki NV (Windows) Örneğine karşılık gelir. TPM'ye yazarken MSR kitaplıkları. Tüm dizin başlatma işleminin EFLOW VM'den okunmadan önce Windows Konağından gerçekleşmesi gerekir. TPM örnekleri hakkında daha fazla bilgi için bkz. TSS.MSR.

    Uyarı

    Sanal makinede TPM geçişini etkinleştirmek güvenlik risklerini artırabilir.

dTPM yürütülebilir dosyasını oluşturma

Aşağıdaki adımlarda, EFLOW VM'sinden TPM dizinine erişmek için örnek yürütülebilir dosyanın nasıl oluşturulacağı gösterilir. EFLOW TPM geçişi hakkında daha fazla bilgi için bkz. Windows Güvenliği üzerinde Linux için Azure IoT Edge.

  1. Visual Studio 2019 veya 2022'i açın.

  2. Yeni proje oluştur'u seçin.

  3. Şablon listesinde Konsol Uygulaması'nı ve ardından İleri'yi seçin.

    Visual Studio yeni çözüm oluşturma

  4. Proje Adı, Konum ve Çözüm Adı alanlarını doldurun ve İleri'yi seçin.

  5. Bir hedef çerçeve seçin. En son .NET 6.0 LTS sürümü tercih edilir. Hedef çerçeveyi seçtikten sonra Oluştur'u seçin. Visual Studio yeni bir konsol uygulaması çözümü oluşturur.

  6. Çözüm Gezgini'da proje adına sağ tıklayın ve NuGet Paketlerini Yönet'i seçin.

  7. Gözat'ı seçin ve araması yapınMicrosoft.TSS. Bu paket hakkında daha fazla bilgi için bkz. Microsoft.TSS.

  8. Listeden Microsoft.TSS paketini ve ardından Yükle'yi seçin.

    Visual Studio'da NuGet paketleri eklemeyi gösteren ekran görüntüsü.

  9. Program.cs dosyasını düzenleyin ve içeriğini EFLOW TPM örnek kodu - Program.cs ile değiştirin.

  10. Projeyi derlemek için Derleme>çözümü'ne tıklayın. Derlemenin başarılı olduğunu doğrulayın.

  11. Çözüm Gezgini'da projeye sağ tıklayın ve Yayımla'yı seçin.

  12. Yayımla sihirbazında Klasör Klasörü'ne> tıklayın. Gözat'ı seçin ve yürütülebilir dosyanın oluşturulacağı çıkış konumunu seçin. Son'u seçin. Yayımlama profili oluşturulduktan sonra Kapat'ı seçin.

  13. Yayımla sekmesinde Tüm ayarları göster bağlantısını seçin. Aşağıdaki yapılandırmaları değiştirip Kaydet'i seçin.

    • Hedef Çalışma Zamanı: linux-x64.
    • Dağıtım modu: Bağımsız.

    Yayımlama seçeneklerini gösteren ekran görüntüsü.

  14. Yayımla'yı seçin ve yürütülebilir dosyanın oluşturulmasını bekleyin.

Yayımlama başarılı olursa çıkış klasörünüzde oluşturulan yeni dosyaları görmeniz gerekir.

Yürütülebilir dosyayı kopyalama ve çalıştırma

Yürütülebilir dosya ve bağımlılık dosyaları oluşturulduktan sonra klasörü EFLOW sanal makinesine kopyalamanız gerekir. Aşağıdaki adımlar, gerekli tüm dosyaları kopyalamayı ve yürütülebilir dosyayı EFLOW sanal makinesi içinde çalıştırmayı gösterir.

  1. Yönetici Olarak Çalıştır'ı kullanarak yükseltilmiş bir PowerShell oturumu başlatın.

  2. Dizini yayımlanan dosyaları içeren üst klasör olarak değiştirin. Örneğin, yayımlanan dosyalarınız dizinindeki C:\Users\UserTPM klasörünün altındaysa. Üst klasöre geçmek için aşağıdaki komutu kullanabilirsiniz.

    cd "C:\Users\User"
    
  3. Önceki adımlarda oluşturulan tüm dosyaları içeren bir tar dosyası oluşturun. PowerShell tar desteği hakkında daha fazla bilgi için bkz. Windows'a Gelen Tar ve Curl. Örneğin, tüm dosyalarınız TPM klasörünün altındaysa, TPM.tar dosyasını oluşturmak için aşağıdaki komutu kullanabilirsiniz.

     tar -cvzf TPM.tar ".\TPM"
    
  4. TPM.tar dosyası başarıyla oluşturulduktan sonra, oluşturulan tar dosyasını EFLOW VM'ye kopyalamak için cmdlet'ini kullanınCopy-EflowVmFile. Örneğin, dizininde C:\Users\UserTPM.tartar tar dosya adına sahipseniz. EFLOW VM'ye kopyalamak için aşağıdaki komutu kullanabilirsiniz.

    Copy-EflowVmFile -fromFile "C:\Users\User\TPM.tar" -toFile "/home/iotedge-user/" -pushFile
    
  5. EFLOW sanal makinesine bağlanın.

    Connect-EflowVm
    
  6. Dizini tar dosyasını kopyaladığınız klasöre değiştirin ve dosyanın kullanılabilir olup olmadığını denetleyin. Yukarıdaki örneği kullandıysanız, EFLOW VM'sine bağlandığınızda zaten iotedge-user kök klasöründe olursunuz. ls Dosyaları ve klasörleri listelemek için komutunu çalıştırın.

  7. Tar dosyasındaki tüm içeriği ayıklamak için aşağıdaki komutu çalıştırın.

    tar -xvzf TPM.tar
    
  8. Ayıklama işleminden sonra tüm TPM dosyalarını içeren yeni bir klasör görmeniz gerekir.

  9. Dizini TPM klasörüne değiştirin.

    cd TPM
    
  10. Ana yürütülebilir dosyaya yürütülebilir izin ekleyin. Örneğin, projenizin adı TPMRead ise, ana yürütülebilir dosyanız TPMRead olarak adlandırılır. Yürütülebilir hale getirmek için aşağıdaki komutu çalıştırın.

    chmod +x TPMRead
    
  11. ICU genelleştirme sorununu çözmek için aşağıdaki komutu çalıştırın. Örneğin, proje adınız TPMTest ise şunu çalıştırın:

     sed -i '/"configProperties": /a \\t"System.Globalization.Invariant\": true,' TPMTest.runtimeconfig.json
    
  12. Son adım yürütülebilir dosyayı çalıştırmaktır. Örneğin, projenizin adı TPMTest ise aşağıdaki komutu çalıştırın:

    ./TPMTest
    

    Aşağıdakine benzer bir çıktı görmeniz gerekir.

    EFLOW dTPM çıkışını gösteren ekran görüntüsü.

Sonraki adımlar