CephCII · Management SecurityManagement Security
Securing the monitoring stack
What you'll learn
- Identify what each monitoring component exposes
- Restrict the metrics endpoints
- Secure Grafana and Alertmanager
- Balance access against operational usefulness
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
Why this matters in production
Metrics endpoints are unauthenticated by default and disclose the shape and state of the cluster in detail.
What each component exposes
| Component | Port | Exposes |
|---|---|---|
mgr prometheus module | 9283 | every cluster metric, pool names, OSD layout |
| node-exporter | 9100 | host metrics, filesystem paths, network config |
| Prometheus | 9095 | the full metric database, query API |
| Alertmanager | 9093 | firing alerts, silences, and the ability to create them |
| Grafana | 3000 | dashboards, and the datasource it queries |
ceph mgr services
curl -s "http://$(hostname -s):9283/metrics" | head -20
Metric names disclose pool names, host names, OSD counts, and capacity.
That is not a credential, but it is reconnaissance.
Restricting the metrics endpoints
# what the module is bound to
ceph config get mgr mgr/prometheus/server_addr
ceph config set mgr mgr/prometheus/server_addr 10.10.5.11
ceph config get mgr mgr/prometheus/server_port
The same reasoning as the dashboard: binding to a management interface
removes the endpoint from networks that should not see it.
# node-exporter, deployed by cephadm
ceph orch ls node-exporter --export
service_type: node-exporter
placement:
host_pattern: '*'
networks:
- 10.10.5.0/24
ceph orch apply -i node-exporter.yaml
Alertmanager and Grafana
Alertmanager without authentication permits anyone reachable to create
silences — which suppresses alerts cluster-wide.
| Risk | Control |
|---|---|
| Anonymous silence creation | reverse proxy with authentication |
| Alert content disclosure | network restriction |
| Grafana anonymous access | disable it; require login |
| Grafana datasource credentials | stored in Grafana; protect the instance |
| Grafana admin account | change the default password at deployment |
ceph orch ls grafana --export
ceph dashboard get-grafana-api-url
# confirm anonymous access is not enabled
ceph orch ps --daemon-type grafana --format json | python3 -c '
import sys,json
for d in json.load(sys.stdin): print(d["daemon_name"], d.get("hostname"), d.get("ports"))'
Silence creation is the one that matters operationally: an attacker who
can silence alerts can act without the alerting path noticing.
Balancing access
Monitoring exists to be looked at. Restricting it so far that nobody
consults it during an incident defeats it.
| Audience | Access |
|---|---|
| On-call operators | full, from the management network or VPN |
| Application teams | Grafana dashboards scoped to their concerns |
| Anyone else | none |
| Automated scrapers | the metrics endpoint, source-restricted |
# CEPH_HOST is the manager host serving the metrics endpoint; substitute your own:
CEPH_HOST=192.0.2.11
# verify from an unintended position that it is not reachable
curl -s -m 3 "http://$CEPH_HOST:9283/metrics" >/dev/null \
&& echo "REACHABLE — restrict this" || echo "not reachable"
Quiz
Knowledge check · 4 questions
Q1. Which monitoring component's exposure has the most direct operational consequence?
Q2. An exposed metrics endpoint hands an attacker a detailed map of the cluster while granting them no action against it.
Q3. Restrict monitoring exposure without breaking operations.
The monitoring stack is reachable from the client network. On-call operators use Grafana constantly and application teams consult a shared dashboard.
Q4. How does a cephadm service spec restrict which network a monitoring daemon binds to?
Passing score: 75%. Answers are checked in this browser.
Production discipline
Put authentication in front of Alertmanager or restrict it to the
management network — silence creation needs no authentication by default,
and silencing alerts is the exposure with real operational consequence.
Restrict metric endpoints via the service spec’s networks: field.
Cross-course references
- Kubernetes: unauthenticated metrics endpoints are the same reconnaissance exposure
- Linux: the ability to suppress alerting outranks the ability to read metrics