Skip to content

Commit 4bc0099

Browse files
committed
kms: gate metrics endpoint by config
1 parent c73de14 commit 4bc0099

3 files changed

Lines changed: 26 additions & 5 deletions

File tree

kms/kms.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ cache_dir = "/usr/share/dstack/images"
3838
download_url = "http://localhost:8000/{OS_IMAGE_HASH}.tar.gz"
3939
download_timeout = "2m"
4040

41+
[core.metrics]
42+
# Expose unauthenticated Prometheus metrics on /metrics.
43+
# Keep disabled unless the KMS RPC listener is protected by network policy
44+
# or another access-control layer.
45+
enabled = false
46+
4147
[core.auth_api]
4248
type = "webhook"
4349

kms/src/config.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,15 @@ pub(crate) struct KmsConfig {
4646
/// agent socket.
4747
#[serde(default = "default_true")]
4848
pub enforce_self_authorization: bool,
49+
#[serde(default)]
50+
pub metrics: MetricsConfig,
51+
}
52+
53+
#[derive(Debug, Clone, Deserialize, Default)]
54+
pub(crate) struct MetricsConfig {
55+
/// Whether to expose the unauthenticated Prometheus `/metrics` endpoint.
56+
#[serde(default)]
57+
pub enabled: bool,
4958
}
5059

5160
fn default_true() -> bool {

kms/src/main.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ async fn main() -> Result<()> {
137137
}
138138

139139
let pccs_url = config.pccs_url.clone();
140+
let metrics_enabled = config.metrics.enabled;
140141
let state = main_service::KmsState::new(config).context("Failed to initialize KMS state")?;
141142
let figment = figment
142143
.clone()
@@ -147,17 +148,22 @@ async fn main() -> Result<()> {
147148
res.set_raw_header("X-App-Version", app_version());
148149
})
149150
}))
150-
.attach(AdHoc::on_response(
151-
"Record KMS attestation metrics",
152-
|req, res| Box::pin(async move { record_attestation_metrics(req, res) }),
153-
))
154151
.mount(
155152
"/prpc",
156153
ra_rpc::prpc_routes!(KmsState, RpcHandler, trim: "KMS."),
157154
)
158-
.mount("/", rocket::routes![metrics])
159155
.manage(state);
160156

157+
if metrics_enabled {
158+
info!("Prometheus metrics endpoint enabled at /metrics");
159+
rocket = rocket
160+
.attach(AdHoc::on_response(
161+
"Record KMS attestation metrics",
162+
|req, res| Box::pin(async move { record_attestation_metrics(req, res) }),
163+
))
164+
.mount("/", rocket::routes![metrics]);
165+
}
166+
161167
let verifier = QuoteVerifier::new(pccs_url);
162168
rocket = rocket.manage(verifier);
163169

0 commit comments

Comments
 (0)