krona-staff/docs/AUDIT-REMEDIATION-2026-09-18.md
Ochenstarik 7c8e7fcaf1
Some checks are pending
ci / verify (push) Waiting to run
fix: close terminal audit findings
2026-09-18 01:34:36 +07:00

32 lines
5.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Устранение замечаний аудита 2026-09-18
Исходный отчёт проверял ревизию `14ed610`. Исправления подготовлены после `b88ff91`.
## Исправлено
- №1–5: регистрация отпечатка отменяется при блокировке, смене сотрудника и через 60 секунд; повторный палец отклоняется; поток захвата корректно завершается; связь контролируется и восстанавливается автоматически.
- №2–3, №27: повреждённое состояние обрабатывается fail-closed, ведутся три резервные копии, записи сериализованы и принудительно сбрасываются на диск, фоновые ошибки журналируются, `crash.log` ротируется.
- №6–8: роли мигратора и приложения разделены; runtime-роль имеет `NOSUPERUSER NOBYPASSRLS`; пароли согласованы; мигратор использует `schema_migrations`, advisory lock и откатывает только последнюю миграцию после явного подтверждения.
- №9–12: отметка обычного сотрудника не теряется при открытом диалоге администратора; PIN усилен и защищён задержкой; второй экземпляр перенаправляет активацию первому; дубликат пальца запрещён.
- №13–14: журнал экспортируется в CSV, имеет ограничение размера и восстановимые резервные копии; уход после полуночи определяется по настраиваемой максимальной длительности смены.
- №15–20: readiness возвращает `503` без деталей; маршруты соответствуют `/api/v1/staff`; OpenAPI сравнивается с runtime; пул БД обрабатывает ошибки; добавлен реальный RLS-тест двух tenant; audit log доступен runtime только на чтение/добавление; outbox хранит subject/actor; Redis-зависимости удалены до появления сценария.
- №21–23, №25–29, №31–33: автозапуск открывает приложение в трее и не сохраняет Debug-путь; новый профиль не включает автозагрузку без решения администратора; защита последнего администратора исправлена; PIN совместим со старыми значениями; публичные имена по умолчанию маскируются; проект только x64; manifest очищен; correlation ID проверяется как ULID; версия синхронизируется проверкой; graceful shutdown имеет таймаут; standalone запрещён в production; базовые Docker-образы закреплены digest.
- npm-зависимости обновлены: `npm audit` сообщает 0 уязвимостей. Форматирование включено в CI.
## Осознанно сохранено
- №24: повторная авторизация перед удалением отпечатков, сотрудников и журнала сохранена по прямому требованию владельца.
- №30: EULA ZKTeco добавлена рядом с DLL. Автоматическая Windows-сборка и подпись требуют Windows runner и сертификат подписи; этих ресурсов в текущем Forgejo окружении нет.
## Требует решения владельца, не является локальным исправлением кода
- A1: окончательный контракт терминала как edge-клиента Staff и серверная синхронизация вместо постоянного локального source of truth.
- A2: письменные согласия на биометрию, сроки хранения, правовое основание передачи уведомлений и политика трансграничной передачи должны быть утверждены с юристом.
## Проверка
- `npm run check` — пройдено.
- `npm run format:check` — пройдено.
- `npm audit --audit-level=moderate` — 0 уязвимостей.
- `dotnet build apps/KronaStaffTerminal/KronaStaffTerminal.csproj -c Release -p:Platform=x64` — 0 ошибок и 0 предупреждений.
- PostgreSQL/Docker up/down и реальный RLS-тест добавлены в CI, но локально не запускались: Docker и PostgreSQL на машине разработки отсутствуют.