Общая информация

В современном мире безопасность информационных данных формируется комплексом организационных и технических мер, обеспечивающих конфиденциальность, целостность и доступность на всех этапах их жизненного цикла. В современных реалиях стратегия защиты эволюционирует: на смену защите периметра приходит концепция изоляции на уровне компонентов с жёстким контролем прав доступа.

В данной статье рассмотрены аспекты защиты Modus BI на всех уровнях — от внешнего веб-интерфейса до внутренних баз данных.

Защита периметра: настройка Nginx как обратного прокси

Nginx функционирует как внешний рубеж безопасности, маскируя внутреннюю архитектуру и осуществляя базовую фильтрацию и лимитирование трафика. Подробнее о базовой настройке Nginx см. раздел «Как настроить https с прокси-сервером».

Ключевые аспекты:

  • Сокрытие инфраструктуры — Nginx маскирует реальные серверы приложений и СУБД, предоставляя единую точку входа.
  • Буферизация запросов — позволяет контролировать размер и скорость загрузки клиентских запросов, предотвращая перегрузку серверов.
  • ACL и IP-фильтрация — ограничение доступа к административным интерфейсам (/admin) только по доверенным IP-адресам корпоративной сети или VPN.
  • Изоляция SSL/TLS — все криптографические операции выполняются на Nginx, что упрощает управление сертификатами и снижает нагрузку на внутренние сервисы.
  • Защита от DoS/DDoS — настройка limit_req_zone и limit_conn_zone ограничивает частоту запросов с одного IP, смягчая атаки на уровне приложения.
  • Дополнительные заголовки — добавление заголовков безопасности (X-Frame-Options, X-Content-Type-Options, Content-Security-Policy) защищает от распространенных веб-уязвимостей (кликджекинг, MIME-sniffing).

Пример конфигурационного файла Nginx:

server {
    listen 443 ssl;
    http2 on;
    server_name portal.company.com;

    # SSL/TLS конфигурация
    ssl_certificate /etc/ssl/certs/portal.crt;
    ssl_certificate_key /etc/ssl/private/portal.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # Разрешенный размер загружаемых файлов (для mbu)
    client_max_body_size 100m;

    # Основное проксирование
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Принцип минимальных привилегий для СУБД

Взаимодействие аналитического портала с базами данных строится на строгом разделении прав.

Примечание. Запрещено использование учетных записей суперпользователей (sa, postgres, root).

Обеспечение безопасности аналитического портала реализуется через ролевое разграничение доступа (RBAC) к отчетам и данным, а также настройку динамического контроля на уровне записей (RLS) с использованием пользовательских переменных, подробнее см. разделы «Пользователи, роли, профиль доступа к отчетам» и «Настройка прав доступа на уровне записей (RLS)».

Таблица: Права доступа аналитического портала к СУБД

Для обеспечения защиты первичных данных от модификации аналитическими сервисами и оптимизации управления доступом рекомендуется придерживаться правил, представленных в таблице:

Роль/ назначение

СУБД

Необходимые права

Пример SQL команды для создания пользователя/назначения прав

Примечание

Учетная запись для метаданных портала

PostgreSQL

OWNER на БД modusbi

CREATE USER modus WITH PASSWORD 'StrongPassPhrase1!';
GRANT ALL PRIVILEGES ON DATABASE modusbi TO modus;

 

Подробнее о рекомендациях по установке, настройках сервера, управлению пользователями и базами данных, а также об обслуживании СУБД, см. документацию вендора Часть III. Администрирование сервера PostgreSQL.

Учетная запись для базы-источника DataFromFiles

PostgreSQL

OWNER на БД  datafromfiles

CREATE USER modus WITH PASSWORD 'StrongPassPhrase1!';
GRANT ALL PRIVILEGES ON DATABASE datafromfiles TO modus;

 

Учетная запись для базы DWH (чтение)

PostgreSQL

SELECT на схемы/таблицы БД dwh

CREATE USER modus_ro WITH PASSWORD 'StrongPassPhrase3!';
GRANT CONNECT ON DATABASE dwh TO modus_ro;
GRANT USAGE ON SCHEMA default TO modus_ro;
GRANT SELECT ON ALL TABLES IN SCHEMA default TO modus_ro;

Обратите внимание!  

При такой конфигурации работа и включение механизмов RLS (Row Level Security) будут невозможны.
Расширенные права (для работы RLS и сервисных функций)
Если планируется использование RLS, учетной записи потребуются права на создание временных сущностей и управление данными в служебных таблицах:

CREATE USER modus_rw WITH PASSWORD 'StrongPassPhrase3!';
GRANT CONNECT ON DATABASE dwh TO modus_rw;
GRANT USAGE ON SCHEMA default TO modus_rw;
GRANT CREATE ON SCHEMA default TO modus_rw;
GRANT INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA default TO modus_rw;

Учетная запись для витрин данных (чтение)

ClickHouse

SELECT на БД/таблицы витрин

CREATE USER modus_ro IDENTIFIED WITH sha256_password BY 'StrongPassPhrase4!';
GRANT SELECT ON mart.* TO modus_ro;

 

Подробнее о рекомендациях по установке, настройках сервера, управлению пользователями и базами данных, а также об обслуживании СУБД, см. документацию вендора Администрирование сервера ClickHouse.

Подключение к внешним источникам

Любая

Только SELECT на конкретные объекты или базы

Создание роли src_reader и назначение прав SELECT. Назначение этой роли пользователю портала.

 

 

Изоляция на уровне операционной системы

Сервисы запускаются под отдельными системными пользователями, что ограничивает ущерб в случае компрометации одного из них.

Конфигурирование для Linux

# Создание системного пользователя без прав входа
sudo useradd -r -s /usr/sbin/nologin modusbi

# # Настройка прав на рабочие директории
sudo chown -R modusbi:modusbi /opt/modusbi /var/log/modusbi

Конфигурация systemd службы (/etc/systemd/system/modusbi.service)

ini
User=modusbi
Group=modusbi

Конфигурирование для Windows

Для обеспечения изолированной работы приложения без прав на изменение системных файлов или данных других сервисов необходимо следовать следующим правилам:

  • Создание локальной учетной записи modusbi (без прав администратора);
  • Настройка запуска службы портала от имени этой учетной записи;
  • Назначение прав NTFS на директорию с установленным ПО ModusBI (пример: C:\Program Files\ModusBI), алгоритм:
    1. Нажмите ПКМ → Свойства → Безопасность → Изменить.
    2. Добавить пользователя modusbi.
    3. Установить права: Изменение.
  • Система автоматически предоставляет право Logon as a service.

Дополнительные уровни защиты

Для усиления рассмотренных в статье мер, дополнительно рекомендуем применять:

  • Изолированный сетевой контур — серверы аналитического портала и СУБД не имеют прямого выхода в интернет. Доступ для обновлений и мониторинга осуществляется через строго контролируемые шлюзы.
  • Требования к паролям:
    • Использование парольных фраз длиной от 12-14 символов (например, Traktor-Kofe-Sputnik-88!);
    • Уникальные сложные пароли для каждой учетной записи СУБД;
    • Регламентная смена сервисных паролей, особенно при кадровых изменениях.
  • Управление аутентификацией портала (Настройки → Настройки безопасности → Настройки аутентификации):
    • Количество попыток: 5 (вместо 10 по умолчанию);
    • Время блокировки: 1800 секунд (30 минут);
    • Интервал между попытками: 600 секунд (10 минут).
  • Регулярное обновление ПО: систематическое применение патчей к ОС, СУБД (PostgreSQL, ClickHouse), Nginx и аналитическому порталу для устранения известных уязвимостей.

Реализация описанных рекомендаций позволяет создать защищенную среду, устойчивую как к внешним атакам, так и к внутренним рискам, обеспечивая надежную основу для работы с критически важными бизнес-данными.

Связи контента