Obraz produkcji#
Obraz produkcyjny jest przeznaczony dla środowisk produkcyjnych o wysokich wymaganiach bezpieczeństwa. Wymaga zewnętrznego magazynu kluczy-wartości etcd, który jest połączony za pomocą szyfrowanego połączenia. Proces NetHSM może być wykonywany z separacją sprzętową (KVM) i szyfrowaniem specyficznym dla urządzenia. Obraz jest dystrybuowany jako obraz OCI i może być uruchamiany lokalnie za pomocą kompatybilnego programu wykonawczego, takiego jak Docker i Podman.
W porównaniu do sprzętu NetHSM następujące funkcje nie są zaimplementowane w interfejsie REST API kontenera oprogramowania:
Konfiguracja sieci
Reset fabryczny
Reboot
Aktualizacja oprogramowania
Kontener produkcyjny NetHSM jest produktem wyłącznie dla płacących klientów i można go zakupić tutaj. Obraz można uzyskać z rejestru Nitrokey NetHSM przy użyciu poświadczeń dostarczonych po zakupie.
Ostrzeżenie
Bezpieczeństwo kontenera oprogramowania NetHSM w dużym stopniu zależy od bezpieczeństwa platformy. Naruszona platforma może łatwo narazić na szwank wykonywany przez nią kontener oprogramowania NetHSM. Ponadto TRNG nie istnieje, więc entropia używana i dostarczana przez NetHSM zależy od entropii platformy.
Polityka oznaczania#
Obrazy w repozytorium są oznaczone hashem zatwierdzenia Git i wersją wydania. Najnowszy obraz jest oznaczony latest
.
Tryby działania#
Obraz może być uruchamiany w dwóch trybach pracy, tj. procesu uniksowego lub unikernela.
Tryb procesu Unix uruchamia NetHSM jako proces na wierzchu systemu operacyjnego.
Tryb unikernel uruchamia NetHSM jako gościa w maszynie wirtualnej opartej na KVM i zapewnia silną separację od systemu operacyjnego hosta. Ten tryb jest dostępny tylko w systemie Linux i wymaga dostępu do węzłów urządzeń /dev/tun
i /dev/kvm
oraz możliwości NET_ADMIN
.
Ważne
Dla bezpieczeństwa wybierz uruchamianie kontenera w trybie unikernel.
Tryb można ustawić za pomocą zmiennej środowiskowej MODE
(patrz następny rozdział Konfiguracja).
Konfiguracja#
Kontener można skonfigurować za pomocą następujących zmiennych środowiskowych.
Zmienna środowiskowa |
Opis |
---|---|
Zmienna środowiskowa |
Włącza rozszerzone rejestrowanie dla NetHSM. |
|
Ustawione hasło odblokowujące automatycznie odblokowuje kontener podczas uruchamiania. |
|
Tryb przyjmuje wartości unix lub unikernel, domyślnie unix. |
Zmienna środowiskowa |
Adres URL/IP hosta z uruchomioną usługą etcd. |
Zmienna środowiskowa |
Port uruchamiający usługę etcd, domyślnie 2379. |
|
Ścieżka do certyfikatu urzędu certyfikacji, który podpisał certyfikat klienta. |
|
Ścieżka do certyfikatu uwierzytelniania klienta. |
|
Ścieżka do tajnego klucza uwierzytelniania klienta. |
Sekrety środowiska uruchomieniowego kontenera, takie jak certyfikaty i klucze prywatne, muszą być ustawione za pomocą funkcji sekretów Dockera lub Podmana.
Tajna zmienna |
Opis |
---|---|
|
Certyfikat CA, który podpisał certyfikat klienta i certyfikat serwera. |
|
Certyfikat klienta służący do uwierzytelniania procesu NetHSM za pomocą magazynu klucz-wartość. |
|
Klucz klienta służący do uwierzytelniania procesu NetHSM za pomocą magazynu klucz-wartość. |
|
Certyfikat serwera dla interfejsu API magazynu klucz-wartość. |
|
Klucz serwera dla interfejsu API magazynu klucz-wartość. |
|
Klucz urządzenia procesu NetHSM. Więcej informacji na temat klucza urządzenia można znaleźć w rozdziale Terminologia i konwencje w projekcie systemu. |
Zastosowanie#
Kontener produkcyjny obsługuje dwa tryby działania ` <container.html#Modes of Operation>` __. Poniższe rozdziały opisują sposób uruchamiania kontenera za pomocą dostarczonych plików compose lub polecenia _run_.
Tryb Unix#
Udostępniony plik kompilacji można uzyskać tutaj. Upewnij się, że masz dostępne niezbędne pliki dla sekretów wymienionych w pliku compose.
Aby uruchomić kontener bez pliku compose, należy samodzielnie dostarczyć zewnętrzny obraz etcd. Tutaj można znaleźć zalecany obraz kontenera dla etcd. Upewnij się, że przekazałeś opcje konfiguracyjne, jak opisano w rozdziale Konfiguracja.
Kontener może być wykonany w następujący sposób.
$ 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
Spowoduje to uruchomienie NetHSM jako procesu uniksowego wewnątrz kontenera i udostępnienie interfejsu API REST na porcie 8443 za pośrednictwem protokołu HTTPS.
Ważne
Kontener używa samopodpisanego certyfikatu TLS. Aby nawiązać połączenie, należy użyć odpowiednich ustawień połączenia. Więcej informacji można znaleźć w rozdziale NetHSM introduction.
Tryb Unikernel#
Udostępniony plik kompilacji można uzyskać pod adresem tutaj. Upewnij się, że masz dostępne niezbędne pliki dla sekretów wymienionych w pliku compose.
Aby uruchomić kontener bez pliku compose, należy samodzielnie dostarczyć zewnętrzny obraz etcd. Tutaj można znaleźć zalecany obraz kontenera dla etcd. Upewnij się, że przekazałeś opcje konfiguracyjne, jak opisano w rozdziale Konfiguracja.
Kontener może być wykonany w następujący sposób.
$ 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
Spowoduje to uruchomienie NetHSM jako unikernel wewnątrz maszyny wirtualnej KVM. Kontener udostępni REST API, za pośrednictwem protokołu HTTPS, na interfejsie tap200 z adresem IP 192.168.1.100 i portem 8443.
Ważne
Kontener używa samopodpisanego certyfikatu TLS. Aby nawiązać połączenie, należy użyć odpowiednich ustawień połączenia. Więcej informacji można znaleźć w rozdziale NetHSM introduction.