3.0 KiB
3.0 KiB
Security Checklist
Network
- Local dev compose публикует только reverse proxy port.
- Postgres не опубликован наружу в staging/production.
- Redis не опубликован наружу в staging/production.
- MinIO/storage не опубликован наружу в staging/production.
- Внутренние API не доступны напрямую извне.
- Authentik получает
X-Forwarded-Proto,X-Forwarded-For,Hostчерез Caddy. - Caddy reverse proxy сохраняет HTTP/1.1/WebSocket upgrade behavior для upstream.
Authentik
- Каждое приложение имеет отдельный Authentik Application.
- Каждое приложение имеет отдельный Provider.
- Для каждого приложения задана отдельная access policy.
- Группы app access заведены отдельно от app-local ролей.
- MFA/enrollment policy вынесены в отдельный этап.
- Authentik local compose не публикует server/worker/Postgres ports напрямую.
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.