Apache CloudStack Volume encryption Vladimir Petrov About me Living in Sofia, father of two boys Software engineer in test @ShapeBlue 20+ years professional experience in the IT field Almost 3 years working with CloudStack on a daily basis Agenda Introduction Requirements Details Supported and unsupported operations Hosts preparation Service and disk offerings Q&A Introduction Coming in the next ACS LTS release 4.18 Created by Marcus Sorensen from Apple and Suresh Anaparti Transparent to the guest OS Both root and data volumes can be encrypted Two parts implementation: API/UI changes Storage driver First implementation phase Requirements Currently only KVM hypervisor is supported QEMU-EV v2.6+ is required Supported storage types: Local storage NFS PowerFlex/ScaleIO Shared mountpoint Details Simplifies the process of keys management The passphrase is stored in the database, encrypted with the CloudStack’s standard configured DB encryption. qcow2 based storage – qemu-img is used to setup the file with LUKS encryption Block based storages (currently just ScaleIO) – cryptsetup utility is used to format the block device as LUKS for data disks but qemu-img is used for template copy The used cipher is XTS-AES 256 which is a leading industry standard VM operations Supported VM operations: Start/Stop Reboot Reinstall Expunge/recover Scale up Migrate running instance to another host VM operations Unsupported VM operations: VM Snapshot Volume snapshot Recurring snapshot Volume operations Supported volume operations: Attach/detach encrypted volume Volume snapshot (stopped VM) Revert to snapshot Resize Delete Volume operations Unsupported volume operations: Download volume Migrate volume Recurring snapshots Create template from encrypted volume snapshot Create volume from encrypted volume snapshot Hosts preparation Install qemu-ev: #yum install -y qemu-kvm-common-ev-2.10.0 qemu-kvm- ev-2.10.0 qemu-img-ev-2.10.0 qemu-kvm-tools-ev-2.10.0 Install cryptsetup: #yum install cryptsetup Optional: rngd (EL) or rng-tools (Ubuntu) package for better entropy Restart the agent Host encryption support Verify the host is properly configured Service offerings Adding encryption to service offerings Disk offerings Adding encryption to disk offerings Future? Add support for other hypervisors Support more VM/volume operations More storage types support – CEPH, Linbit, StorPool? Show volume encryption status Support LUKS2 encryption Q&A Questions? Thank you! Email: vladimir.petrov@shapeblue.com LinkedIn: https://www.linkedin.com/in/vladimir/