Appearance
Server Security / Admin Platform
Назначение
Server Security / Admin Platform — это единый контур защиты и управления сервером DesignCorp.
Цели:
- держать прод/дев домены под постоянным мониторингом;
- быстро локализовать и блокировать угрозы;
- дать владельцу простой операторский интерфейс;
- дать агентам/платформе контролируемый экспертный доступ и audit trail.
Текущий контур (актуально)
- Repo:
/home/admin/workspace/serveradmin - Прод URL:
https://serveradmin.designcorp.eu - Дев URL:
https://dev.serveradmin.designcorp.eu - Backend bind:
127.0.0.1:3099 - Frontend runtime:
/opt/designcorp/serveradmin/prod/web-dist
Модель доступа
Доступ двухслойный:
- Nginx Basic Auth на
serveradmin.*(обязателен для всех). - RBAC tokens на backend (
SERVERADMIN_RBAC_TOKENS), проксируются через nginx заголовкомX-Serveradmin-Token.
Важно:
- прямой доступ к backend снаружи запрещен;
- любые секреты только в env, не в git;
- доступ в UI только по HTTPS.
Что уже реализовано
- Мониторинг nginx access для high-risk путей (
/.env,/.git,wp-*,phpmyadmin, и т.д.). - Классификация инцидентов P0/P1 + дедуп алертов.
- Telegram оповещения в коротком формате (
🔴критично,🟡предупреждение). - Lockdown механика через nginx (
globalи per-host). - Fail2ban интеграция и обзор top attackers.
- Операторский UI + экспертные вкладки.
- Admin actions API (whitelist):
restart_serveradmin_uirestart_serveradmin_agentrestart_nginxnginx_testnginx_reload
- Асинхронный orchestrator для операций:
/api/v2/jobs. - Approval workflow для high-risk операций:
/api/v2/approvals. - Ops summary API для очередей/approvals:
/api/v2/ops/summary. - Audit лог операторских действий:
operator_audit.jsonl.
Обновление статуса (2026-03-03)
В serveradmin реализован V2-контур хостер-панели для проектов DesignCorp:
- Projects/Sites: owner + criticality, фильтры, быстрые переходы в операции.
- Files & FTP:
GET /api/ftp/accountsGET /api/ftp/logsGET /api/files/listPOST /api/v2/jobscoperation=file_manage(mkdir|rm|chmod|chown, high-risk через approvals).
- Databases:
GET /api/db/inventoryGET /api/db/health
- Mail:
GET /api/mail/diagnostics
- Cron:
GET /api/cron/jobsPOST /api/cron/manage(upsert|toggle|delete|run_now) для no-code управления расписаниями.
- Resources:
GET /api/resources/sites(CPU/RAM/Disk/Inodes + baseline trend 24h).
- Access:
GET /api/access/policyGET /api/access/tokens(fingerprints only)POST /api/access/tokens/manage(create|revoke).
- Incidents lifecycle:
GET /api/incidents/feedGET /api/incidents/:key/cockpitPOST /api/incidents/:key/status(open|acked|resolved).
Обновление статуса (2026-04-19)
В serveradmin начат V3-переход к site-centric control plane:
Projects/Sitesтеперь нормализуются как canonical project model, а не только как плоский список доменов.- В модель проекта добавлены:
runtime.type,runtime.units[],runtime.containers[]backupPolicy.enabled,backupPolicy.mode- capability matrix:
deploy|nginx|ssl|backup|files|ftp|db|mail|cron|serviceControl
- Текущий registry остаётся backward-compatible по старым top-level полям (
repo,branch,deployPath,healthUrl, и т.д.), чтобы не ломать существующие flows и monitoring. - Safe Service Controls V1 уже добавлены:
GET /api/sites/:id/runtimeGET /api/sites/:id/runtime/logsPOST /api/v2/jobscoperation=service_controlиpayload.action=restart
- Runtime restart работает только по allowlist targets из project registry; произвольные
systemctl/dockerаргументы из запроса не принимаются. - Для известных core-проектов DesignCorp backend подмешивает controlled bootstrap runtime bindings (
serveradmin,chat,swarm,designcorp,hub,print,ui), чтобы service control заработал сразу без ручного донастройки всех legacy записей. - Incident Cockpit V1 для
502/downуже добавлен:- связывает incident -> project/site -> runtime -> nginx -> ssl -> recent jobs/actions;
- показывает probable cause по простым правилам (
upstream_dead,health_misconfigured,nginx_config_issue,ssl_readiness_issue); - использует live health probe, а не локальный host status;
- incidents feed автоматически считает incident resolved, если позже найден
site_resolvedдля того же проекта и incident не был reopened.
- Recovery Center V1 уже добавлен:
- единый operator context
incident/site -> runtime -> releases -> backups -> workflows -> timeline; - rollback suggestion теперь указывает на последний успешный
deploy, а не на последний успешныйrollback; - backup restore доступен как
dry-runи live action из одного экрана; - prod self-deploy
serveradmin-uiтеперь не зависает на шагеrestart: после собственного systemd restart новая копия UI добивает verify и закрывает release на boot.
- единый operator context
- Approval Inbox V2 уже добавлен:
- approvals больше не показываются как raw list + JSON pane;
Actionsиспользует operator inbox с lanesNeeds decision,Ready to execute,Recent outcomes;- каждая заявка обогащается site context, payload summary, linked job status и
next action; - detail pane показывает business justification и decision/execution context как primary content.
- Secrets & Credentials Center V1 уже добавлен:
Accessстал единым operator screen для access tokens, one-time secrets и rotation health;- stale/missing credential surfaces видны без раскрытия самих secret values;
jobs/approvalspersistence теперь санируется так же, как и workflow history.
- SLO & Monitoring Workspace V1 уже добавлен:
- отдельный core-screen
Monitoringсобирает uptime / latency / error trends, noisy projects и resource hotspots; - оператор видит
down / warn / noisy / ok, а не просто длинную metric table; - из workspace есть прямые переходы в
Incidents,Recovery,Projects/Sites.
- отдельный core-screen
- In-product Runbooks & Help V1 уже добавлен:
- contextual safe-next-step callouts появились для
502/down,ssl issue,pending approval,unmanaged projectиcredentials rotation; - help встроен в action screens и не подменяет audit/approval flow.
- contextual safe-next-step callouts появились для
- One-click Workflows V1 уже добавлены как V3 foundation:
publish_project,ssl_issue,rollback_release,grant_access;- каждый run проходит
preflight -> apply -> verify -> fallbackи получаетcorrelation_id=workflow:<id>; - workflow не обходят существующий approvals/risk_ack контур для high-risk шагов;
- история workflow санируется перед записью: секреты (
token,temporary_password,password) не сохраняются вworkflows.json.
- Health Policy V2 уже добавлена:
- проект хранит
healthPolicy(probeType,expectedStatuses,followRedirects,source); - agent auto-tune'ит canonical health endpoint для discovery-managed сайтов без перетирания explicit policy;
/api/healthиProjects/Sitesтеперь показывают не только код, но и объяснение почему probe считаетсяok/down.
- проект хранит
- Guided Onboarding V2 уже добавлен в product flow:
Projects/Sitesбольше не использует flat form для нового проекта; вместо этого есть wizardProject basics -> Runtime -> Delivery -> Edge & health -> Capabilities -> Review;- каждый шаг получает live preview через
POST /api/sites/preview, который прогоняет payload через canonical site model и сразу показываетmanagedStatus; - wizard умеет доводить happy path DesignCorp-проекта до
managed=trueили явно показываетremaining blockers; - runtime presets закрывают типовые контуры
systemd,docker,static,proxy/external; - capability matrix поддерживает
autosync от текущего runtime/repo/deploy state илиcustommode для ручной фиксации.
- Backend decomposition phase 2 уже добавлена:
src/ui.jsбольше не держит route-level обработку V3 доменов как один длинныйif/elseблок;- доменные API handlers вынесены в
src/ui-api/{approvals,workflows,jobs,sites,runtime,deploy,nginx,incidents,access,health,ssl,backup}.js; - hosting/system surfaces вынесены отдельно в
src/ui-api/hosting-modules.jsиsrc/ui-api/system.js; - legacy inline admin HTML вынесен в
src/ui-html.js, чтобы backend composition и HTML template больше не жили в одном файле; - prod API контракт при этом сохранён, а live smoke прогнан уже через модульную маршрутизацию.
- Frontend decomposition phase 2 уже добавлена:
web/src/App.jsxстал thin shell;- screen state/effects/actions вынесены в
web/src/hooks/useServerAdminApp.js; - shared helpers/nav metadata вынесены в
web/src/serveradmin-shared.jsx; - разделы
Projects / Incidents / Actions / Audit / Settingsи hosting tabs вынесены в отдельные section-компоненты.
Approval Inbox V2
- Operator inbox заменяет raw approvals list.
- Главные состояния:
Needs decision,Ready to execute,Recent outcomes. - Detail pane и quick actions ориентированы на safe execution, а не на JSON inspection.
SLO & Monitoring Workspace V1
Monitoringвынесен в отдельный core-screen.- В центре внимания:
down / warn / noisy / ok, hotspots и переходы в recovery/incidents/projects. - Экран должен помогать чинить, а не просто показывать графики.
Guided Project Onboarding V2
- Новый проект ведётся через wizard с live preview и
managedStatus. managed=trueсчитается minimum bar для one-click operations.- Unmanaged blockers должны быть видны без CLI.
GitHub tracking:
- Roadmap milestone:
https://github.com/DesignCorporation/serveradmin/milestone/3 - Board:
https://github.com/users/DesignCorporation/projects/6
Security Baseline (обязательный минимум)
P0 (обязательно всегда)
- TLS + HSTS на публичных доменах.
- Dotfiles deny (
/.env,/.git/*) на nginx уровне. - Basic Auth + API token для админ-панели.
- Строгая валидация input для управляющих API.
- Все опасные действия только через whitelist команд.
- Аудит всех ручных действий (кто/что/когда/результат).
P1 (обязательно в ближайшем цикле)
- SLA/эскалации для pending approvals (напоминания, TTL, escalation policy).
- Ротация секретов (Basic Auth, API token) по регламенту.
- Явная политика retention/rotation для security логов.
- Единые runbook для инцидентов и восстановления.
P2 (после стабилизации)
- RBAC (owner/operator/viewer) внутри панели.
- Нотификации о деградации сервисов и SLO breaches.
- Экспорт инцидентов/действий в централизованное хранилище.
Матрица инцидентов
P0: риск компрометации / критичная деградация. Требует немедленного вмешательства.P1: сканирование/подозрительная активность, но система держит защиту.Info/Action: служебные события и действия операторов.
SLA реакции:
P0: начать разбор до 5 минут.P1: проверить в течение рабочего окна (до 1 часа).
Протокол работы для агентов
- Не менять infra в обход runbook.
- Любое изменение security-логики: PR + запись в docs + проверка rollback.
- После инцидента обновить:
- runbook,
- список угроз/IOC,
- roadmap/backlog.
Roadmap проекта (Q1-Q2 2026)
Phase 1 — Stabilize (1-2 недели)
- Закрыть UX долги операторского режима (approval queue, risk-маркировка, фильтры).
- Ввести регламент ротации Basic/Auth token.
- Утвердить минимальный disaster-recovery сценарий (UI down, nginx down, cert issues).
Phase 2 — Operate (2-4 недели)
- Добавить safe service controls для ключевых сервисов платформы.
- Добавить health SLO панель (доступность доменов, latency, последние сбои).
- Автоматизировать release шаги frontend/backend и контроль версий runtime path в
/opt.
Phase 3 — Scale (4-8 недель)
- Ввести RBAC и журнал “кто авторизовался в UI”.
- Вынести конфигурацию проектов в единый registry (домены, порты, owners, criticality).
- Подготовить продуктовые границы для коммерциализации admin platform.
Backlog задач (стартовый)
P0
- Дожать approval policy: who can approve by area, auto-routing owner/admin.
- Регламент ротации секретов + runbook “rotate creds”.
- Post-incident шаблон и обязательный docs update checklist.
P1
- Статус-панель SLO (доступность + latency + последние 24h).
- Упрощенный экспорт audit trail (JSON download) для расследований.
- Авто-тест smoke после деплоя (
/,/api/config,/api/admin/actions).
P2
- RBAC модель и migration plan.
- Пакет шаблонов onboarding для новых доменов/проектов.
- Подготовка публичного описания SaaS-версии security admin.