Практика: администратор
Шесть заданий администратора: прочитать матрицу прав ролей, найти, у кого есть доступ к персональным данным, проверить флаги сервера, найти запуск расчёта в журнале действий, понять, каким движком считает воркер, и прикинуть число соединений с PostgreSQL. Числа получены на учебном стенде — копии базы Алматы 09.11.2026 (вход выключен, AUTHDISABLED=true). На вашем сервере они будут свои.
Практика: администратор
Кратко. Шесть заданий администратора: прочитать матрицу прав ролей, найти, у кого есть доступ к персональным данным, проверить флаги сервера, найти запуск расчёта в журнале действий, понять, каким движком считает воркер, и прикинуть число соединений с PostgreSQL. Числа получены на учебном стенде — копии базы Алматы 09.11.2026 (вход выключен,
AUTH_DISABLED=true). На вашем сервере они будут свои.
Задания
1. Матрица прав
Откройте «Пользователи» → роли (Пользователи, Роли и права, урок 20). Сколько шаблонов ролей, сколько клеток в матрице «вид объекта × действие» и сколько общих прав? Каким ролям можно запускать расчёты?
Ответ
Шаблонов 5: «Просмотр», «Режимщик», «Оператор сети», «Редактор», «Администратор». Матрица — 6 видов (участки,
узлы, потребители, источники и насосные, оборудование, режим узла) и 20 клеток: у четырёх видов по 4 действия,
у оборудования 3 (нет «перемещения»), у режима узла 1. Общих прав 9. «Запуск расчётов» есть у режимщика,
редактора и администратора — у 3 ролей из 5. Ответ стенда — GET /api/v1/admin/roles, 09.11.2026.
2. «Только свои»
Сколько клеток матрицы у «Оператора сети» и у «Редактора» стоят в значении «только свои», и что это значит?
Ответ
Оператор сети: 15 из 20. Создание — «все» (5 клеток), а правка, перемещение и удаление — «только свои»: 4 вида × 3 действия = 12, оборудование — правка и удаление (2), режим узла (1). Редактор: 5 клеток «только свои» — удаление у всех пяти видов, остальное «все». «Свои» — объекты, которые создал этот пользователь. Стенд, 09.11.2026.
3. Персональные данные
У каких ролей есть право «Персональные данные потребителей полностью»? Что видят остальные? См. Персональные данные.
Ответ
У 2 ролей из 5: «Редактор» и «Администратор» (pii_view). Остальные видят ФИО, телефоны и лицевые счета
маскированными — в окнах, выгрузках, ответах API v2 и MCP. Право выдают отдельно от роли, если, например,
диспетчеру нужны телефоны абонентов. Стенд, 09.11.2026.
4. Флаги сервера
Откройте /api/health (поле flags) учебного стенда и сравните с безопасным набором для сервера с доступом
извне (Роли и права, Наблюдение).
Сколько флагов не так и чем это грозит?
Ответ
На стенде: auth_disabled: true, dev_login_enabled: true, strict_auth: false, mutations_enabled: true,
topology_mutations_enabled: true. Против безопасного набора не так 3 видимых флага: вход выключен (каждый запрос —
администратор dev), разрешён вход без пароля, строгая проверка не включена. Плюс открыты запись данных и правка
состава сети. Для стенда это нормально, на внешнем сервере — доступ к сети и ПДн любому. Окно пользователей
на стенде прямо пишет: «AUTH_DISABLED=true: изменения пользователей отключены». Стенд, 09.11.2026.
5. Расчёт в журнале действий
Запустите расчёт фрагмента 74 и найдите его в «Журнале действий» фильтром по действию «Расчёт» (Журнал действий). Сравните длительность в журнале с временем расчёта в протоколе. Почему они разные?
Ответ
Строка: действие CALC_RUN «Расчёт», POST /api/v1/calculations/run, статус 200, 1155 мс, город almaty.
Протокол того же расчёта: «Время расчета 23.07 секунд». Журнал меряет ответ API — постановку задачи в очередь
tgid.almaty, а считает воркер Celery отдельно. Всего на стенде записей «Расчёт» — 33, у вас будет своё число.
Пользователь пуст, потому что вход выключен. Стенд, 09.11.2026.
6. Движок и соединения
(а) Воркер перезапустили на новом сервере без переменных окружения. Каким движком, профилем и ядром он будет считать? (б) API обслуживает 12 городов в двух процессах. Сколько соединений с PostgreSQL он может открыть при пуле по умолчанию и при пуле прода? См. Расчётные движки, Несколько городов, урок 29.
Ответ
(а) Значения по умолчанию в коде — самые осторожные: SETY_ENGINE=legacy (прежний движок десктопа),
HEATNET_PROFILE=legacy, HEATNET_CORE=python. Прод — heatnet, fixed, rust: их надо задать явно в
переменных службы воркера и перезапустить её мягко. В протоколе движок не пишется — проверяйте переменные службы.
(б) Пул считается на город в каждом процессе: 12·2·20 = 480 соединений при DB_POOL_MAX_SIZE=20
и 12·2·6 = 144 при пуле прода 6. Сверьте с max_connections PostgreSQL.
