Skip to main content
RunBook Academy

CephCI · Security HardeningSecurity Hardening

A threat model for a Ceph cluster

Advanced⏱ ~18 minceph

What you'll learn

  • Enumerate the attack surface of a Ceph cluster
  • Map each control to the position it defends
  • Identify the gaps a default deployment leaves
  • Prioritise hardening work by what it actually prevents

Prerequisites

None — start here.

Verified against Ceph Tentacle 20.2.x · Ceph Squid 19.2.x (supported previous) · cephadm matches the verified Ceph release · podman 4.x · csi-rbd and csi-cephfs current · RBD / CephFS / RGW current (matches Ceph release) · Linux kernel 5.15+ (5.10 minimum) · Ubuntu 24.04 LTS (Ceph host baseline) · Debian 12 (Bookworm) (Ceph host baseline) · Rocky Linux / RHEL / AlmaLinux 9.x (Ceph host baseline) · Proxmox VE 9.x (cross-course integration) · Kubernetes 1.31+ (cross-course integration) · 2026-08-18

Not yet marked complete on this device.

Why this matters in production

Hardening without a threat model produces effort spent on controls that stop nothing while the actual exposure remains.

Attacker positions

PositionReaches
On the public networkmonitor and OSD ports, RGW, dashboard
On the cluster networkOSD replication traffic
With a client keyringwhatever its capabilities permit
With client.admineverything
On a Ceph host, unprivilegedlocal keyrings if readable
On a Ceph host, rootevery key on that host, every device
With physical device accessBlueStore data at rest
The order matters: most real compromises start at one of the first
three, not the last.

Which control defends which position

ControlDefends against
cephx authenticationan unauthenticated party on the public network
Capability scopinga compromised client exceeding its purpose
msgr2 secure modepassive interception and message tampering on the wire
Network segmentationreaching cluster ports from outside
Host hardeningpivoting from a host to the cluster
Keyring file permissionsunprivileged local users reading keys
Encryption at restphysical device theft or improper disposal
Each control has exactly one job. Encryption at rest does nothing about a
leaked keyring; capability scoping does nothing about a stolen disk.

What a default deployment leaves open

ceph config get global auth_cluster_required
ceph config get global auth_service_required
ceph config get global auth_client_required
cephx is on by default. That is the significant default that is correct.
DefaultStatus
cephx enabledon — good
msgr2 availableon — but crc mode, not secure
Cluster network separatedonly if configured
Firewall restricting Ceph portsnot by Ceph’s doing
Capabilities minimalonly if written that way
Keys rotatednever, unless done
Encryption at restonly if OSDs were created encrypted
ceph config get global ms_cluster_mode
ceph config get global ms_service_mode
ceph config get global ms_client_mode
crc mode authenticates the connection and detects corruption. It does
not encrypt. Traffic is readable to anyone on the path.

Prioritising

Highest value first, for a typical cluster:
  1. network segmentation and firewalling — closes the largest surface
  2. capability scoping — bounds the damage of any client compromise
  3. keyring handling and permissions — the most common real leak
  4. msgr2 secure mode — closes on-the-wire exposure
  5. host hardening — reduces pivot paths
  6. encryption at rest — addresses physical and disposal risk
Encryption at rest is often done first because it is the most visible to
auditors, and it is the control that addresses the least likely threat
for a cluster in a controlled facility.

Quiz

Knowledge check · 4 questions

  1. Q1. What does msgr2 in its default `crc` mode provide?

  2. Q2. A cluster whose OSDs are all encrypted at rest is no better protected against a leaked client keyring than one with no encryption at all.

  3. Q3. Prioritise hardening work for a new cluster.

    A cluster is being hardened before release. An auditor has asked about encryption at rest. The cluster is in a controlled facility with no network segmentation and permissive client capabilities.

  4. Q4. Why does a keyring leak outrank most other exposures?

Passing score: 75%. Answers are checked in this browser.

Production discipline

Map each control to the attacker position it defends before spending effort: encryption at rest does nothing about a leaked keyring, and capability scoping does nothing about a stolen disk. Note that msgr2’s default crc mode does not encrypt — secure must be set explicitly.

Cross-course references

  • Kubernetes: ServiceAccount tokens are bearer credentials with the same properties
  • Linux: controls defend specific positions; a threat model is what assigns them