Настройки сервера


Конфигурационный файл

Все настройки приложения хранятся в едином YAML-файле конфигурации.

Основная структура файла

Файл конфигурации разделен на несколько основных секций:

  • config - Основные настройки приложения.
  • database - Настройки подключения к базе данных.
  • django - Специфичные настройки Django фреймворка.
  • security - Политики безопасности и паролей.
  • two_factor_auth - Настройки двухфакторной аутентификации.
  • ldap - Настройки интеграции с LDAP/Active Directory.
  • sso - Настройки единого входа (Single Sign-On).
  • redis - Настройки подключения к Redis.
  • rabbitmq - Настройки подключения к RabbitMQ (для Celery).

Секция config (Основные настройки)

debug

  • Тип: Boolean
  • По умолчанию: false
  • Описание: Определяет режим работы приложения. Влияет на поведение логирования, кэширования и других компонентов.

mode

  • Тип: String
  • Пример: local, stage, prod
  • Описание: Определяет режим работы приложения. Влияет на поведение логирования, кэширования и других компонентов.

host

  • Тип: String
  • Пример: "localhost", "0.0.0.0"
  • Описание: Хост, на котором будет запущен сервер приложения.

port

  • Тип: Integer
  • Пример: 80, 8000
  • Описание: Порт для запуска сервера приложения.

web_base_url

  • Тип: String (URL)
  • Пример: "https://web.stage.bimarkit.com"
  • Описание: Базовый URL фронтенд-приложения, используется для генерации ссылок.

Секция database (База данных)

engine

  • Тип: String
  • Пример: "django.contrib.gis.db.backends.postgis"
  • Описание: Движок базы данных для Django (используется для пространственных данных).

default

  • Подсекция, содержащая параметры подключения:
    • host (Тип: String) - Хост базы данных.
    • port (Тип: Integer) - Порт базы данных.
    • name (Тип: String) - Имя базы данных.
    • user (Тип: String) - Имя пользователя БД.
    • password (Тип: String) - Пароль пользователя БД.
    • engine (Тип: String) - Альтернативный движок для дополнительных возможностей ( например, psqlextra.backend).

Секция django (Настройки Django)

secret_key

  • Тип: String
  • Описание: Секретный ключ Django для подписи сессий, токенов и т.д. Должен быть уникальным и храниться в тайне!

allowed_hosts

  • Тип: String (разделенный запятыми список) или "*"
  • Описание: Список доменных имен/хостов, с которых может обслуживаться это приложение. "*" разрешает все (не для продакшена).

access_token_lifetime_min

  • Тип: Integer (минуты)
  • Описание: Время жизни Access Token (JWT) для аутентификации.

refresh_token_lifetime_min

  • Тип: Integer (минуты)
  • Описание: Время жизни Refresh Token (JWT).

cors_allowed_origins

  • Тип: String (URL)
  • Описание: Origin, с которого фронтенд может делать запросы к API (для настройки CORS).

session_age

  • Тип: Integer
  • По умолчанию: 1209600 (14 дней)
  • Описание: Время жизни сессии при неактивности пользователя (в секундах).

Секция security (Политики безопасности)

log_rotation_days

  • Тип: Integer
  • По умолчанию: 365
  • Описание: Период ротации логов безопасности (в днях).

storage_limit_mb

  • Тип: Integer
  • По умолчанию: 1000
  • Описание: Лимит хранилища логов ИБ в MB

memory_warning_percent

  • Тип: Integer
  • По умолчанию: 70
  • Описание: Порог после которого будут выдаваться предупреждения о заполнении хранилища логов ИБ

login_attempts_limit

  • Тип: Integer
  • По умолчанию: 3
  • Описание: Лимит попыток входа.

login_attempts_timeout

  • Тип: Integer
  • По умолчанию: 300
  • Описание: Время (в минутах) блокировки пользователя после превышения лимита попыток входа.

Политики сложности пароля:

password_min_length - Минимальная длина.

  • Тип: Integer
  • По умолчанию: 8
  • Описание: Минимальная длина пароля.

password_user_attributes_check - Проверка на сходство с именем, почтой и т.д.

  • Тип: Boolean
  • По умолчанию: true
  • Описание: Проверять ли пароль на сходство с атрибутами пользователя.

password_common_check - Проверка по списку часто используемых паролей.

  • Тип: Boolean
  • По умолчанию: true
  • Описание: Проверять ли пароль на наличие в списке распространенных паролей.

password_numeric_check - Запрет паролей, состоящих только из цифр.

  • Тип: Boolean
  • По умолчанию: true
  • Описание: Проверять ли что пароль не состоит из цифр полностью.

password_need_specials

  • Тип: Boolean
  • По умолчанию: true
  • Описание: Проверять ли что пароль содержит специальные символы.

password_need_uppercase

  • Тип: Boolean
  • По умолчанию: true
  • Описание: Проверять ли что пароль содержит буквы в верхнем регистре.

password_need_lowercase

  • Тип: Boolean
  • По умолчанию: true
  • Описание: Проверять ли что пароль содержит буквы в нижнем регистре.

password_need_number

  • Тип: Boolean
  • По умолчанию: true
  • Описание: Проверять ли что пароль содержит цифры.

password_need_three_letters

  • Тип: Boolean
  • По умолчанию: true
  • Описание: Проверять ли что пароль содержит хотя бы три различных символа.

password_weak_check - Проверка на простые последовательности (12345, qwerty).

  • Тип: Boolean
  • По умолчанию: true
  • Описание: Проверять ли пароль на содержание распространённых фраз и последовательностей.

password_history - Включение проверки истории паролей.

  • Тип: Boolean
  • По умолчанию: true
  • Описание: Запрещать ли совпадение с паролем который уже был использован до этого.

password_history_length - Глубина истории (сколько последних паролей запоминать).

  • Тип: Int
  • По умолчанию: 3
  • Описание: Глубина истории при проверке на совпадение со старыми паролями пользователя.

password_expire_days - Срок действия пароля (дней). 0 - пароль не истекает.

  • Тип: Int
  • По умолчанию: 0 - без ограничений
  • Описание: Ограничение времени жизни пароля.

Секция two_factor_auth (2FA)

enabled

  • Тип: Boolean
  • Описание: Глобальное включение/выключение двухфакторной аутентификации.

require_after_failed_attempts

  • Тип: Integer
  • Описание: Требовать 2FA после указанного количества неудачных попыток входа. 0 - всегда требовать.

code_length

  • Тип: Integer
  • Описание: Длина одноразового кода для 2FA.

Секция ldap (Интеграция с LDAP/AD)

Настройки подключения по LDAP указаны в разделе Настройки LDAP

Секция sso (Единый вход)

Настройки SSO указаны в разделе Настройки SSO

Секции redis и rabbitmq (Внешние сервисы)

redis.url

  • Тип: String (URL)
  • Пример: "redis://localhost:6379/0"
  • Описание: Полный URL для подключения к Redis (используется для кэша, Celery брокера результатов).

rabbitmq.url

  • Тип: String (URL)
  • Пример: "amqp://guest:guest@localhost:5672/"
  • Описание: Полный URL для подключения к RabbitMQ (используется как брокер сообщений для Celery).

Общие рекомендации

config.debug

config:
  debug: false

Объяснение: Режим отладки должен быть выключен в продакшен-окружении, чтобы предотвратить утечку информации.


SECRET_KEY

SECRET_KEY = 'your_strong_secret_key_here'

Объяснение: Используйте сильный и уникальный секретный ключ. Не храните его в репозитории или публично доступных местах.


MODE

mode: "prod"

Объяснение: Установите режим работы приложения как prod (production) для активации соответствующих настроек безопасности.


DJANGO_ALLOWED_HOSTS

DJANGO_ALLOWED_HOSTS = 'example.com,www.example.com'

Объяснение: Ограничьте список разрешенных хостов, чтобы предотвратить атаки типа Host header injection.


ACCESS_TOKEN_LIFETIME_MIN

ACCESS_TOKEN_LIFETIME_MIN = 15

Объяснение: Уменьшите время жизни access token для минимизации ущерба при компрометации токена.


REFRESH_TOKEN_LIFETIME_MIN

REFRESH_TOKEN_LIFETIME_MIN = 60 * 24 * 7  # 7 дней

Объяснение: Установите разумное ограничение времени жизни refresh token, например, 7 дней.


SECURITY_LOG_ROTATION_DAYS

SECURITY_LOG_ROTATION_DAYS = 365

Объяснение: Храните логи безопасности не менее одного года для анализа и аудита.


SQL_PASSWORD

SQL_PASSWORD = 'your_strong_db_password'

Объяснение: Используйте сложный пароль для базы данных. Избегайте использования простых или стандартных паролей.


CELERY_TASK_ALWAYS_EAGER

CELERY_TASK_ALWAYS_EAGER = False

Объяснение: Отключите синхронное выполнение задач Celery в продакшене, чтобы избежать блокировки основного потока.


PASSWORD_MIN_LENGTH

PASSWORD_MIN_LENGTH = 12

Объяснение: Увеличьте минимальную длину пароля до 12 символов для повышения уровня безопасности.


PASSWORD_USER_ATTRIBUTES

PASSWORD_USER_ATTRIBUTES = True

Объяснение: Включите проверку пароля на сходство с атрибутами пользователя (например, имя, фамилия).


PASSWORD_COMMON_PASSWORD

PASSWORD_COMMON_PASSWORD = True

Объяснение: Проверьте пароль на наличие в списке распространенных паролей.


PASSWORD_NUMERIC_PASSWORD

PASSWORD_NUMERIC_PASSWORD = True

Объяснение: Проверьте, что пароль не состоит только из цифр.


LOGIN_ATTEMPTS_LIMIT

LOGIN_ATTEMPTS_LIMIT = 5

Объяснение: Установите лимит попыток входа (например, 5) для предотвращения брутфорс-атак.


LOGIN_ATTEMPTS_TIMEOUT

LOGIN_ATTEMPTS_TIMEOUT = 15  # в минутах

Объяснение: Сократите время блокировки после превышения лимита попыток входа, чтобы минимизировать влияние на пользователей.