Руководство по безопасности NocoBase

NocoBase уделяет особое внимание безопасности данных и приложений — от функционального дизайна до системной реализации. Платформа содержит встроенные функции безопасности, такие как аутентификация пользователей, контроль доступа и шифрование данных, а также позволяет гибко настраивать политики безопасности в соответствии с реальными потребностями. Будь то защита пользовательских данных, управление правами доступа или изоляция сред разработки и продакшна, NocoBase предоставляет практические инструменты и решения. Цель этого руководства — дать рекомендации по безопасному использованию NocoBase, помогая защищать безопасность данных, приложений и окружения и обеспечивать эффективное использование функций системы при соблюдении требований безопасности пользователей.

Аутентификация пользователей

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

Ключ токена (Token Key)

По умолчанию NocoBase использует JWT (веб-токен в формате JSON) для аутентификации вызовов API на стороне сервера. Пользователи могут задать ключ токена через переменную окружения APP_KEY. Управляйте ключом токена приложения должным образом, чтобы избежать утечки. Обратите внимание: если APP_KEY изменится, старые токены также станут недействительными.

Политика токенов

NocoBase поддерживает настройку следующих политик безопасности пользовательских токенов:

ПараметрОписание
Срок действия сессииМаксимальное время, в течение которого действует каждый вход пользователя. В течение срока действия сессии токен будет автоматически обновляться. После истечения срока пользователю нужно войти снова.
Срок действия токенаСрок действия каждого выданного API-токена. После истечения срока токена, если это произошло в пределах срока действия сессии и не превышен лимит обновления, сервер автоматически выдаст новый токен, чтобы поддерживать сессию пользователя; иначе пользователю нужно войти снова. (Каждый токен можно обновить только один раз.)
Лимит времени обновления истекшего токенаМаксимальный допустимый интервал времени для обновления токена после истечения его срока действия.

Обычно мы рекомендуем администраторам:

  • Устанавливать более короткий срок действия токена, чтобы ограничить время его использования при возможной компрометации.
  • Устанавливать разумный срок действия сессии — он должен быть больше срока действия токена, но не слишком большим — чтобы балансировать пользовательский опыт и безопасность. Используйте механизм автоматического обновления токена, чтобы активные сессии пользователей не прерывались, одновременно снижая риск злоупотребления долгоживущими сессиями.
  • Устанавливать разумный лимит обновления истекшего токена, чтобы при длительной неактивности пользователя токен естественным образом истекал без выпуска нового токена, снижая риск злоупотребления «спящими» пользовательскими сессиями.

Хранение токена на клиенте

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

Если вы хотите, чтобы пользователи входили заново каждый раз при открытии страницы, вы можете задать переменную окружения API_CLIENT_STORAGE_TYPE=sessionStorage, чтобы сохранять пользовательский токен в сессионном хранилище браузера. Это позволит требовать повторного входа при каждом открытии страницы.

Политика паролей

Доступно начиная с редакции Professional и выше

NocoBase поддерживает настройку правил пароля и политики блокировки попыток входа по паролю для всех пользователей, чтобы повысить безопасность приложений NocoBase, в которых включён вход по паролю. См. Политика паролей для описания каждого параметра.

Правила пароля

ПараметрОписание
Длина пароляМинимальная длина пароля; максимальная длина — 64.
Сложность пароляНастройка требований к сложности пароля — какие типы символов обязательно должны присутствовать.
Пароль не может содержать имя пользователяУказывает, разрешено ли включать в пароль имя пользователя текущей учётной записи.
Запоминать историю паролейЗапоминать количество недавно использованных пользователем паролей. Пользователь не сможет повторно использовать их при смене пароля.

Настройка срока действия пароля

ПараметрОписание
Срок действия пароляПериод действия паролей пользователей. Пользователи должны сменить пароль до истечения срока, чтобы пересчитать период действия. Если они не сменят пароль до истечения, они не смогут войти со старым паролем и им потребуется помощь администратора для сброса.
Если настроены другие методы входа, пользователь может входить с их помощью.
Канал уведомлений-напоминаний об истечении пароляВ течение 10 дней до истечения срока действия пароля пользователя при каждом входе будет отправляться напоминание.

Безопасность входа по паролю

ПараметрОписание
Максимальное количество неудачных попыток входаУстановите максимальное число попыток входа, которое пользователь может сделать за заданный временной интервал.
Максимальный интервал для неудачных попыток входа (секунды)Установите временной интервал (в секундах), в течение которого подсчитывается максимальное число неудачных попыток входа пользователя.
Время блокировки (секунды)Установите время блокировки пользователя после превышения лимита неудачных попыток входа (0 означает отсутствие лимита).
В период блокировки пользователю запрещён доступ к системе через любой метод аутентификации, включая ключи API.

Обычно мы рекомендуем:

  • Настроить строгие правила пароля, чтобы снизить риск угадывания паролей по ассоциациям или атак полным перебором.
  • Установить разумный срок действия пароля, чтобы вынуждать пользователей регулярно менять пароли.
  • Использовать сочетание количества неудачных входов и настроек времени, чтобы ограничить частые попытки входа по паролю за короткий период и предотвратить подбор пароля полным перебором.
  • Если требования безопасности строгие, можно задать разумное время блокировки пользователя после превышения лимита входа. Однако следует учитывать, что настройка времени блокировки может быть использована злоумышленниками: атакующие могут намеренно многократно вводить неверный пароль для целевых учётных записей, вынуждая их блокироваться и становиться непригодными для использования. На практике можно комбинировать ограничения по IP, ограничения частоты запросов API и другие меры, чтобы предотвратить такие атаки.
  • Изменить значения по умолчанию для имени пользователя, адреса электронной почты и пароля учётной записи root в NocoBase, чтобы предотвратить злоупотребления.
  • Поскольку истечение пароля или блокировка учётной записи препятствуют доступу к системе (включая администраторские учётные записи), рекомендуется настроить в системе несколько учётных записей с правами сброса паролей и разблокировки пользователей.

Блокировка пользователя

Доступно начиная с редакции Professional и выше; входит в состав плагина политики паролей

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

Ключи API

NocoBase поддерживает вызов системных API через ключи API. Пользователи могут добавлять ключи API в настройках плагина «Аутентификация: API-ключи».

  • Привяжите к ключу API корректную роль и убедитесь, что права, связанные с этой ролью, настроены правильно.
  • Не допускайте утечек ключей API при использовании.
  • В целом рекомендуется задавать срок действия для ключей API и избегать использования режима «бессрочно».
  • Если обнаружено аномальное использование ключа API и есть риск утечки, пользователь может удалить соответствующий ключ API, чтобы сделать его недействительным.

Единый вход

Коммерческий плагин

NocoBase предоставляет набор плагинов для единого входа, поддерживающих несколько популярных протоколов, таких как OIDC, SAML 2.0, LDAP и CAS. В то же время NocoBase имеет полный набор интерфейсов расширения методов аутентификации, что позволяет быстро разрабатывать и подключать другие типы аутентификации. Вы можете легко подключить существующий провайдер удостоверений к NocoBase, чтобы централизованно управлять пользовательскими удостоверениями на его стороне и повысить безопасность.

Двухфакторная аутентификация

Редакция Enterprise

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

Контроль доступа по IP

Редакция Enterprise

NocoBase поддерживает настройку чёрного списка или белого списка для IP-адресов доступа пользователей.

  • В строго защищённой среде можно настроить белый список IP, чтобы разрешить доступ к системе только с определённых IP или диапазонов IP, ограничив несанкционированные подключения из внешней сети и снизив риски безопасности на уровне источника.
  • При доступе из публичной сети, если администратор обнаруживает аномальные обращения, можно настроить чёрный список IP, чтобы блокировать известные вредоносные IP-адреса или обращения из подозрительных источников, снижая угрозы, такие как вредоносное сканирование и подбор пароля полным перебором.
  • Для отклонённых запросов доступа сохраняются записи в логах.

Контроль прав доступа

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

Root пользователь

При первичной установке NocoBase приложение инициализирует root пользователя. Рекомендуется изменить данные root пользователя через переменные окружения системы, чтобы избежать злоупотреблений.

  • INIT_ROOT_USERNAME — имя пользователя root
  • INIT_ROOT_EMAIL — адрес электронной почты пользователя root
  • INIT_ROOT_PASSWORD — пароль пользователя root; задайте надёжный пароль.

При дальнейшей эксплуатации рекомендуется создать и использовать другие администраторские учетные записи и избегать прямого использования root пользователя для работы с приложением.

Роли и права

NocoBase контролирует права доступа пользователей к ресурсам через настройку ролей, выдачу прав ролям и привязку пользователей к соответствующим ролям. У каждого пользователя может быть несколько ролей, и пользователь может переключать роли, чтобы работать с ресурсами с разных перспектив. Если установлен плагин отделов, можно также привязывать роли и отделы, чтобы пользователи получали роли, привязанные к их отделам.

Права конфигурации системы

Права конфигурации системы включают следующие настройки:

  • Разрешать ли интерфейс конфигурации
  • Разрешать ли установку, включение и отключение плагинов
  • Разрешать ли конфигурацию плагинов
  • Разрешать ли очистку кэша и перезапуск приложения
  • Права конфигурации для каждого плагина

Права меню

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

Права данных

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

Глобальный контроль

Контроль на уровне таблиц и полей

Контроль области данных

Задайте область данных, с которой пользователи могут выполнять операции. Обратите внимание: область данных здесь отличается от области данных, настраиваемой в блоке. Область данных, настроенная в блоке, обычно используется только для фильтрации данных на клиентской части. Если нужно строго контролировать права доступа пользователей к ресурсам данных, это нужно настроить здесь — контроль выполняется сервером.

Безопасность данных

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

Хранение паролей

Пароли пользователей NocoBase шифруются и хранятся с использованием алгоритма scrypt, что эффективно защищает от крупномасштабных аппаратных атак.

Переменные окружения и ключи

При использовании сторонних сервисов в NocoBase рекомендуется переносить ключи сторонних сервисов в переменные окружения и хранить их в зашифрованном виде. Это удобно для конфигурации и использования в разных местах и также повышает безопасность. Подробные способы использования см. в соответствующей документации.

Warning

По умолчанию ключ шифруется с использованием алгоритма AES-256-CBC. NocoBase автоматически генерирует 32-битный ключ шифрования и сохраняет его в storage/.data/environment/aes_key.dat. Пользователи должны надежно хранить файл ключа, чтобы предотвратить его кражу. Если требуется миграция данных, файл ключа необходимо переносить вместе с данными.

Хранение файлов

Если требуется хранить чувствительные файлы, рекомендуется использовать облачное хранилище, совместимое с протоколом S3, и коммерческий плагин «Движок хранения: S3», чтобы обеспечить приватное чтение и запись файлов. Если нужно использовать во внутренней сети, рекомендуется использовать решения для хранения, поддерживающие приватное развёртывание и совместимые с S3 — например MinIO.

Резервное копирование приложения

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

В редакции Community (открытый исходный код) можно использовать инструменты СУБД для резервного копирования, см. https://www.nocobase.com/en/blog/nocobase-backup-restore. Также рекомендуется надёжно хранить файлы резервных копий, чтобы предотвратить утечки данных.

В редакциях Professional и выше можно использовать менеджер резервного копирования. Он предоставляет следующие возможности:

  • Плановое автоматическое резервное копирование: регулярные автоматические резервные копии экономят время и снижают количество ручных операций, а безопасность данных повышается.
  • Синхронизация файлов резервных копий в облачное хранилище: изоляция файлов резервных копий от сервиса приложения, чтобы избежать потери резервных копий при недоступности сервиса из-за сбоя сервера.
  • Шифрование файлов резервных копий: установка пароля на файлы резервных копий, чтобы снизить риск утечки данных при компрометации файлов резервных копий.

Безопасность среды выполнения

Правильное развёртывание NocoBase и обеспечение безопасности среды выполнения — один из ключевых факторов безопасности приложений NocoBase.

Развёртывание HTTPS

Чтобы предотвратить атаки типа «человек посередине», рекомендуется установить сертификат SSL/TLS для сайта приложения NocoBase, чтобы обеспечить безопасность передачи данных по сети.

Шифрование транспортного уровня API

Редакция Enterprise

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

Приватное развёртывание

По умолчанию NocoBase не требуется связываться со сторонними сервисами, и команда NocoBase не собирает какую-либо информацию пользователей. Подключение к серверу NocoBase требуется только для выполнения двух операций:

  1. Автоматическая загрузка коммерческих плагинов через платформу NocoBase Service.
  2. Онлайн-верификация личности и активация приложения для коммерческой редакции.

Если вы готовы пожертвовать некоторой степенью удобства, эти две операции также можно выполнить офлайн — без прямого подключения к серверу NocoBase.

NocoBase поддерживает полное развёртывание во внутренней сети; см.:

Изоляция нескольких сред

Доступно начиная с редакции Professional и выше

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

Аудит и мониторинг

Логи аудита

Редакция Enterprise

Функция логов аудита NocoBase записывает действия пользователей в системе. Записывая ключевые операции и поведение доступа пользователей, администраторы могут:

  • Проверять информацию о доступе пользователей, например IP, устройство и время операции, чтобы своевременно выявлять аномалии.
  • Отслеживать историю операций с ресурсами данных в системе.

Логи приложения

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

  • Логи запросов: записи запросов к API, включая адреса URL, методы протокола HTTP, параметры запросов, время ответа и коды состояния.
  • Системные логи: записи событий работы приложения, включая запуск сервиса, изменения конфигурации, сообщения об ошибках и ключевые операции.
  • SQL-логи: записи операторов базы данных и времени их выполнения, включая операции выборки, обновления, вставки и удаления.
  • Логи рабочего процесса: логи выполнения рабочего процесса, включая время выполнения, информацию о ходе выполнения и информацию об ошибках.