Raccorder PVE à PBS, chiffrement côté client, gestion des clés¶
Objectif : déclarer le datastore pbs01 comme stockage pbs-local dans le cluster PVE avec un jeton API dédié, activer si besoin le chiffrement côté client, et séquestrer la clé de façon à pouvoir restaurer même si tout le cluster a disparu. Une sauvegarde chiffrée dont la clé est perdue est définitivement irrécupérable, y compris par le MSP et par Proxmox.
Chiffrer ou non ?¶
| Situation | Recommandation |
|---|---|
| PBS local sur réseau de confiance, copie MSP sur un datastore dédié au client | Chiffrement facultatif ; restauration plus simple sans clé |
| Exigence contractuelle ou réglementaire de confidentialité vis-à-vis de l'hébergeur de la copie | Chiffrement côté client + master key RSA + paperkey séquestrée |
| Plusieurs clusters vers le même datastore | Une clé différente casse la déduplication entre eux : un namespace ou un datastore par clé |
Le chiffrement est en AES-256-GCM, réalisé sur le nœud PVE avant l'envoi : le PBS ne voit jamais les données en clair. PVE n'accepte que des clés sans mot de passe (KDF none), stockées dans /etc/pve/priv/storage/<ID>.enc (lisible par root uniquement).
Avant de toucher la prod
- PBS installé et datastore
pbs01créé (procédure). - Empreinte du certificat PBS relevée (Dashboard → Show Fingerprint).
- Décision chiffrement oui / non validée et consignée dans le dossier d'exploitation.
- Si chiffrement : coffre-fort de mots de passe et lieu de séquestre papier identifiés hors du cluster.
- Port TCP 8007 ouvert des nœuds
pve01àpve03vers le PBS.
Étapes¶
1. Créer un compte de service et un jeton côté PBS¶
- Configuration → Access Control → User Management → Add : utilisateur
pve-backup, realmpbs, mot de passe long. - Onglet API Token → Add : utilisateur
pve-backup@pbs, Token Namepve-cluster. Copier le secret affiché : il ne sera plus jamais visible. - Datastore → pbs01 → Permissions → Add → API Token Permission : chemin
/datastore/pbs01, jetonpve-backup@pbs!pve-cluster, rôleDatastoreBackup. Ajouter la même permission pour l'utilisateurpve-backup@pbs(les droits d'un jeton sont l'intersection avec ceux de son utilisateur).
proxmox-backup-manager user create pve-backup@pbs --password 'xxxxxxxx'
proxmox-backup-manager user generate-token pve-backup@pbs pve-cluster # noter "value"
proxmox-backup-manager acl update /datastore/pbs01 DatastoreBackup --auth-id 'pve-backup@pbs'
proxmox-backup-manager acl update /datastore/pbs01 DatastoreBackup --auth-id 'pve-backup@pbs!pve-cluster'
DatastoreBackup permet de sauvegarder et de restaurer ses propres sauvegardes, pas de les supprimer. La rétention est confiée aux prune jobs du PBS (rétention). Si vous tenez à gérer la rétention depuis PVE, il faut le rôle DatastorePowerUser.
2. Déclarer le stockage dans PVE¶
- Datacenter → Storage → Add → Proxmox Backup Server.
- Onglet General : ID
pbs-local, Serverpbs01.client.lan, Usernamepve-backup@pbs!pve-cluster, Password = secret du jeton, Datastorepbs01, Namespace vide (ou celui du cluster), Fingerprint. - Onglet Backup Retention : cocher Keep all backups (la rétention est faite par le PBS).
- Onglet Encryption (si retenu) : Auto-generate a client encryption key. PVE affiche la clé : la télécharger et l'imprimer immédiatement.
3. Séquestrer la clé (si chiffrement)¶
# version papier (QR code + texte) de la clé du stockage
proxmox-backup-client key paperkey /etc/pve/priv/storage/pbs-local.enc --output-format text > pbs-local-paperkey.txt
# master key RSA : à générer sur un poste hors cluster, la clé privée ne vient jamais sur PVE
proxmox-backup-client key create-master-key # produit master-public.pem et master-private.pem
pvesm set pbs-local --master-pubkey "$(base64 -w0 master-public.pem)"
- Imprimer la paperkey en deux exemplaires : coffre client et séquestre convenu avec le MSP.
- Conserver
master-private.pemet son mot de passe hors ligne. Avec la master key, chaque sauvegarde embarque une copie de la clé AES chiffrée en RSA : la clé se récupère avecproxmox-backup-client key import-with-master-key. - Supprimer
pbs-local-paperkey.txtdu nœud après impression.
Vérifications
pvesm status --storage pbs-local # pbs-local pbs active
vzdump 101 --storage pbs-local --mode snapshot
Dans PBS, Datastore → pbs01 → Content : le groupe vm/101 apparaît ; colonne Encrypted à Yes si le chiffrement est actif. Testez immédiatement un File Restore (RB-13).
Rollback
Retirer le stockage (Datacenter → Storage → Remove) n'efface aucune sauvegarde. Changer de clé : les anciennes sauvegardes exigent toujours l'ancienne clé, à conserver jusqu'à expiration de la rétention (locale et MSP). Désactiver le chiffrement ne déchiffre pas l'existant.
Pièges vus en support
- Clé générée par autogen jamais exportée : elle n'existe que dans
/etc/pve/priv/storage/, donc perdue avec le cluster. - Clé régénérée par erreur (autogen relancé) : les sauvegardes suivantes utilisent une nouvelle clé, la première sauvegarde est complète et la déduplication repart de zéro.
- Utilisateur
root@pamdu PBS saisi dans PVE : mot de passe root du PBS en clair dans la configuration du cluster. Utiliser un jeton dédié. - Empreinte non mise à jour après renouvellement du certificat PBS : tous les jobs échouent (RB-14).
- Jeton créé sans ACL propre : il n'a aucun droit par défaut, l'ajout du stockage échoue en permission check failed.
Quand ouvrir un ticket iTop
Mise en place du chiffrement et du séquestre de clé avec le MSP : demande de service P4. Sauvegardes chiffrées et clé introuvable : P1, sans attendre. Joindre pvesm status, la configuration du stockage (/etc/pve/storage.cfg, sans secret) et l'empreinte de la clé (Encryption → Fingerprint).