Перейти к содержанию

Конфигурация безопасности

Security-подмножество конфигурации с рекомендациями по харденингу. Полный список параметров: Справочник конфигурации.

Секреты, обязательные в production

# .env — минимум для production
APP_ENV=production
JWT_SECRET="$(openssl rand -hex 32)"
ENCRYPTION_KEY="$(python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())")"
DB_PASSWORD="$(openssl rand -hex 16)"
REDIS_PASSWORD="$(openssl rand -hex 16)"
SETUP_TOKEN="$(openssl rand -hex 32)"         # закрывает создание первого админа
WEBHOOK_HMAC_SECRET="$(openssl rand -hex 32)" # если вебхуки достижимы

Что приложение принудительно применяет при APP_ENV=production:

  • Отсутствие или некорректность ENCRYPTION_KEY — ошибка старта, а не молчаливая перегенерация.
  • Session cookie автоматически получает флаг Secure (COOKIE_SECURE=true, если не переопределено) — обслуживать приложение за TLS.

Управление ключами

  • ENCRYPTION_KEY — глобальный key-encryption key (KEK). Каждый проект дополнительно оборачивает собственный data-encryption key (DEK); ротация DEK проекта — действие в UI (Admin → Encryption), ротация KEK — backend/scripts/rekey.py (сначала dry-run).
  • Резервная копия без ключа невосстановима. Храните ключ в secret-менеджере, а не рядом с резервной копией.
  • Потеря ключа не расшифрует ничего и никогда — механизма восстановления нет by design.

Сетевая экспозиция

  • Umbryx рассчитана на доверенную операторскую сеть за reverse proxy. Терминируйте TLS на прокси, ограничивайте доступ по IP/VPN и включайте rate-limit на прокси.
  • PUBLIC_BASE_URL стоит задавать явно в production (redirect_uri OIDC строится из него; значение, выводимое из запроса, доверяет заголовку Host).
  • /docs, /redoc, /openapi.json выключены, если не задано ENABLE_API_DOCS=true — держите выключенными для сетей у интернета.

Вебхуки

Без WEBHOOK_HMAC_SECRET инжест вебхуков выключен целиком (fail-closed). С ним каждый запрос обязан нести X-Hub-Signature-256: sha256=<hmac> по raw body. Текущее состояние проверяется полем hmac_required у GET /api/projects/{pid}/webhook.

Целостность аудита

Задайте AUDIT_INTEGRITY_KEY для HMAC-отпечатков каждого события и опционально форвардьте события в WORM-бакет (AUDIT_S3_*). После первого старта выполните GET /api/admin/audit/verify — подтверждение, что отпечатки проставляются.

Безопасность модулей (плагинов)

PLUGIN_SIGNING_KEY + PLUGIN_REQUIRE_SIGNATURE=true (по умолчанию) требуют подпись у серверных загрузок модулей. Загружаемые модули проходят AST-валидацию; eval/exec/__import__/compile отвергаются.

Смежные страницы