2.9 KiB
2.9 KiB
Security Checklist
Network
- Наружу опубликованы только reverse proxy ports.
- Postgres не опубликован наружу в staging/production.
- Redis не опубликован наружу в staging/production.
- MinIO/storage не опубликован наружу в staging/production.
- Внутренние API не доступны напрямую извне.
- Authentik получает корректные
X-Forwarded-Proto,X-Forwarded-For,Host. - WebSocket headers настроены для Authentik/Plane/live.
Authentik
- Каждое приложение имеет отдельный Authentik Application.
- Каждое приложение имеет отдельный Provider.
- Для каждого приложения задана отдельная access policy.
- Группы app access заведены отдельно от app-local ролей.
- MFA/enrollment policy вынесены в отдельный этап.
Launcher
- Authentik service token хранится только server-side.
- Frontend не получает service token.
- Admin endpoints требуют
nodedc:superadminилиnodedc:launcher:admin. - Все admin actions пишутся в audit log.
- Удаление пользователя реализовано как deactivate/disable, не hard delete.
Plane
- Перед изменениями сделан backup DB/env/uploads/storage.
- Существующий Plane user не пересоздается.
owner_id,created_by,assignee_id,member_idне меняются без отдельной миграции.- Публичный signup отключен.
- Лишние обходные auth сценарии закрыты или явно оставлены как временные.
- OIDC login проверяет state/nonce/token.
authentik_subсвязан с существующимplane_user_id.
Tokens and secrets
- Secrets не попадают в git.
- Access/refresh tokens не логируются.
- Session cookies имеют
secure=trueв staging/production. - В production включены HTTPS и HSTS.
Acceptance scenarios
- Без логина Launcher отправляет в Authentik.
- Пользователь без
nodedc:taskmanager:accessне видит Task Manager в Launcher. - Пользователь без
nodedc:taskmanager:accessполучает deny на прямойtask.local.nodedc. - Пользователь с доступом открывает Task Manager.
- Старый Plane admin после OIDC видит старые workspace/tasks/comments.
- Деактивированный пользователь теряет доступ.
- Admin action появляется в audit log.