Files
voidea/docs/security.md
T

54 lines
1.6 KiB
Markdown

# Безопасность
## Базовые требования
- `.env` — всегда в `.gitignore`. Никогда не коммитить.
- JWT: HS256, access_token = 60 минут, refresh_token = 30 дней
- Пароли: bcrypt через passlib
- Pydantic валидация на всех входах
- RBAC: роли `user` и `admin` (`is_superuser`)
## Аутентификация
```python
# app/core/security.py
def create_access_token(data: dict, expires_delta: timedelta | None = None) -> str
def decode_token(token: str) -> dict[str, Any] | None
def hash_password(password: str) -> str
def verify_password(plain: str, hashed: str) -> bool
```
## RBAC
| Роль | Права |
|------|-------|
| user | CRUD своих идей, запуск анализа |
| admin | Управление пользователями, просмотр логов, системные настройки |
## Sensitive data
**Никогда не логировать:**
- Пароли (даже хэш)
- JWT токены
- API keys и секреты
- Email в открытом виде (только user_id)
**Маскировать:**
- Email: `u***@mail.ru`
- IP: `195.208.*.*`
## Secrets management
| Окружение | Где хранить |
|-----------|-------------|
| Local | `.env` (в .gitignore) |
| Staging/Prod | GitHub Secrets |
Без Vault (< 10 разработчиков). JWT_SECRET_KEY менять при утечке или раз в год.
## Запланировано
- OAuth2 (Yandex, Google) — Authlib
- Rate limiting — slowapi
- CORS — FastAPI middleware (настроен)