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. |
|
Une phrase de passe de déverrouillage définie déverrouille automatiquement le conteneur au démarrage. |
|
Le mode accepte les valeurs unix ou unikernel, par défaut unix. |
|
L’adresse URL/IP de l’hôte qui exécute le service etcd. |
|
Le port sur lequel fonctionne le service etcd, par défaut 2379. |
|
The path to the certificate of the CA (Certificate Authority) which signed the client certificate. |
|
The path to the certificate for the client authentication. |
|
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 |
---|---|
|
Certificat de l’autorité de certification qui a signé le certificat du client et le certificat du serveur. |
|
Certificat du client pour l’authentification du processus NetHSM avec le magasin de valeurs clés. |
|
Clé client pour l’authentification du processus NetHSM avec le magasin de valeurs clés. |
|
Certificat de serveur pour l’API du magasin de valeurs clés. |
|
Clé de serveur pour l’API du magasin de valeurs clés. |
|
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
$ podman 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
$ 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
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.