Schlüsselanbieter für vCenter

Vorbemerkung:
Es gibt mehrere Möglichkeiten, VM zu verschlüsseln. Einige sind besser als Andere, einige sind auf Standalone-Hosts sinnvoller, einige sind dort wenig sinnvoll.
Da mein Lab auf Raspberry Pi4 und NUCi7 G10 läuft, fehlen die notwendigen TPM, um zB W11 VM zu installieren, oder TPM basierte Verschlüsselung zu nutzen. Hier ist die Option eines Key Providers die einzige Option, das nachzurüsten.
Bitte beachten:
Sollten Cluster eingesetzt werden, und damit mehrere Hosts mit mehreren TPM kann es sein, dass die VM nach einer Migration nicht sauber funktionieren, und neu gebootet werden müssen, wenn der hosteigene TPM verwendet wird. In diesem Falle ist es notwendig, einen externen Key Provider zu benutzen.

Um einen Key Provider zu erstellen, benötigen wir:
1. einen vCenter-Server
(Beispiel wurde unter 8.0.0.10100 erstellt)
2. einen Linuxrechner, der idealerweise 247 läuft.
(im Beispiel: Ubuntu Server 22.04LTS als VM unter ESXi ARM)
3. Internetzugang, damit der Key Provider alle notwendigen Pakete holen kann
4. in unserem Falle nehmen wir PyKMIP, einen Key Provider in Python (so wenig ich Python mag, so sinnvoll ist dieses Projekt, weil es hier wirklich nicht auf Geschwindigkeit ankommt)

Der KP kann problemlos nebenbei benutzt werden, da er nicht viele Ressourcen nutzt, so können beliebige weitere Services auf dem System laufen. Er kann auch auch als Container (zB in vmware Tanzu) laufen, jedoch ist hier zu beachten, dass Container in dem Falle den unsympathischen Effekt haben, dass nach einem Update die Keys weg sind.
Alle Befehle in grün werden als normaler User und alle Befehle in rot werden als root-User ausgeführt. Dies kann sowohl per sudo -i als auch als Login als root-User passieren, das hängt von dem System ab, auf dem es durchgeführt wird.
In dem Beispiel wird per sudo -i gearbeitet.

$username wird durch den eigenen Usernamen, unter dem PyKMIP laufen soll, ersetzt.


sudo -i
apt-get update

apt-get upgrade


mkdir /usr/local/PyKMIP


mkdir /etc/pykmip


mkdir /var/log/pykmip


chown <$username>: -R /usr/local/PyKMIP


chown <$username>: -R /etc/pykmip


chown <$username>: -R /var/log/pykmip


apt-get install python3-dev libffi-dev libssl-dev libsqlite3-dev


openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/selfsigned.key -out /etc/ssl/certs/selfsigned.crt


Der nun erscheinende Request für das selbst signierte Zertifikat wird ausgefüllt.


chown <$username>: -R /etc/ssl/private

chown <$username>: /etc/ssl/certs/selfsigned.crt


exit

cd /usr/local
git clone https://github.com/OpenKMIP/PyKMIP

cd /usr/local/PyKMIP
sudo -i
python3 /usr/local/PyKMIP/setup.py install

exit

Anpassen der /etc/pykmip/server.conf
Hierbei ist zu beachten, dass die Zeile: tls_cipher_suites komplett auf einer Zeile ist und nicht umgebrochen wurde.

[server]
database_path=/etc/pykmip/pykmip.database
hostname=x.x.x.x
port=5696
certificate_path=/etc/ssl/certs/selfsigned.crt
key_path=/etc/ssl/private/selfsigned.key
ca_path=/etc/ssl/certs/selfsigned.crt
auth_suite=TLS1.2
policy_path=/usr/local/PyKMIP/examples/
enable_tls_client_auth=False
tls_cipher_suites= TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA256 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
logging_level=DEBUG

Als Letzes müssen wir noch sichergehen, dass der Key Provider mit jedem Boot neu gestartet wird, indem wir in den crontab (crontab -e) Folgendes eintragen:

@reboot ( sleep 30s; python3 /usr/local/PyKMIP/bin/run_server.py & )

Damit ist die Konfiguration des Schlüsselanbieters abgeschlossen. Das ist jedoch nur die halbe Magie.

Konfiguration im vCenter-Server:
Unter der Domäne (der höchsten vCenter-Ebene) wird auf Konfiguration | Schlüsselanbieter geklickt und Hinzufügen | Standardschlüsselanbieter ausgewählt, der Wizard ausgefüllt und Hinzufügen geklickt, sowie die beiden weiteren Seiten abgenickt.

Wie man sieht, ist die Vertrauensstellung noch nicht hergestellt.
Um dies zu erreichen, wählen wir den Schlüsselanbieter an und wählen KMS für vCenter vertrauenswürdig machen | KMS-Zertifikat und privater Schlüssel aus.

Als KMS-Zertifikat kopieren wir die Inhalte von /etc/ssl/certs/selfsigned.crt (mit den Minuszeichen!) und
als KMS-Privatschlüssel kopieren wir die Inhalte von /etc/ssl/private/selfsigned.key (mit den Minuszeichen!) und klicken auf Vertrauensstellung herstellen.

Damit ist der Schlüsselserver korrekt eingerichtet und kann von allen Objekten im vCenter verwendet werden.