Разделить полные права и администрирование. БСП
Ужасной архитектурной ошибкой является совмещения «Полных прав» и права «Администрирование». Хотя полные права разумно и не включат в себя администрирование, но тем не менее, к ним всегда в БСП добавляется роль «Администрирование». Создать пользователя, у которого только «Полные права» нельзя.
Часто на облаках, где много баз разных организаций, требуется выдать полные права, но ограничить возможность забирать базу через выгрузку в DT и через выгрузку в сервис. Помочь решить эту проблему и другие опасности совмещения прав помогает эта разработка.
Создание профиля «Только полные права»
Но это легко поправить расширением модуля справочника ПрофилиГруппДоступа:
&После("ПередЗаписью") Процедура оппп_ПередЗаписью(Отказ) Если Наименование = "Только полные права" Тогда ЭтотОбъект.Роли.Очистить(); РольПолныеПрава = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Метаданные.Роли.ПолныеПрава); Нстр = ЭтотОбъект.Роли.Добавить(); Нстр.Роль = РольПолныеПрава; КонецЕсли; КонецПроцедуры
Теперь пользователя можно включать в группу «Только полные права»:
Если профиля «Только полные права» в системе нет, он будет создан расширением при старте приложения:
Процедура СоздатьПрофильТолькоПолныеПрава() Экспорт УстановитьПривилегированныйРежим(Истина); //Создаем профиль "Только полные права" Иск = Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию("Только полные права"); Если Иск.Пустая() Тогда ОО = Справочники.ПрофилиГруппДоступа.СоздатьЭлемент(); ОО.Наименование = "Только полные права"; ОО.Записать(); КонецЕсли; КонецПроцедуры
Проверка работы в режиме Предприятие
Абсолютными правами теперь обладает пользователь с профилем «Администратор». Проверка наличия абсолютных прав осуществляется через код:
Функция ЕстьАбсолютныеПрава() Экспорт Возврат ПравоДоступа("Администрирование", Метаданные); КонецФункции
При попытке выгрузки в сервис выдается сообщение:
Через подписку «Перед записью» защищены от изменений справочники:
- Пользователи
- Профили групп доступа
- Группы доступа
При попытке изменения этих объектов выдается сообщение об ошибке:
Для записи объекта: Кладовщик типа: Справочник объект: Профили групп доступа нужны абсолютные права!
У пользователя нет администраторских прав, поэтому ему не доступны административные функции.
Он не может отключить расширение:
Также нельзя будет в режиме Предприятия изменить пароль пользователя.
Проверка работы в конфигураторе
В конфигураторе при попытке открыть конфигурацию, выгрузить или загрузить информационную базу, редактирования пользователей будет выдано сообщение об ошибке:
Проверка работы в привилегированном режиме
Попробуем изменить роли пользователя кодом в консоли кода:
УстановитьПривилегированныйРежим(Истина); ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь(); Сообщить(ТекущийПользователь.Имя); ТекущийПользователь.Роли.Добавить(Метаданные.Роли.АдминистраторСистемы); ТекущийПользователь.Записать();
Ошибки не возникает, но роль не добавляется, даже в привилегированном режиме. Тут 1С реализовала хорошо в платформе.
В справке по объекту ПользовательИнформационнойБазы написано:
Если текущий пользователь информационной базы не обладает административными правами, он может изменить только ограниченный набор сведений (свойства объекта) о себе (ПолноеИмя, Язык, Пароль). При изменении этих свойств остальные свойства сохраняют свои значения.
Создание и назначение профиля пользователям
Профиль «Только полные права» создается автоматически при запуске 1С. Для обновлятора можно использовать вызов процедуры:
оппп_С.СоздатьПрофильТолькоПолныеПрава()
Не закрытые риски
Пользователю можно запретить внешние отчеты и обработки, тогда он не сможет запускать их.
Но он может добавить их в дополнительные внешние обработки и выгрузить, например, данные из базы.
Планируется в будущих версиях сделать возможность закрывать добавление дополнительных внешних отчетов и обработок.
Версии:
24.10.1501: БП 3.0.161.22, 8.3.24.1667
Купить у меня за 2000 руб.
Свежие комментарии