Разделить полные права и администрирование. БСП

Ужасной архитектурной ошибкой является совмещения «Полных прав» и права «Администрирование». Хотя полные права разумно и не включат в себя администрирование, но тем не менее, к ним всегда в БСП добавляется роль «Администрирование». Создать пользователя, у которого только «Полные права» нельзя.

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

Создание профиля «Только полные права»

Но это легко поправить расширением модуля справочника ПрофилиГруппДоступа:

&После("ПередЗаписью")
Процедура оппп_ПередЗаписью(Отказ)
	Если Наименование = "Только полные права" Тогда 
		ЭтотОбъект.Роли.Очистить();
		РольПолныеПрава = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Метаданные.Роли.ПолныеПрава);
		Нстр = ЭтотОбъект.Роли.Добавить();
		Нстр.Роль = РольПолныеПрава;
	КонецЕсли;
КонецПроцедуры

Теперь пользователя можно включать в группу «Только полные права»:

Если профиля «Только полные права» в системе нет, он будет создан расширением при старте приложения:

Процедура СоздатьПрофильТолькоПолныеПрава() Экспорт 
	УстановитьПривилегированныйРежим(Истина);
	//Создаем профиль "Только полные права"
	Иск = Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию("Только полные права");
	Если Иск.Пустая() Тогда
		ОО = Справочники.ПрофилиГруппДоступа.СоздатьЭлемент();
		ОО.Наименование = "Только полные права";
		ОО.Записать();
	КонецЕсли;
КонецПроцедуры

Проверка работы в режиме Предприятие

Абсолютными правами теперь обладает пользователь с профилем «Администратор». Проверка наличия абсолютных прав осуществляется через код:

Функция ЕстьАбсолютныеПрава() Экспорт
	Возврат ПравоДоступа("Администрирование", Метаданные);
КонецФункции

При попытке выгрузки в сервис выдается сообщение:

Через подписку «Перед записью» защищены от изменений справочники:

  • Пользователи
  • Профили групп доступа
  • Группы доступа

При попытке изменения этих объектов выдается сообщение об ошибке:

Для записи объекта: Кладовщик типа: Справочник объект: Профили групп доступа нужны абсолютные права!

У пользователя нет администраторских прав, поэтому ему не доступны административные функции.

Он не может отключить расширение:

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

Проверка работы в конфигураторе

В конфигураторе при попытке открыть конфигурацию, выгрузить или загрузить информационную базу, редактирования пользователей будет выдано сообщение об ошибке:

Проверка работы в привилегированном режиме

Попробуем изменить роли пользователя кодом в консоли кода:

УстановитьПривилегированныйРежим(Истина);
ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
Сообщить(ТекущийПользователь.Имя);
ТекущийПользователь.Роли.Добавить(Метаданные.Роли.АдминистраторСистемы);
ТекущийПользователь.Записать();

Ошибки не возникает, но роль не добавляется, даже в привилегированном режиме. Тут 1С реализовала хорошо в платформе.

В справке по объекту ПользовательИнформационнойБазы написано:

Если текущий пользователь информационной базы не обладает административными правами, он может изменить только ограниченный набор сведений (свойства объекта) о себе (ПолноеИмя, Язык, Пароль). При изменении этих свойств остальные свойства сохраняют свои значения.

Создание и назначение профиля пользователям

Профиль «Только полные права» создается автоматически при запуске 1С. Для обновлятора можно использовать вызов процедуры:

оппп_С.СоздатьПрофильТолькоПолныеПрава()

Не закрытые риски

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

Но он может добавить их в дополнительные внешние обработки и выгрузить, например, данные из базы.

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

Версии:

24.10.1501: БП 3.0.161.22, 8.3.24.1667

Купить у меня за 2000 руб.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *