Windows üzerinde Linux için Azure IoT Edge için dTPM erişimi
Şunlar için geçerlidir: 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.
Visual Studio 2019 veya 2022'i açın.
Yeni proje oluştur'u seçin.
Şablon listesinde Konsol Uygulaması'nı ve ardından İleri'yi seçin.
Proje Adı, Konum ve Çözüm Adı alanlarını doldurun ve İleri'yi seçin.
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.
Çözüm Gezgini'da proje adına sağ tıklayın ve NuGet Paketlerini Yönet'i seçin.
Gözat'ı seçin ve araması yapın
Microsoft.TSS
. Bu paket hakkında daha fazla bilgi için bkz. Microsoft.TSS.Listeden Microsoft.TSS paketini ve ardından Yükle'yi seçin.
Program.cs dosyasını düzenleyin ve içeriğini EFLOW TPM örnek kodu - Program.cs ile değiştirin.
Projeyi derlemek için Derleme>çözümü'ne tıklayın. Derlemenin başarılı olduğunu doğrulayın.
Çözüm Gezgini'da projeye sağ tıklayın ve Yayımla'yı seçin.
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.
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ı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.
Yönetici Olarak Çalıştır'ı kullanarak yükseltilmiş bir PowerShell oturumu başlatın.
Dizini yayımlanan dosyaları içeren üst klasör olarak değiştirin. Örneğin, yayımlanan dosyalarınız dizinindeki
C:\Users\User
TPM klasörünün altındaysa. Üst klasöre geçmek için aşağıdaki komutu kullanabilirsiniz.cd "C:\Users\User"
Ö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"
TPM.tar dosyası başarıyla oluşturulduktan sonra, oluşturulan tar dosyasını EFLOW VM'ye kopyalamak için cmdlet'ini kullanın
Copy-EflowVmFile
. Örneğin, dizinindeC:\Users\User
TPM.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
EFLOW sanal makinesine bağlanın.
Connect-EflowVm
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.Tar dosyasındaki tüm içeriği ayıklamak için aşağıdaki komutu çalıştırın.
tar -xvzf TPM.tar
Ayıklama işleminden sonra tüm TPM dosyalarını içeren yeni bir klasör görmeniz gerekir.
Dizini TPM klasörüne değiştirin.
cd TPM
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
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
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.