Обновить комментарии: Grafana теперь за nginx+Basic Auth, не Caddy
Auth-гейт перед Grafana на VPS с данными переехал с Caddy forward_auth (зависел от задеплоенного бэкенда, которого ещё не было) на system nginx с HTTP Basic Auth прямо на том же VPS — не зависит ни от чего. observability_router/staff/controller.rs оставлен неиспользуемым на случай, если позже понадобится реальный SSO поверх basic-auth.
This commit is contained in:
+2
-2
@@ -209,8 +209,8 @@ pub fn create_router(state: ApiState, frontend_dir: &str) -> Router {
|
|||||||
/// Публичная (без auth_guard) рантайм-конфигурация для статического SPA —
|
/// Публичная (без auth_guard) рантайм-конфигурация для статического SPA —
|
||||||
/// см. `ApiState::bot_username` про то, почему это не build-time env фронта.
|
/// см. `ApiState::bot_username` про то, почему это не build-time env фронта.
|
||||||
async fn get_public_config(State(state): State<ApiState>) -> impl IntoResponse {
|
async fn get_public_config(State(state): State<ApiState>) -> impl IntoResponse {
|
||||||
// Публичный URL Grafana (за auth-гейтом Caddy, см.
|
// Публичный URL Grafana (за nginx + HTTP Basic Auth на VPS с данными,
|
||||||
// netrunner-data/observability/Caddyfile) — тот же паттерн, что и
|
// см. netrunner-data/nginx/) — тот же паттерн, что и
|
||||||
// bot_username выше: читается на сервере заново на каждый запрос, а не
|
// bot_username выше: читается на сервере заново на каждый запрос, а не
|
||||||
// зашивается в SPA-бандл на этапе сборки, т.к. разный на разных стендах.
|
// зашивается в SPA-бандл на этапе сборки, т.к. разный на разных стендах.
|
||||||
// `None`, пока GRAFANA_PUBLIC_URL не задан — ObservabilityPage.tsx в
|
// `None`, пока GRAFANA_PUBLIC_URL не задан — ObservabilityPage.tsx в
|
||||||
|
|||||||
@@ -28,9 +28,12 @@ pub fn router(state: ApiState) -> Router<ApiState> {
|
|||||||
.route_layer(middleware::from_fn_with_state(state, auth_guard))
|
.route_layer(middleware::from_fn_with_state(state, auth_guard))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Только Owner/Moderator — гейт для Caddy `forward_auth` перед Grafana
|
/// Не подключён ни к чему в проде: изначально задумывался как гейт для
|
||||||
/// (см. netrunner-data/observability/Caddyfile). Тело ответа не важно, важен
|
/// Caddy `forward_auth` перед Grafana, но эту схему заменили на nginx +
|
||||||
/// только статус: 200 — Caddy пускает дальше в Grafana, 401 — блокирует.
|
/// HTTP Basic Auth прямо на VPS с данными (см. netrunner-data/nginx/) —
|
||||||
|
/// проще и не зависит от того, задеплоен ли уже этот бэкенд. Эндпоинт
|
||||||
|
/// оставлен на случай, если позже понадобится реальный SSO поверх
|
||||||
|
/// basic-auth. Тело ответа не важно, важен только статус: 200/401.
|
||||||
/// Бизнес-метрики (выручка, число юзеров) чувствительны — Support/Partner
|
/// Бизнес-метрики (выручка, число юзеров) чувствительны — Support/Partner
|
||||||
/// сюда не допускаются, поэтому `staff_guard`, а не `support_access_guard`.
|
/// сюда не допускаются, поэтому `staff_guard`, а не `support_access_guard`.
|
||||||
pub fn observability_router(state: ApiState) -> Router<ApiState> {
|
pub fn observability_router(state: ApiState) -> Router<ApiState> {
|
||||||
|
|||||||
Reference in New Issue
Block a user