Production Image#

L’image de production est fournie pour les environnements de production avec des exigences de sécurité élevées. Elle nécessite un magasin de valeurs clés etcd externe qui est connecté par une connexion cryptée. Le processus NetHSM peut être exécuté avec une séparation matérielle (KVM) et un chiffrement spécifique au périphérique. L’image est distribuée en tant qu’image OCI et peut être exécutée localement avec un exécuteur compatible tel que Docker et Podman.

Par rapport au matériel NetHSM, les fonctions suivantes ne sont pas implémentées dans l’API REST du conteneur logiciel :

  • Network configuration

  • Réinitialisation d’usine

  • redémarrage

  • Mise à jour du logiciel

Le conteneur de production NetHSM est un produit réservé aux clients payants et peut être acheté ici. L’image peut être obtenue à partir de Nitrokey NetHSM registry en utilisant les informations d’identification fournies après l’achat.

Avertissement

La sécurité du conteneur logiciel NetHSM dépend fortement de la sécurité de la plateforme. Une plateforme compromise pourrait facilement compromettre un conteneur logiciel NetHSM qu’elle exécute. En outre, le TRNG n’existe pas, de sorte que l’entropie utilisée et fournie par le NetHSM dépend de l’entropie de la plateforme.

Politique de marquage#

Les images du dépôt sont marquées avec le hash du commit Git et la version de l’édition. La dernière image est étiquetée avec latest.

Modes of Operation#

L’image peut être exécutée dans deux modes de fonctionnement, à savoir processus Unix ou unikernel.

Le mode processus Unix exécute NetHSM en tant que processus au-dessus du système d’exploitation.

Le mode unikernel exécute NetHSM en tant qu’invité dans une machine virtuelle basée sur KVM et fournit une forte séparation du système d’exploitation hôte. Ce mode n’est disponible que sous Linux et nécessite l’accès aux nœuds de périphériques /dev/tun et /dev/kvm et à la capacité NET_ADMIN.

Important

Pour des raisons de sécurité, choisissez d’exécuter le conteneur en mode unikernel.

Le mode peut être défini à l’aide de la variable d’environnement MODE (voir le chapitre suivant Configuration).

Configuration#

The container can be configured with the following environment variables.

Variable d’environnement

Description

Ipsec (Linux uniquement)

Active la journalisation étendue pour NetHSM.

UNLOCKPW

Une phrase de passe de déverrouillage définie déverrouille automatiquement le conteneur au démarrage.

MODE

Le mode accepte les valeurs unix ou unikernel, par défaut unix.

ETCD_HOST

L’adresse URL/IP de l’hôte qui exécute le service etcd.

ETCD_PORT

Le port sur lequel fonctionne le service etcd, par défaut 2379.

ETCD_CA_CERT

The path to the certificate of the CA (Certificate Authority) which signed the client certificate.

ETCD_CLIENT_CERT

The path to the certificate for the client authentication.

ETCD_CLIENT_KEY

The path to the secret key for the client authentication.

Les secrets d’exécution du conteneur, tels que les certificats et les clés privées, doivent être définis à l’aide de la fonction « secrets » de Docker ou Podman.

Variable secrète

Description

ca_cert

Certificat de l’autorité de certification qui a signé le certificat du client et le certificat du serveur.

client_cert

Certificat du client pour l’authentification du processus NetHSM avec le magasin de valeurs clés.

client_key

Clé client pour l’authentification du processus NetHSM avec le magasin de valeurs clés.

server_cert

Certificat de serveur pour l’API du magasin de valeurs clés.

server_key

Clé de serveur pour l’API du magasin de valeurs clés.

device_key

Clé de dispositif du processus NetHSM. Pour en savoir plus sur la clé de dispositif, voir le chapitre Terminologie et conventions dans la conception du système.

Utilisation#

Le conteneur de production supporte deux modes de fonctionnement ` <container.html#Modes of Operation>` __. Les chapitres suivants décrivent comment exécuter le conteneur avec les fichiers de composition fournis ou avec la commande _run_.

Unix Mode#

Vous pouvez obtenir un fichier de composition fourni ici. Assurez-vous que vous disposez des fichiers nécessaires pour les secrets mentionnés dans le fichier de composition.

Pour exécuter le conteneur sans le fichier de composition, vous devez fournir vous-même un etcd externe. Vous trouverez ici l’image de conteneur recommandée pour etcd. Assurez-vous de passer les options de configuration, comme décrit dans le chapitre Configuration.

Le conteneur peut être exécuté comme suit.

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

NetHSM sera exécuté en tant que processus Unix à l’intérieur du conteneur et exposera l’API REST sur le port 8443 via le protocole HTTPS.

Important

Le conteneur utilise un certificat TLS auto-signé. Veillez à utiliser les paramètres de connexion corrects pour établir une connexion. Veuillez vous référer au chapitre NetHSM introduction pour en savoir plus.

Mode Unikernel#

Vous pouvez obtenir un fichier de composition fourni ici. Assurez-vous que vous disposez des fichiers nécessaires pour les secrets mentionnés dans le fichier de composition.

Pour exécuter le conteneur sans le fichier de composition, vous devez fournir vous-même un etcd externe. Vous trouverez ici l’image de conteneur recommandée pour etcd. Assurez-vous de passer les options de configuration, comme décrit dans le chapitre Configuration.

Le conteneur peut être exécuté comme suit.

$ 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

NetHSM fonctionnera ainsi comme un unikernel à l’intérieur d’une machine virtuelle KVM. Le conteneur exposera l’API REST, via le protocole HTTPS, sur l’interface tap200 avec l’adresse IP 192.168.1.100 et le port 8443.

Important

Le conteneur utilise un certificat TLS auto-signé. Veillez à utiliser les paramètres de connexion corrects pour établir une connexion. Veuillez vous référer au chapitre NetHSM introduction pour en savoir plus.