struct

Beryl::Config::EncryptionConfig

Inherits Struct < Value < Object

Configuration de chiffrement d'un pool/dataset ZFS.

Deux modes supportés :

  • ssh_unlock (Option C) — la clé vit sur le poste opérateur (~/.config/beryl/<société>/<domaine>/<host>.key, chmod 0400). Au reboot, l'opérateur lance beryl unlock <host> ; la clé voyage via stdin SSH, jamais loggable. Pas de prérequis Tang. Code livré le 25 avril 2026.

  • tang (Option D) — la clé est dérivée à chaque boot via le protocole Tang (échange McCallum-Relyea). Le serveur doit pouvoir joindre au moins threshold Tangs au moment du boot. Le shard crystal-clevis-zfs v0.2 (livré 27 avril 2026) implémente le client Tang + le binding ZFS native. Multi-Tang threshold N-of-M supporté via SSS.

Voir zpool-encryption-architecture.adoc § « Le modèle SSH unlock » et boot-and-mount-plan.adoc § « Mode tang » pour les flows complets.

Constructors

new(mode : Mode, tang_urls : Array(String) = [] of String, threshold : Int32 = 1, compression : String = "lz4")
Source

Class methods

from_yaml(any : YAML::Any | Nil, pool_name : String) : EncryptionConfig | Nil

Construit une EncryptionConfig à partir de la valeur YAML encryption: d'un pool/dataset. Retourne nil si pas de chiffrement déclaré (encryption: false ou absence).

Quatre formes acceptées :

encryption: false → nil (pas chiffré) encryption: true → mode ssh_unlock (Option C, défaut) encryption: mode: ssh_unlock → idem, forme étendue compression: lz4

encryption: mode: tang tang: urls: [http://tang.local:8888] threshold: 1 compression: zstd-3

pool_name n'est utilisé que pour les messages d'erreur. Cette factory NE LÈVE PAS sur les incohérences d'usage (URL manquante, threshold > N…) — c'est la responsabilité de validate! appelé par Pool#validate!. Elle ne lève QUE sur les modes inconnus, où la lecture YAML elle-même n'a pas de sens.

Source

Instance methods

compression

Compression ZFS du dataset chiffré. Appliquée AVANT le chiffrement par ZFS native, donc gain réel sur les données compressibles (logs, BDD, JSON, code). « lz4 » par défaut (compromis perf/ratio), « zstd-3 » pour ratio max, « off » pour les binaires/médias déjà compressés.

Source
mode
Source
ssh_unlock?
Source
tang?
Source
tang_urls

URLs des serveurs Tang. Vide en mode ssh_unlock. En mode tang : 1 URL = single-Tang (SPOF), N URLs + threshold = multi-Tang SSS.

Source
threshold

Threshold K dans Shamir Secret Sharing : combien de Tangs sur tang_urls.size doivent répondre pour reconstituer la clé. 1 par défaut (single-Tang). Doit être ≤ tang_urls.size.

Source
validate!

Validation cohérence interne. Levée à la résolution YAML pour rejeter une config absurde (mode tang sans URL, threshold > N…).

Source

Nested types