Безопасность

Инициализация

При первичной настройке безопасности необходимо выполнить следующее:

  1. Синхронизировать права, чтобы права, заведенные через утилиту acl, появились в админке. Для этого на странице /ionadmin/security/sync жмем кнопку "Синхронизация прав доступа".

По завершении будет сообщение "Синхронизация прав доступа успешно проведена!".

  1. Сделать импорт ресурсов. Если на странице /ionadmin/security/resource нет объектов или их действительно мало, тогда надо выполнить импорт ресурсов.

Выполняется на странице /ionadmin/security/sync по кнопке "Импорт ресурсов".

По завершении будет сообщение "Импорт успешно завершен!".

Управление ролями

На странице /ionadmin/security/role можно создавать, редактировать или удалять роли:

  1. Создание роли. Для создания роли на странице /ionadmin/security/role нажимаем кнопку «Создать»

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

  1. Редактирование роли. Для редактирования роли на странице /ionadmin/security/role выбираем необходимую роль и нажимаем кнопку «Править»

Происходит переход на новую страницу, где на форме отображаются следующие поля:

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

Название - осмысленное название роли, может содержать выражения на русском языке.

Права доступа - вкладки для раздачи прав:

  • Общие - используется для раздачи роли доступа ко всем ресурсам (* - все ресурсы)
  • Навигация - используется для раздачи роли доступа к меню модуля регистра. Сначала отображается системное наименование проекта, у которого есть знак плюса для отображения внутренних и импортированных ресурсов. Раздаются в данном пункте пока только права на чтение меню.
  • Классы - используется для раздачи роли доступа к классам метаданных. Сначала отображается системное наименование проекта, у которого есть знак плюса для отображения внутренних и импортированных ресурсов. У этих ресурсов можно задать отдельные права по каждому ресурсу.
  1. Удаление роли. Для удаления роли на странице /ionadmin/security/role выбираем необходимую роль и нажимаем кнопку «Удалить»

Подтверждаем удаление роли:

Доступ к ресурсу

При управлении ролями в правах доступа предоставляются следующие доступы к каждому ресурсу:

Доступ Описание доступа
Полный доступ Включает в себя все остальные доступы. Нельзя выбрать полный доступ и еще дополнительный доступ на чтение, запись, удаление или использование. Для навигации предоставляется доступ только на чтение ресурса.
Чтение Возможность чтение объектов ресурса
Запись Возможность редактирования объектов ресурса, не применяется для навигации
Удаление Возможность удаления объектов ресурса, не применяется для навигации
Использование Возможность создания объектов ресурса, не применяется для навигации

Доступ может назначаться всей группе ресурсов или отдельно каждому ресурсу и доступу в нем.

Управление пользователями

На странице /ionadmin/security/user можно создавать, редактировать или удалять пользователей:

  1. Создание пользователя. Для создания пользователя на странице /ionadmin/security/user нажимаем кнопку «Создать»

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

  1. Редактирование пользователя. Для редактирования пользователя на странице /ionadmin/security/user выбираем необходимого пользователя и нажимаем кнопку «Править»

Происходит переход на новую страницу, где на форме отображаются следующие поля:

Тип - тип учетной записи пользователя, пока доступны в админке локальные пользователи.

Логин - идентификатор пользователя на английском языке.

Пароль - пароль пользователя.

Имя - осмысленное название пользователя, может содержать выражения на русском языке, например, Фамилия И.О.

Роли - список ролей пользователя. Если проставлена галка у роли, то роль привязана к пользователю.

  1. Удаление пользователя. Для удаления пользователя на странице /ionadmin/security/user выбираем необходимого пользователя и нажимаем кнопку «Удалить»

Подтверждаем удаление пользователя.

Настройки аутентификации пользователя. Требования к паролю.

Настройка требований к паролю задается в ini-файле приложения, после чего переменные необходимо объявить в файле настройки конфигурации приложения deploy.json.

В файле setup.ini:

auth.passwordLifeTime=90d # Максимальный срок действия пароля
auth.passwordMinPeriod=75d # Минимальный срок действия пароля
auth.passwordMinLength=8 # Минимальная длина пароля
auth.passwordJournalSize=5 # Число уникальных новых паролей пользователя до повторного использования старого пароля
auth.tempBlockInterval=30m # Время до сброса счетчика блокировки
auth.attemptLimit=6 # Количество неудачных попыток входа в систему, приводящее к блокировке учетной записи пользователя
auth.tempBlockPeriod=30m # Продолжительность блокировки учетной записи
auth.sessionLifeTime=4h # Время жизни авторизованной сессии, при отсутствии активности

Длительность везде задается в формате: [длительность][ед. изм]

Ед. измерения Значение
y Год
d День
h Час
m Минута
s Секунда

В файле deploy.json:

NB: Нужно обязательно, чтобы стояла настройка "parametrised": true, на уровне "global"
{
  "parametrised": true,
  "globals": {
    "plugins":{
      "auth": {
        "module": "lib/auth",
        "initMethod": "init",
        "initLevel": 2,
        "options": {
          "app": "ion://application",
          "logger": "ion://sysLog",
          "dataSource": "ion://Db",
          "acl": "ion://aclProvider",
          "passwordLifetime": "[[auth.passwordLifeTime]]", // максимальный срок действия пароля
          "passwordMinPeriod": "[[auth.passwordMinPeriod]]", // минимальный срок действия пароля
          "passwordMinLength": "[[auth.passwordMinLength]]", // минимальная длина пароля
          "passwordComplexity": { // требования к сложности пароля
            "upperLower": true, // требование использовать буквы в разном регистре
            "number": true, // требование использовать числа
            "special": true // требование использовать спецсимволы
          },
          "passwordJournalSize": "[[auth.passwordJournalSize]]", // ведение журнала паролей
          "tempBlockInterval": "[[auth.tempBlockInterval]]", // счетчик блокировки
          "attemptLimit": "[[auth.attemptLimit]]", // пороговое значение блокировки
          "tempBlockPeriod": "[[auth.tempBlockPeriod]]" // продолжительность блокировки
        }
      }
    }
  }
}