Partitionnement
La disposition des disques est déclarée avec disko dans le fichier
nixos/hardware-specific/filesystems.nix. disko permet
de formatter les disques vides à l'installation du système en une seule
commande.
De la configuration disko est dérivé les partitions à monter au démarrage
(options fileSystems.<mountpoint>) grâce au module NixOS disko.
Précautions à prendre pour modifier la disposition des disques
disko ne permet pas de modifier la disposition des disques. Il écrase
nécessairement les données avant d'opérer et ne peut donc pas être utilisé
dans ce cas.
Il faudra plutôt faire les modifications manuellement (depuis une image live) et
penser à mettre à jour le fichier disko.nix pour refléter les changements.
Cette modification est nécessaire à des fins de documentation, pour
d'éventuelles réinstallations futures et pour le démarrage du système.
Monter les disques depuis l'image live NixOS
Il est possible de monter le système de fichier en utilisant la commande suivante dans le dépôt de l'infrastructure :
sudo nix run github:nix-community/disko -- --mode mount --root-mountpoint <point de montage> --flake .#protomolecule
Chiffrement des disques
Afin de d'empêcher qu'un tiers puisse lire les données en cas d'attaque physique du serveur, elles sont stockées chiffrées.
Ainsi, chaque disque contient une partition LUKS chiffrée pouvant être déchiffrée par :
- une clef stockée dans le TPM et scellée de telle sorte qu'elle ne puisse être lue que si les mesures de la plateforme TPM soient identiques aux mesures lors du scellement de la clef ;
- une passphrase de secours sauvegardée en dehors du système.
Lors du démarrage, le serveur va tenter de déchiffrer le disque en lisant la clef du TPM. Cela lui permet donc de démarrer sans intervention humaine pour lui fournir une clef.
Démarrage en utilisant la passphrase LUKS de secours
Si la clé stockée dans le TPM n'est plus accessible, il est possible de fournir la passphrase de secours afin de démarrer le serveur. Il faut se rendre sur l'iDRAC (l'interface de gestion du serveur) pour ouvrir un accès KVM sur le serveur et rentrer la passphrase.
La clef de secours de trouve (chiffrée) dans le fichier luks-backup-passphrase.age.
Mesures TPM
Une description détaillée de notre utilisation du TPM de « Protomolecule » se trouve dans la section TPM.
Puisque le partitionnement des disques est effectué dans un environement dont les mesures de platformes peuvent être différentes de celles lequel se trouve la machine en temps normal, la clé scellée doit être ajoutée au TPM après l'installation.