Безопасное xранилище данных 1с

Любой уважающий себя администратор сети может с уверенностью сказать что хранение паролей у него находится на высоком уровне. Как минимум они не будут их хранить у себя на рабочем столе компьютера или в виде записок на мониторах. Чего к сожалению нельзя сказать о программистах 1с. Зачастую они не уделяют этому вопросу должного внимания.

Практически во всех конфигурациях, что я встречал, механизмы (не типовые, а написанные чудо-разработчиками), требующие авторизация пользователя, выглядят примерно вот так:

Конечно любой скажет: “Да какая разница, главное что работает, а доступ в конфигурацию имею только я! Да и кому нужен этот пароль или логин!. За последние 10 лет никто ничего не взламывал и еще 100 лет проработает!”. В принципе тут тяжело поспорить: и эта машина будет ехать. Но лучше все таки придерживаться стандартов и идти в ногу со временем.

На всем известном сайте https://its.1c.ru этой проблеме уделена целая статья “Безопасное хранение паролей”. Все нюансы и тонкости можете изучить в этой статье, здесь же остановимся на основных её принципах реализации.

Это решение есть во многих конфигурациях, в которое она перешла из конфигурации “Библиотека стандартных подсистем”.

Объект конфигурации. Все доступы хранятся в регистре сведений “БезопасноеХранилищеДанных”, где измерение “Владелец” может принимать типы “Строка, СправочникСсылка, ПланОбменаСсылка”, а ресурс “Данные” это тип “ХранилищеЗначения”. Причем по алгоритму в этом хранилище значений у нас будет лежать структура:

Регистр сведений "БезопасноеХранилищеДанных"
Регистр сведений “БезопасноеХранилищеДанных”

Функции и процедуры. Работа с этим регистров сведений построена на 1 функции “ПрочитатьДанныеИзБезопасногоХранилища” и 2 процедур “ЗаписатьДанныеВБезопасноеХранилище”, “УдалитьДанныеИзБезопасногоХранилища”:

Плюс одна дополнительная функция “ДанныеИзБезопасногоХранилища”:

Вот в принципе и вся архитектура хранения паролей. Один из важных нюансов, описанных в статье на сайте 1с: “Установка привилегированного режима производится непосредственно перед вызовом функций, а не внутри них, что бы исключить получение или запись любых паролей в сеансе с любыми правами“.

Используя этот механизм можно построить свою схему установки паролей, чтения и т.д. Ну и что бы стало совсем уж все понятно:

Так же можете посмотреть и решение в типовой конфигурации “Библиотека стандартных подсистем”, скачав её с сайта 1с или по этой ссылке craft1c_Демонстрационная конфигурация Библиотека стандартных подсистем, редакция 3.0 (3.0.2.264).

Надеюсь что благодаря этому механизму я все меньше и меньше буду видеть логины и пароли в модулях конфигураций. Всем удачи! Программируйте красиво!

0

1 комментарий

  1. Василь

    о! самое время разобраться с такими паролями в своей конфе.

    0

Оставить комментарий

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