Sdílet prostřednictvím


Přístup TPM pro AKS Edge Essentials

Čip TPM (Trusted Platform Module) je zabezpečený kryptografický procesor, který je navržený k provádění kryptografických operací. Tato technologie je navržená tak, aby poskytovala hardwarové funkce související se zabezpečením. Funkci předávání TPM, která umožňuje virtuálnímu počítači AKS Edge Essentials používat čip TPM hostitele Windows, můžete povolit nebo zakázat. Funkce předávání TPM poskytuje přístup jen pro čtení k kryptografickým klíčům uloženým v čipu TPM.

Tento článek popisuje, jak vyvíjet vzorový kód v jazyce C# pro čtení kryptografických klíčů uložených v diskrétním čipu TPM zařízení.

Poznámka:

Přístup ke klíčům TPM je omezený jen pro čtení. Pokud chcete zapisovat klíče do čipu TPM, musíte to udělat z hostitelského operačního systému Windows.

Požadavky

  • Hostitelský operační systém Windows s čipem TPM nebo vTPM (pokud používáte virtuální počítač s operačním systémem Windows).
  • Povolte přístup TPM z virtuálního počítače CBL-Mariner s povoleným průchodem TPM. V souboru aksedge-config v machines části nastavte Machine.LinuxNode.TpmPassthrough hodnotu na True. Přístup TPM můžete povolit nebo zakázat pouze při vytváření nového nasazení. Jakmile příznak nastavíte, nejde ho změnit, pokud neodeberete nasazení nebo uzel.
  • Ujistěte se, že je index non-Volatile (NV) (výchozí index=3001) inicializován s 8 bajty dat. Výchozí hodnota AuthValue použitá ukázkou je {1,2,3,4,5,6,7,8}, která odpovídá ukázce NV (Windows) v knihovnách TSS.MSR při zápisu do čipu TPM. Před čtením z virtuálního počítače CBL-Mariner musí na hostiteli s Windows proběhnout veškerá inicializace indexu. Další informace o ukázkách TPM najdete v tématu TSS.MSR.

Upozornění

Povolení průchodu čipem TPM do virtuálního počítače může zvýšit bezpečnostní rizika.

Vytvoření ukázkového spustitelného souboru TPM

Následující kroky ukazují, jak vytvořit ukázkový spustitelný soubor pro přístup k diskrétnímu indexu TPM (dTPM) z virtuálního počítače CBL-Mariner.

  1. Otevřete Visual Studio 2019 nebo 2022. Vyberte Vytvořit nový projekt. V seznamu šablon vyberte Konzolová aplikace a pak vyberte Další:

    Snímek obrazovky znázorňující vytvoření nového řešení v sadě Visual Studio

  2. Zadejte pole Název projektu, Umístění a Název řešení a pak vyberte Další.

  3. Zvolte cílovou architekturu. Preferuje se nejnovější verze dlouhodobé podpory .NET 6.0 (LTS). Po výběru cílové architektury vyberte Vytvořit. Visual Studio vytvoří nové řešení konzolové aplikace.

  4. V Průzkumník řešení klikněte pravým tlačítkem na název projektu a vyberte Spravovat balíčky NuGet.

  5. Vyberte Procházet a vyhledejte Microsoft.TSS. Další informace o tomto balíčku naleznete v tématu Microsoft.TSS. V seznamu zvolte balíček Microsoft.TSS a pak vyberte Nainstalovat.

  6. Upravte soubor Program.cs a nahraďte obsah vzorovým kódem tpm-read-nv – Program.cs.

  7. Vyberte Sestavit > řešení pro sestavení a sestavte projekt. Ověřte, že sestavení proběhlo úspěšně.

  8. V Průzkumníku řešení klikněte pravým tlačítkem na požadovaný projekt a vyberte Publikovat.

  9. V průvodci publikováním zvolte Složka složek>. Vyberte Procházet a pak zvolte výstupní umístění pro vygenerovaný spustitelný soubor. Vyberte Dokončit. Po vytvoření profilu publikování vyberte Zavřít.

  10. Na kartě Publikovat vyberte Zobrazit všechna nastavení. Změňte následující konfiguraci a pak vyberte Uložit:

    • Cílový modul runtime: linux-x64.
    • Režim nasazení: Samostatná.
  11. Vyberte Publikovat a počkejte na vytvoření spustitelného souboru.

Pokud publikování proběhne úspěšně, měli byste vidět nové soubory vytvořené ve výstupní složce.

Kopírování a spuštění spustitelného souboru

Po vytvoření spustitelného souboru a souborů závislostí zkopírujte složku do virtuálního počítače CBL-Mariner. Následující kroky ukazují, jak zkopírovat všechny potřebné soubory a jak spustitelný soubor na virtuálním počítači CBL-Mariner.

  1. Otevřete relaci PowerShellu se zvýšenými oprávněními.

  2. Změňte adresář na nadřazenou složku, která obsahuje publikované soubory.

    Pokud jsou například publikované soubory pod složkou TPM v adresáři C:\Users<User>, můžete k přechodu na nadřazenou složku použít následující příkaz:

    cd "C:\Users\<User>"
    
  3. Upravte soubor TPMRead.runtimeconfig.json, aby se zabránilo problému s globalizací ICU na virtuálním počítači s Linuxem:

    1. Otevřete TPMRead.runtimeconfig.json.

    2. Do oddílu configProperties přidejte následující řádek:

      "System.Globalization.Invariant": true
      
  4. Vytvořte soubor tar se všemi soubory vytvořenými v předchozích krocích.

    Pokud máte například všechny soubory ve složce TPM, můžete k vytvoření souboru TPM.tar použít následující příkaz:

    tar -cvzf TPM.tar ".\TPM"
    
  5. Po úspěšném vytvoření souboru TPM.tar pomocí Copy-AksEdgeNodeFile rutiny zkopírujte soubor tar do virtuálního počítače CBL-Mariner. Pokud máte například název souboru tar TPM.tar v adresáři C:\Users<User>, můžete pomocí následujícího příkazu zkopírovat do virtuálního počítače CBL-Mariner:

    Copy-AksEdgeNodeFile -fromFile "C:\Users\<User>\TPM.tar" -toFile "/home/aksedge-user/" -pushFile
    
  6. Spuštěním následujícího příkazu extrahujte veškerý obsah ze souboru tar :

    Invoke-AksEdgeNodeCommand -NodeType "Linux" -command "tar -xvzf /home/aksedge-user/TPM.tar"
    
  7. Po extrakci přidejte do hlavního spustitelného souboru oprávnění ke spustitelnému souboru. Pokud byl například název vašeho projektu TPMRead, hlavní spustitelný soubor má název TPMRead. Spuštěním následujícího příkazu ho nastavte jako spustitelný:

    Invoke-AksEdgeNodeCommand -NodeType "Linux" -command "chmod +x /home/aksedge-user/TPM/TPMRead"
    
  8. Posledním krokem je spuštění spustitelného souboru. Pokud je například název vašeho projektu TPMRead, spusťte následující příkaz:

    Invoke-AksEdgeNodeCommand -NodeType "Linux" -command "/home/aksedge-user/TPM/TPMRead"
    

    Zobrazený výstup by měl vypadat přibližně takto:

    Snímek obrazovky znázorňující výstup TPM

Další kroky