Production Image¶
L’immagine di produzione viene fornita per ambienti di produzione con elevati requisiti di sicurezza. Richiede un archivio di valori-chiave etcd esterno, collegato tramite una connessione crittografata. Il processo NetHSM può essere eseguito con separazione basata sull’hardware (KVM) e crittografia specifica del dispositivo. L’immagine è distribuita come immagine OCI e può essere eseguita localmente con un esecutore compatibile come Docker e Podman.
Rispetto all’hardware NetHSM, le seguenti funzioni non sono implementate nell’API REST del contenitore software:
Network configuration
Reset di fabbrica
riavvio
Aggiornamento software
Il contenitore di produzione NetHSM è un prodotto riservato ai clienti paganti e può essere acquistato qui. L’immagine può essere ottenuta dal registro NetHSM di Nitrokey utilizzando le credenziali fornite dopo l’acquisto.
Avvertimento
La sicurezza del contenitore software NetHSM dipende fortemente dalla sicurezza della piattaforma. Una piattaforma compromessa potrebbe facilmente compromettere il contenitore software NetHSM che esegue. Inoltre, il TRNG non esiste, per cui l’entropia utilizzata e fornita da NetHSM dipende dall’entropia della piattaforma.
Politica di etichettatura¶
Le immagini nel repository sono contrassegnate con l’hash del commit Git e la versione del rilascio. L’ultima immagine è contrassegnata con latest
.
Modes of Operation¶
L’immagine può essere eseguita in due modalità operative, ossia come processo Unix o come unikernel.
La modalità di processo Unix esegue NetHSM come processo in cima al sistema operativo.
La modalità unikernel esegue NetHSM come guest in una macchina virtuale basata su KVM e fornisce una forte separazione dal sistema operativo host. Questa modalità è disponibile solo su Linux e richiede l’accesso ai nodi di dispositivo /dev/tun
e /dev/kvm
e alla funzionalità NET_ADMIN
.
Importante
Per sicurezza, scegliere di eseguire il contenitore in modalità unikernel.
La modalità può essere impostata con la variabile d’ambiente MODE
(si veda il capitolo successivo Configurazione).
Configurazione¶
The container can be configured with the following environment variables.
Variabile d’ambiente |
Descrizione |
---|---|
Ipsec (solo Linux) |
Abilita la registrazione estesa per NetHSM. |
|
Una passphrase di sblocco impostata sblocca automaticamente il contenitore durante l’avvio. |
|
La modalità accetta i valori unix o unikernel; l’impostazione predefinita è unix. |
|
L’URL/indirizzo IP dell’host che esegue il servizio etcd. |
|
La porta che esegue il servizio etcd, predefinita a 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. |
I segreti del runtime del contenitore, come i certificati e le chiavi private, devono essere impostati con la funzione segreti di Docker o Podman.
Variabile segreta |
Descrizione |
---|---|
|
Certificato CA che ha firmato il certificato client e il certificato server. |
|
Certificato del client per l’autenticazione del processo NetHSM con il key-value store. |
|
Chiave del client per l’autenticazione del processo NetHSM con il key-value store. |
|
Certificato del server per l’API dell’archivio di valori chiave. |
|
Chiave del server per l’API dell’archivio di valori chiave. |
device_key |
Chiave del dispositivo del processo NetHSM. Per saperne di più sulla chiave del dispositivo, consultare il capitolo Terminologia e convenzioni nella progettazione del sistema. |
Uso¶
Il contenitore di produzione supporta due modalità di funzionamento ` <container.html#Modes of Operation>` __. I capitoli seguenti descrivono come eseguire il contenitore con i file di composizione forniti o con il comando _run_.
Unix Mode¶
È possibile ottenere un file di composizione fornito qui. Assicuratevi di avere a disposizione i file necessari per i segreti indicati nel file di composizione.
Per eseguire il contenitore senza il file compose è necessario fornire un etcd esterno. Qui si trova l’immagine del contenitore consigliata per etcd. Assicurarsi di passare le opzioni di configurazione, come descritto nel capitolo Configurazione.
Il contenitore può essere eseguito come segue.
$ 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
Questo eseguirà NetHSM come processo Unix all’interno del contenitore ed esporrà l’API REST sulla porta 8443 tramite il protocollo HTTPS.
Importante
Il contenitore utilizza un certificato TLS autofirmato. Assicurarsi di usare le impostazioni di connessione corrette per stabilire una connessione. Per saperne di più, consultare il capitolo Introduzione a NetHSM.
Modalità Unikernel¶
È possibile ottenere un file di composizione fornito qui. Assicuratevi di avere a disposizione i file necessari per i segreti indicati nel file di composizione.
Per eseguire il contenitore senza il file compose è necessario fornire un etcd esterno. Qui si trova l’immagine del contenitore consigliata per etcd. Assicurarsi di passare le opzioni di configurazione, come descritto nel capitolo Configurazione.
Il contenitore può essere eseguito come segue.
$ 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
Questo eseguirà NetHSM come unikernel all’interno di una macchina virtuale KVM. Il contenitore esporrà l’API REST, tramite il protocollo HTTPS, sull’interfaccia tap200 con l’indirizzo IP 192.168.1.100 e la porta 8443.
Importante
Il contenitore utilizza un certificato TLS autofirmato. Assicurarsi di usare le impostazioni di connessione corrette per stabilire una connessione. Per saperne di più, consultare il capitolo Introduzione a NetHSM.