Безопасность¶
Инициализация¶
При первичной настройке безопасности необходимо выполнить следующее:
- Синхронизировать права, чтобы права, заведенные через утилиту acl, появились в админке. Для этого на странице
/ionadmin/security/sync
жмем кнопку"Синхронизация прав доступа"
.
По завершении будет сообщение "Синхронизация прав доступа успешно проведена!"
.
- Сделать импорт ресурсов. Если на странице
/ionadmin/security/resource
нет объектов или их действительно мало, тогда надо выполнить импорт ресурсов.
Выполняется на странице /ionadmin/security/sync
по кнопке "Импорт ресурсов"
.
По завершении будет сообщение "Импорт успешно завершен!"
.
Управление ролями¶
На странице /ionadmin/security/role
можно создавать, редактировать или удалять роли:
- Создание роли. Для создания роли на странице
/ionadmin/security/role
нажимаем кнопку «Создать»
Происходит переход на новую страницу, где надо указать идентификатор роли на английском языке. Нажимаем на кнопку «Сохранить» для подтверждения создания указанной роли
- Редактирование роли. Для редактирования роли на странице
/ionadmin/security/role
выбираем необходимую роль и нажимаем кнопку «Править»
Происходит переход на новую страницу, где на форме отображаются следующие поля:
Идентификатор
- выражение на английском языке для присваивания уникального имени роли. При ее изменении могут слететь права у пользователей, которые ранее привязали данную роль со старым идентификатором. В таком случае, необходимо каждому пользователю привязать роль заново.
Название
- осмысленное название роли, может содержать выражения на русском языке.
Права доступа
- вкладки для раздачи прав:
- Общие - используется для раздачи роли доступа ко всем ресурсам (* - все ресурсы)
- Навигация - используется для раздачи роли доступа к меню модуля регистра. Сначала отображается системное наименование проекта, у которого есть знак плюса для отображения внутренних и импортированных ресурсов. Раздаются в данном пункте пока только права на чтение меню.
- Классы - используется для раздачи роли доступа к классам метаданных. Сначала отображается системное наименование проекта, у которого есть знак плюса для отображения внутренних и импортированных ресурсов. У этих ресурсов можно задать отдельные права по каждому ресурсу.
- Удаление роли. Для удаления роли на странице
/ionadmin/security/role
выбираем необходимую роль и нажимаем кнопку «Удалить»
Подтверждаем удаление роли:
Доступ к ресурсу¶
При управлении ролями в правах доступа предоставляются следующие доступы к каждому ресурсу:
Доступ | Описание доступа |
---|---|
Полный доступ | Включает в себя все остальные доступы. Нельзя выбрать полный доступ и еще дополнительный доступ на чтение, запись, удаление или использование. Для навигации предоставляется доступ только на чтение ресурса. |
Чтение | Возможность чтение объектов ресурса |
Запись | Возможность редактирования объектов ресурса, не применяется для навигации |
Удаление | Возможность удаления объектов ресурса, не применяется для навигации |
Использование | Возможность создания объектов ресурса, не применяется для навигации |
Доступ может назначаться всей группе ресурсов или отдельно каждому ресурсу и доступу в нем.
Управление пользователями¶
На странице /ionadmin/security/user
можно создавать, редактировать или удалять пользователей:
- Создание пользователя. Для создания пользователя на странице
/ionadmin/security/user
нажимаем кнопку «Создать»
Происходит переход на новую страницу, где надо указать логин пользователя на английском языке, пароль, описание в имени. Нажимаем на кнопку «Сохранить» для подтверждения создания указанного пользователя
- Редактирование пользователя. Для редактирования пользователя на странице
/ionadmin/security/user
выбираем необходимого пользователя и нажимаем кнопку «Править»
Происходит переход на новую страницу, где на форме отображаются следующие поля:
Тип
- тип учетной записи пользователя, пока доступны в админке локальные пользователи.
Логин
- идентификатор пользователя на английском языке.
Пароль
- пароль пользователя.
Имя
- осмысленное название пользователя, может содержать выражения на русском языке, например, Фамилия И.О.
Роли
- список ролей пользователя. Если проставлена галка у роли, то роль привязана к пользователю.
- Удаление пользователя. Для удаления пользователя на странице
/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]]" // продолжительность блокировки
}
}
}
}
}