Beryl::ZfsKeys
Clés de chiffrement ZFS des serveurs : fichier du poste ET coffre de la société.
La clé d'un serveur (64 caractères hex, cf. Beryl::Encryption) vit
historiquement dans ~/.config/beryl/<société>/<domaine>/<host>.key
(0400, ignoré par git) : perdre le poste, c'est perdre les données dès
que Tang ne répond plus. Elle est donc AUSSI rangée dans le coffre
chiffré age de la société (<société>/.env.toml.age, versionné),
section [tang], une variable par serveur :
[tang]
WEB1 = "<64 hex>"
DB_MAIN = "<64 hex>"
Nom de la variable : nom court du serveur en majuscules, tout caractère
hors [A-Z0-9] → _ (même convention que les secrets propres à un
serveur, Beryl::Apply.host_secret_name).
Règles :
- lecture : coffre d'abord, fichier en repli ; les deux présents et
DIFFÉRENTS →
Conflict, jamais de choix silencieux (une mauvaise clé ne déverrouille rien, mais une clé écrasée par la mauvaise détruit le seul exemplaire de la bonne) ; - écriture : ajout seulement ; une valeur déjà présente et différente
→
Conflict; identique → rien à faire ; - la section
[tang]n'est JAMAIS chargée dansENV(EnvFile::ENV_EXCLUDED_SECTIONS).
Constants
Section du coffre qui range les clés.
Class methods
Empreinte courte d'une clé, pour vérifier une copie (papier, coffre) sans montrer la clé : 16 premiers caractères du SHA-256 de la clé hex, par groupes de 4. Ne permet pas de retrouver la clé. Pur.
abcd1234… → abcd 1234 … (lisible, recopiable sans erreur). Pur.
Insère var = "<hex>" dans la section [tang] du TOML en clair
(section créée à la fin si absente), sans toucher au reste ni aux
commentaires. Même valeur déjà là → texte inchangé ; valeur
différente → Conflict. Pur.
Réconcilie les deux exemplaires possibles. nil si aucun ; Conflict
s'ils diffèrent. Pur.
Clé d'un serveur : coffre de la société (déjà déchiffré par le loader
dans env_file) puis fichier file_path. Lève InvalidKey (format,
permissions du fichier) ou Conflict.