Практика · 45 мин

Практика: администратор

Шесть заданий администратора: прочитать матрицу прав ролей, найти, у кого есть доступ к персональным данным, проверить флаги сервера, найти запуск расчёта в журнале действий, понять, каким движком считает воркер, и прикинуть число соединений с 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.

Разобрали задания?Ответы — под «Ответ» у каждого задания. Отметка хранится только в вашем браузере.