
Von allen Sitzungen, die ich auf der re:Invent 2019 besucht habe, fand ich diejenige über die Sicherheitsvorteile der Nitro-Architektur am interessantesten. Es mag zwar seltsam klingen, einen Cloud-Berater über Hardware-Details diskutieren zu hören, aber es lohnt sich, auf diese Ebene hinabzusteigen, denn die Nitro-Architektur zeigt, auf welche Weise AWS im Bereich der Virtualisierung innovativ ist. Ich vermute, dass Werner selbst deshalb diese Funktionen in seiner Keynote hervorgehoben hat.
Privilegierte virtuelle Maschinen
Der Xen-Hypervisor, den AWS ursprünglich verwendet hat und der immer noch einige EC2-Instanzklassen betreibt, hat das Konzept einer dom0. Jeder Host verfügt über eine privilegierte virtuelle Maschine, dom0, die mit echter Hardware interagieren darf. Dies ermöglicht es dem Hypervisor, klein zu bleiben, indem die Arbeit auf dom0 verlagert wird. Diese privilegierte virtuelle Maschine führt ein Linux-Betriebssystem aus, das (Festplatten- und Netzwerk-) Geräte verwaltet und sie den nicht privilegierten virtuellen Gastmaschinen zur Verfügung stellt. In dom0 führt AWS unter anderem Dienste aus, die EBS, VPC-Netzwerke und CloudWatch unterstützen. Die privilegierte virtuelle Maschine dom0 hat eine große Angriffsfläche, da sie die Hardware mit den virtuellen Gastmaschinen teilt und ein vollwertiges Betriebssystem ausführt.
Das Nitro-System
Das von AWS als Nitro-System bezeichnete System ist eine Sammlung von speziell angefertigten Geräten, die den Großteil der Arbeit übernehmen, die normalerweise in dom0 zur Unterstützung der virtuellen Maschinen anfällt. Durch die Verlagerung dieser Arbeit auf das Nitro-System bleibt nicht nur mehr Kapazität für die Gäste übrig (etwa 10 % der EC2-Host-Ressourcen werden zurückgewonnen), sondern es macht auch alles viel sicherer.
Es besteht aus einer Reihe von PCI-Karten-ähnlichen Geräten, außerdem ist ein spezieller Sicherheitschip auf der Hauptplatine integriert. Bei der Implementierung des Nitro-Systems hat AWS auf ein neues Sicherheitsparadigma geachtet.
(Bild entnommen aus den Folien der re:Inforce 2019 zu diesem Vortrag).
Neues Sicherheitsparadigma
Bei der Entwicklung des Nitro-Systems hat AWS besonders auf die folgenden Sicherheitsvorkehrungen geachtet:
- wo die Nitro-Komponenten ein Betriebssystem ausführen, ist die Fernanmeldung (SSH) deaktiviert
- die Nitro-Komponenten sind über ein privates Netzwerk miteinander verbunden
- nur die Nitro-Komponenten dürfen sich mit dem AWS-Netzwerk verbinden, ein direkter Zugriff auf dieses Netzwerk ist von den virtuellen Bare-Metal- und Gast-Maschinen aus nicht erlaubt
- die Nitro-Komponenten und der Hypervisor werden durch das Senden von Anfragen an ihre APIs gesteuert, niemals werden diese Komponenten selbst ausgehenden Datenverkehr initiieren; ausgehender Datenverkehr ist ein Zeichen für Probleme
- die Nitro-Komponenten sind live aktualisierbar, mit kaum spürbaren Auswirkungen auf die virtuellen Maschinen
PCI-Karten wie Nitro System Devices
Die Funktionalität des Nitro-Systems wird von verschiedenen PCI-Karten-ähnlichen Geräten bereitgestellt. Dieses Design ist von Microservice-Softwarearchitekturen inspiriert. Einige Arten von Geräten sind:
- Nitro Controller
- Nitro EBS-Subsystem
- Subsystem Nitro Ephemeral Storage
- Nitro VPC Teilsystem
Nitro Controller
Der Nitro-Controller verwaltet den Host, den Hypervisor und die anderen Nitro-Geräte im System. Der Nitro-Controller:
- validiert die Firmware(s) des Motherboards anhand bekannter guter kryptographischer Hashes
- verwaltet die (De-)Provisionierung von EBS- und Local Storage-Volumes und ENI-Geräten
- verwaltet den Hypervisor zur (De-)Provisionierung virtueller Maschinen
- verwaltet den Hypervisor, um Block- und Netzwerkgeräte an virtuelle Maschinen anzuschließen oder von ihnen zu trennen
- sammelt Metriken für CloudWatch
Nitro EBS-Subsystem
Das Nitro EBS-Subsystem stellt dem Motherboard EBS-Volumes als NVMe-Geräte zur Verfügung. Die gesamte Verschlüsselung erfolgt auf dem Nitro-Gerät, die Verschlüsselungsschlüssel werden von KMS verwaltet, der EC2-Host hat keinen Zugriff auf die Verschlüsselungsschlüssel.
Subsystem Nitro Ephemeral Storage
Das lokale Speichersubsystem Nitro stellt dem Motherboard ephemere Volumes als NVMe-Geräte zur Verfügung. Die gesamte Verschlüsselung erfolgt auf dem Nitro-Gerät, die Verschlüsselungsschlüssel werden auf dem Gerät generiert und verlassen es nie. Nach der Verwendung werden die Volumes kryptografisch gelöscht, d.h. die Schlüssel werden entfernt, die eigentlichen Daten in verschlüsselter Form verbleiben auf den physischen Festplatten. Vor der Verwendung werden die ersten und letzten Bytes der Volumes auf Null gesetzt, um zu verhindern, dass das Gastbetriebssystem verwirrt wird (da das Gerät noch mit "zufälligen" Daten aus früheren Verwendungen gefüllt wäre).
Nitro VPC Teilsystem
Das Nitro VPC-Subsystem stellt der Hauptplatine Netzwerkschnittstellen-Controller-Geräte zur Verfügung. Der VPC-Stack läuft auf dem Nitro-System; nur das Nitro-System hat Zugriff auf das private AWS-Netzwerk, der EC2-Host und die Gäste können nur über das Nitro-System auf das Netzwerk zugreifen. Der gesamte Datenverkehr zwischen den von Nitro betriebenen Instanzen wird auf dem Nitro-System transparent verschlüsselt, der Datenverkehr zu Nicht-Nitro-Instanzen wird nicht verschlüsselt, da dies die Leistung beeinträchtigen würde.
Auf der Hauptplatine integrierter Sicherheitschip
Der Nitro-Sicherheitschip schützt die Firmware des Motherboards auf zwei Arten:
- er verweigert jegliche Aktualisierung der Motherboard-Firmware
- er unterbricht den Bootvorgang des Motherboards in einem frühen Stadium, damit die Firmware vom Nitro Controller kryptografisch überprüft werden kann
Was wir von dieser re:Invent Session gelernt haben
Die Sicherheitsvorteile der Nitro-Architektursitzung lehrten uns:
- etwa 10 % der Leistung des Hosts werden durch Auslagerung der Arbeit auf das Nitro-System wiedergewonnen
- das Nitro-System ist nach dem Vorbild von Microservice-Architekturen aufgebaut
- das Nitro-System verbessert die Sicherheit, indem es die Verwaltung und Verschlüsselung von den Gastrechnern isoliert
- das Nitro-System verbessert die Sicherheit durch die Einführung eines neuen Paradigmas
Verfasst von

Thomas de Ruiter
Cloud Consultant with a passion for everything Cloud. Likes to automate all the things. Believes security is everyone's responsibility!
Unsere Ideen
Weitere Blogs
Contact



