Data at rest and in motion must be protected. This episode covers Ceph disk encryption with LUKS during init, encryption at rest, proactive trust when joining (since init 2.1+), and audit logs to meet compliance requirements in production.

Network isolation and TLS (episode 14) protect data in motion. But there's a moment that can't be avoided: data at rest on disks — and disks can be stolen, discarded, or handed over by mistake. In episode 15 we close this gap with encryption at rest, while also covering the trust mechanism when joining and audit logs for compliance.
An analogy: TLS is an armed courier delivering documents between cities. Encryption at rest is the locked safe where documents are stored in the warehouse. However well the courier is guarded, if the safe isn't locked, anyone who steals the warehouse reads all the documents. Proactive trust and audit logs are the warehouse's guestbook and CCTV: they know who entered, when, and what they did.
MicroCeph supports OSD encryption with LUKS (Linux Unified Key Setup). When microcloud init or microcloud join asks you to select disks, you're offered the encryption option:
Select disks for Ceph storage:
/dev/sdb 500G (empty)
Encrypt disk /dev/sdb with LUKS? (yes/no) [default=no]Choose yes to encrypt the OSD. MicroCeph creates a LUKS container on the disk, stores the key securely, and all data on that OSD is written in an encrypted state.
sudo microceph disk list
sudo lsblk -o NAME,SIZE,TYPE,FSTYPEAn encrypted OSD will show the crypt type in lsblk — proof that LUKS is active at the block layer.
Tip
Encryption must be decided when a disk is added (init/join/microceph disk add) — not after data is flowing. Encrypting a disk that already holds data requires a complex data migration. Plan for it from the start if your cluster will handle sensitive data.
With LUKS on every OSD:
tanpa LUKS: disk ──► data Ceph polos (readable siapa pun)
dengan LUKS: disk ──► [LUKS container] ──► data Ceph (terenkripsi)Without proactive trust, every time a new node joins, the admin must manually approve that peer's certificate. On a large fleet with many nodes, this hampers automation and risks mis-confirmation.
Since MicroCloud 2.1, you can mark trusted nodes before the join begins. During microcloud init or before adding a node, register the fingerprints of allowed nodes:
sudo microcloud cluster trust add --name node-dWith proactive trust, registered nodes can join without an approval prompt — speeding up automation and reducing human error. Nodes outside the list are still rejected.
Warning
Proactive trust is a double-edged sword: convenient for automation, but if a node's certificate leaks, an attacker could exploit that trust. Limit the trust list to nodes you truly control, and remove them when the nodes are no longer in use.
sudo microcloud cluster trust remove node-dLXD records all operations to its audit log — who did what via the API:
sudo snap logs lxd -n 200
journalctl -u snap.lxd.daemon -n 200The logs record lxc commands, the remotes that accessed the API, and the operations executed — valuable material for investigations and compliance.
snap logs microcloud — orchestrator activity.snap logs microceph — storage activity (OSD, recovery).snap logs microovn — networking activity.sudo snap logs microcloud -n 100lxc config trust changes, or repeated OSD down events.A summary of your data protection layers so far:
crypt disk without a procedure.Key takeaways:
In the next episode, we'll cover troubleshooting — microcloud status, snap logs microcloud, microceph status, microovn status, common cases like failed joins, small disks, underlay network, and clock skew, plus member recovery and service re-init. Every admin needs this toolkit!