diff --git a/EXPERIENCE.md b/EXPERIENCE.md index 4adedec..28350f9 100644 --- a/EXPERIENCE.md +++ b/EXPERIENCE.md @@ -81,6 +81,29 @@ blackbox-exporter поддерживает ICMP-пробы (prober: icmp). Ме алертом UptimeKuma. Это реальная авария, а не ошибка конфига: blackbox корректно видит недоступность шлюза. +### 23. Read-only пользователь Grafana: provisioning НЕ работает (OSS), только UI (2026-09-08) + +Задача: дать сотруднику IT Винограда read-only доступ к дашбордам +(`it@vinogorod.ru`, роль Viewer). Попытки автоматизировать — провалились: + +- **Файловое provisioning пользователей** (`grafana/provisioning/access-control/users.yml`) + в Grafana 11 OSS **не обрабатывается**: в логах старта только + dashboards/datasources/alerting/plugins; access-control — фича + Enterprise/Cloud (`security.provisioning`). Файл молча игнорируется, даже с + валидным YAML. +- **API create**: `POST /api/users` → 404 (в OSS недоступно). `POST /api/login` + (JSON) → 401 даже при верном пароле; а **Basic auth работает** + (`curl -u estorozhenko:пароль /api/user` → 200). +- Итог: пользователя можно создать **только в UI** (Administration → Users → + New user, роль Viewer). Пароль задаётся при создании. + +Проверка после создания: +```bash +curl -s -u 'it@vinogorod.ru:1qazXSW2' http://127.0.0.1:3001/api/user # → 200 +curl -s -u 'estorozhenko:ПАРОЛЬ' http://127.0.0.1:3001/api/orgs/1/users # role=Viewer +curl -s -u 'it@vinogorod.ru:1qazXSW2' http://127.0.0.1:3001/api/users # → 403 (read-only) +``` + ## Ключевые находки / грабли ### 1. Admin API Garage v2.1 слушает ОТДЕЛЬНЫЙ порт (`[admin] api_bind_addr`) diff --git a/README.md b/README.md index 7698563..a3390fe 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,9 @@ grafana.nixg.ru → 87.242.100.206 (vps02) → caddy → reverse_proxy 10.8.0.2: `docker exec caddy caddy reload --config /etc/caddy/Caddyfile` - Сертификат Let's Encrypt выпускается автоматически. - Логин: **estorozhenko** (сменён с admin через UI), пароль — задан пользователем. +- Read-only доступ: **it@vinogorod.ru** (роль **Viewer**, создан вручную в UI, + пароль `1qazXSW2`). Только просмотр дашбордов, без правки. Учётка в + `grafana-data` (переживает пересоздание контейнера). ## Garage admin API (метрики)