РазрешениеНаИспользованиеПривилегированногоРежима

1. RocKeR_13 1325 30.07.19 17:10 Сейчас в теме
Здравствуйте! Кто-нибудь в расширениях, подключенных в безопасном режиме, пробовал устанавливать привилегированный режим? База файловая; цель - считать данные из безопасного хранилища под пользователем без прав на чтение из РС "БезопасноеХранилищеДанных".

На текущий момент реализация следующая:

Контекст обработки расширения:

&НаКлиенте
Процедура ЗапроситьИспользованиеПривилегированногоРежима()
	
	Описание 	= НСтр("ru = 'Чтение пароля из безопасного хранилища.'");
	Разрешения 	= РазрешениеНаПривилегированныйРежим(Описание);
	Оповещение 	= Новый ОписаниеОповещения("ПолучениеРазрешенияПривилегированныйРежим_Завершение", ЭтотОбъект);
	РаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов(Разрешения, ЭтаФорма, Оповещение);
	
КонецПроцедуры

&НаСервере
Функция РазрешениеНаПривилегированныйРежим(Описание)
			
	МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме");
		
	ЗапросыРазрешений = Новый Массив;
	Разрешения = Новый Массив;
	Разрешения.Добавить( 
		МодульРаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима(Описание));
	ВладелецРазрешения = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Метаданные.РегистрыСведений.сэ_НастройкиИнтеграции.ПолноеИмя());
	ЗапросРазрешений = МодульРаботаВБезопасномРежиме.ЗапросНаИспользованиеВнешнихРесурсов(Разрешения, ВладелецРазрешения, Истина);
	ЗапросыРазрешений.Добавить(ЗапросРазрешений);
	
	Возврат ЗапросыРазрешений;
	
КонецФункции

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

&НаСервере
Процедура ОбновитьНастройкиСервер()
	НастройкиПодключения = РегистрыСведений.сэ_НастройкиИнтеграции.НастройкиИнтеграции(Организация);
	......
КонецПроцедуры
Показать


Контекст модуля менеджера регистра сведений "сэ_НастройкиИнтеграции":

Функция НастройкиИнтеграции(Организация) Экспорт
	
	УстановитьПривилегированныйРежим(Истина); - //привилегированный режим не установился....
	КлючДанных 	= "<ТутКлючДанных>";
 	Пароль 		= ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(КлючДанных); //в итоге - нет прав доступа на чтение из безопасного хранилища
	Результат.Вставить("Пароль", Пароль);
 	УстановитьПривилегированныйРежим(Ложь);
.....
	
КонецФункции

Показать


Или не получится это реализовать?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. VmvLer 30.07.19 17:32 Сейчас в теме
в расширениях установка привилегированного режима не работает.

но можно использовать "обертки"
создайте модуль в основной конфигурации и в методах этого модуля устанавливайте режим.
в расширении вызывайте эти методы
4. RocKeR_13 1325 30.07.19 17:35 Сейчас в теме
(2) Не, основную конфу "трогать" - не вариант, так бы проблем не было бы) Печально... Вроде во внешних обработках через параметры регистрации такое возможно, думал, что и в расширениях можно реализовать
5. VmvLer 30.07.19 17:37 Сейчас в теме
(4) можно добавить один общий модуль так, что все остальные объекты будут на замках.
7. VmvLer 30.07.19 17:45 Сейчас в теме
(4) такое ограничение сделано не зря.

Допустим злоумышленник создал расширение в котором устанавливается привилегированный режим для злонамеренных деяний.
он сам или кто-то устанавливает это расширение из приложения с заманчивым именем "мега-полезные инструменты для учета всего".
далее он совершает деяние и методами этого расширения стирает следы деяния, удаляет расширение типа - не понравилось пользователям или грузит уже "хорошее" с таким же именем.
очень плохо если расширения будут позволять так делать.

А вот если для такого необходимо писать код в основной конфигурации, то просто патчика будет мало и ничего не выйдет у хитроягодничного.
8. RocKeR_13 1325 30.07.19 17:46 Сейчас в теме
(7) Да, только вот http-запросы мне удалось вызывать из безопасного режима по тому же принципу) И почему тогда для внешних обработок такую лазейку оставили?
3. VmvLer 30.07.19 17:34 Сейчас в теме
да и методы префиксуйте как рекомендуют, чтобы можно было имени понять где метод основной конфигурации, а где расширяемый. Если игнорировать префиксы, то грабли неизбежны при компиляциях.
6. RocKeR_13 1325 30.07.19 17:44 Сейчас в теме
(3) это я в курсе, буду переименовывать и проблем с этим не вижу
(4) не вариант: расширение будет не для единичной установки
9. VmvLer 30.07.19 17:52 Сейчас в теме
у http-запросов "своя атмосфера" и это именно запросы, а не деструктивные модификаторы данных.
Тем более, что https и админы системы могут глушить дырки.

А внешние обработки - это одна сплошная рана в контексте безопасности данных.
Если эту рану позволить колупать с привилегиями еще и в расширении, то это уже не рана будет, а пушечная дыра.
10. RocKeR_13 1325 30.07.19 18:00 Сейчас в теме
(9) пушечная дыра - для клиент-серверного варианта, но там есть профили безопасности и вот в клиент-серверном варианте вообще без проблем устанавливается привилегированный режим в расширении, подключенном в безопасном режиме, если это расширение добавить в профиль безопасности. Те, кто в файловом варианте работают - сами на свой страх и риск все подключают/добавляют. Просто хотелось сделать что-то универсальное, не снимая галки "Безопасный режим"
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот