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.
Compared to the NetHSM hardware the following functions are not implemented at the software container’s REST API:
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.
The unikernel mode runs NetHSM as a guest in a KVM based virtual machine and provides strong separation from the host operating system. This mode is only available on Linux and requires access to the
/dev/tun
and/dev/kvm
device nodes and theNET_ADMIN
capability. For security reasons we recommend the unikernel mode.
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 |
---|---|
|
Aktiviert die erweiterte Protokollierung für NetHSM. |
|
Eine gesetzte Unlock-Passphrase entsperrt den Container automatisch beim Start. |
|
Der Modus kann die Werte unix oder unikernel annehmen, die Voreinstellung ist unix. |
|
Die URL/IP-Adresse des Hosts, auf dem der etcd-Dienst läuft. |
|
Der Port, auf dem der etcd-Dienst läuft, ist standardmäßig 2379. |
|
Der Pfad zum Zertifikat der CA (Certificate Authority), die das Client-Zertifikat signiert hat. |
|
Der Pfad zum Zertifikat für die Client-Authentifizierung. |
|
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-Zertifikat, welches das Client- und Server-Zertifikat signiert hat. |
|
Client-Zertifikat für die Authentifizierung des NetHSM-Prozesses mit dem Schlüsselwertspeicher. |
|
Client-Schlüssel für die Authentifizierung des NetHSM-Prozesses mit dem Key-Value-Store. |
|
Server-Zertifikat für die API des Key-Value-Stores. |
|
Serverschlüssel für die API des Key-Value-Stores. |
|
Geräteschlüssel des NetHSM-Prozesses. Weitere Informationen über den Geräteschlüssel finden Sie im Kapitel Terminologie und Konventionen im Systementwurf. |
Verwendung¶
The production container supports two modes of operation. The following chapters describe how to run the container with the provided compose files or with the run command.
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
$ podman 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
$ podman 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.