Produktiv-Image

Das Produktionsimage ist für Produktionsumgebungen mit hohen Sicherheitsanforderungen vorgesehen. Es erfordert einen externen etcd-Schlüsselwertspeicher, der über eine verschlüsselte Verbindung angeschlossen ist. Der NetHSM-Prozess kann mit hardwarebasierter Trennung (KVM) und gerätespezifischer Verschlüsselung ausgeführt werden. Das Image wird als OCI-Image verteilt und kann lokal mit einem kompatiblen Executor wie Docker und Podman ausgeführt werden.

Im Vergleich zur NetHSM-Hardware sind die folgenden Funktionen nicht in der REST-API des Software-Containers implementiert:

  • Netzwerkkonfiguration

  • Werkseinstellung

  • Neustart

  • Software-Aktualisierung

Der NetHSM-Produktionscontainer ist ein Produkt nur für zahlende Kunden und kann hier erworben werden. Das Image kann von Nitrokey NetHSM registry unter Verwendung der nach dem Kauf angegebenen Anmeldeinformationen bezogen werden.

Warnung

Die Sicherheit des NetHSM-Software-Containers hängt stark von der Sicherheit der Plattform ab. Eine kompromittierte Plattform könnte einen von ihr ausgeführten NetHSM-Softwarecontainer leicht kompromittieren. Darüber hinaus ist der TRNG nicht vorhanden, so dass die vom NetHSM verwendete und bereitgestellte Entropie von der Entropie der Plattform abhängt.

Tagging-Richtlinie

Die images im Repository sind mit dem Git-Commit-Hash und der Version der Veröffentlichung gekennzeichnet. Das neueste image ist mit latest gekennzeichnet.

Betriebsarten

Das Image kann in zwei Betriebsarten ausgeführt werden, nämlich als Unix-Prozess oder Unikernel.

Im Unix-Prozessmodus wird NetHSM als Prozess oberhalb des Betriebssystems ausgeführt.

Im Unikernel-Modus wird NetHSM als Gast in einer KVM-basierten virtuellen Maschine ausgeführt und bietet eine starke Trennung vom Host-Betriebssystem. Dieser Modus ist nur unter Linux verfügbar und erfordert den Zugriff auf die Geräteknoten /dev/tun und /dev/kvm sowie die Fähigkeit NET_ADMIN.

Wichtig

Aus Sicherheitsgründen sollten Sie den Container im Unikernel-Modus betreiben.

Der Modus kann mit der Umgebungsvariablen MODE eingestellt werden (siehe nächstes Kapitel Konfiguration).

Konfiguration

Der Container kann mit den folgenden Umgebungsvariablen konfiguriert werden.

Umgebungsvariable

Beschreibung

DEBUG_LOG

Aktiviert die erweiterte Protokollierung für NetHSM.

UNLOCKPW

Eine gesetzte Unlock-Passphrase entsperrt den Container automatisch beim Start.

MODE

Der Modus kann die Werte unix oder unikernel annehmen, die Voreinstellung ist unix.

ETCD_HOST

Die URL/IP-Adresse des Hosts, auf dem der etcd-Dienst läuft.

ETCD_PORT

Der Port, auf dem der etcd-Dienst läuft, ist standardmäßig 2379.

ETCD_CA_CERT

Der Pfad zum Zertifikat der CA (Certificate Authority), die das Client-Zertifikat signiert hat.

ETCD_CLIENT_CERT

Der Pfad zum Zertifikat für die Client-Authentifizierung.

ETCD_CLIENT_KEY

Der Pfad zum geheimen Schlüssel für die Client-Authentifizierung.

Die Geheimnisse der Container-Laufzeit, wie z. B. Zertifikate und private Schlüssel, müssen mit der Secrets-Funktion von Docker oder Podman festgelegt werden.

Geheime Variable

Beschreibung

ca_cert

CA-Zertifikat, welches das Client- und Server-Zertifikat signiert hat.

client_cert

Client-Zertifikat für die Authentifizierung des NetHSM-Prozesses mit dem Schlüsselwertspeicher.

client_key

Client-Schlüssel für die Authentifizierung des NetHSM-Prozesses mit dem Key-Value-Store.

server_cert

Server-Zertifikat für die API des Key-Value-Stores.

server_key

Serverschlüssel für die API des Key-Value-Stores.

device_key

Geräteschlüssel des NetHSM-Prozesses. Weitere Informationen über den Geräteschlüssel finden Sie im Kapitel Terminologie und Konventionen im Systementwurf.

Verwendung

Der Produktionscontainer unterstützt zwei Betriebsmodi. In den folgenden Kapiteln wird beschrieben, wie der Container mit den bereitgestellten Compose-Dateien oder mit dem Befehl _run_ betrieben werden kann.

Unix-Modus

Sie können eine mitgelieferte Kompositionsdatei hier erhalten. Vergewissern Sie sich, dass Sie die erforderlichen Dateien für die in der Kompositionsdatei genannten Geheimnisse zur Verfügung haben.

Um den Container ohne die Compose-Datei zu betreiben, müssen Sie selbst einen externen etcd bereitstellen. Hier finden Sie das empfohlene Container-Image für etcd. Stellen Sie sicher, dass Sie die Konfigurationsoptionen übergeben, wie im Kapitel Konfiguration beschrieben.

Der Container kann wie folgt ausgeführt werden.

$ docker run -ti --rm -p 8443:8443 registry.git.nitrokey.com/distribution/nethsm:latest

Dadurch wird NetHSM als Unix-Prozess innerhalb des Containers ausgeführt und die REST-API über das HTTPS-Protokoll auf dem Port „8443“ zugänglich gemacht.

Wichtig

Der Container verwendet ein selbstsigniertes TLS-Zertifikat. Stellen Sie sicher, dass Sie die richtigen Verbindungseinstellungen verwenden, um eine Verbindung herzustellen. Weitere Informationen finden Sie im Kapitel NetHSM Einführung.

Unikernel-Modus

Sie können eine mitgelieferte Kompositionsdatei hier erhalten. Vergewissern Sie sich, dass Sie die erforderlichen Dateien für die in der Kompositionsdatei genannten Geheimnisse zur Verfügung haben.

Um den Container ohne die Compose-Datei zu betreiben, müssen Sie selbst einen externen etcd bereitstellen. Hier finden Sie das empfohlene Container-Image für etcd. Stellen Sie sicher, dass Sie die Konfigurationsoptionen übergeben, wie im Kapitel Konfiguration beschrieben.

Der Container kann wie folgt ausgeführt werden.

$ docker run -ti --rm -p 8443:8443 --device /dev/net/tun --device /dev/kvm --cap-add=NET_ADMIN -e "MODE=unikernel" registry.git.nitrokey.com/distribution/nethsm:latest

Dadurch wird NetHSM als Unikernel innerhalb einer virtuellen KVM-Maschine ausgeführt. Der Container stellt die REST-API über das HTTPS-Protokoll auf der Schnittstelle „tap200“ mit der IP-Adresse „192.168.1.100“ und Port „8443“ bereit.

Wichtig

Der Container verwendet ein selbstsigniertes TLS-Zertifikat. Stellen Sie sicher, dass Sie die richtigen Verbindungseinstellungen verwenden, um eine Verbindung herzustellen. Weitere Informationen finden Sie im Kapitel NetHSM Einführung.