Регистрировать изменения прав доступа в 1С:ERP
Как в 1С:ERP Управление предприятием 2 (и других конфигурациях на БСП) устроен аудит изменений прав: что именно пишется в журнал регистрации, где включить настройку и какие отчёты помогают разобрать историю.
Механизм входит в подсистему «Контроль работы пользователей» библиотеки стандартных подсистем. Он не меняет сами права — только фиксирует, кто и что изменил в настройках доступа.
- Константа
РегистрироватьИзмененияПравДоступа - События уровня Информация в журнале регистрации
- Данные события — XML со структурой изменений
- Анализ — через отчёты раздела «Администрирование»
Что фиксируется в журнале
Участники групп пользователей и групп внешних пользователей
Участники групп доступа, сроки действия, смена профиля
Разрешённые значения групп доступа: виды доступа, значения, «включая нижестоящие»
Роли профилей групп доступа
Права ролей — при изменении идентификаторов объектов метаданных, связанных с ролями
Изменения используемых видов доступа в регистре сведений
Где включается настройка
В ERP путь такой: НСИ и администрирование → Администрирование → Настройки пользователей и прав (обработка ПанельАдминистрированияБСП, форма НастройкиПользователейИПрав).
Флажок в панели
Установите «Регистрировать изменения прав доступа». Подсказка к полю прямо перечисляет охват: группы пользователей, группы доступа, профили, роли.
Константа
Значение хранится в константе РегистрироватьИзмененияПравДоступа (тип Булево). Чтение выполняется в привилегированном режиме модулем КонтрольРаботыПользователейСлужебный.
Отчёты
Рядом есть гиперссылка «Контроль работы пользователей» — открывается панель отчётов подсистемы Администрирование с вариантами анализа журнала.
Как это работает внутри ERP
Проверка условий
Функция ПользователиСлужебный. РегистрироватьИзмененияПравДоступа() возвращает Истина только если включена константа и в журнале разрешена регистрация уровня Информация.
Сравнение «было / стало»
Перед записью сохраняются старые значения. Для каждого изменения вычисляется вид: Добавлено, Удалено или Изменено.
Запись в журнал
Вызывается ЗаписьЖурналаРегистрации с уровнем Информация и XML-представлением структуры данных. Запись транзакционная.
Отчёты БСП
Специализированные отчёты читают журнал за период и показывают изменения в удобном для администратора виде.
События журнала регистрации
Точки срабатывания в конфигурации
Справочник ГруппыДоступа
В ПриЗаписи объекта, если регистрация включена, вызываются процедуры фиксации участников и разрешённых значений. Даже при обмене данными запись в журнал выполняется до проверки ОбменДанными.Загрузка.
Справочник ПрофилиГруппДоступа
При записи профиля дополнительно регистрируются изменения ролей, участников связанных групп доступа и разрешённых значений.
Регистр СоставыГруппПользователей
Модуль набора записей в ПередЗаписью читает старые строки из БД, в ПриЗаписи сравнивает с новыми и передаёт дельту в общий регистратор.
Подписки на события УправлениеДоступом
При изменении объектов, участвующих в ограничении доступа на уровне записей, подписки ОбновитьГруппыЗначенийДоступаПередЗаписью/ПриЗаписи сохраняют старые значения групп доступа и регистрируют их изменение.
Пример из кода ERP: проверка перед записью в журнал
Упрощённая цепочка вызовов из выгрузки конфигурации
// КонтрольРаботыПользователейСлужебный
Функция РегистрироватьИзмененияПравДоступа() Экспорт
УстановитьПривилегированныйРежим(Истина);
Результат = Константы.РегистрироватьИзмененияПравДоступа.Получить();
УстановитьПривилегированныйРежим(Ложь);
Возврат Результат;
КонецФункции
// ПользователиСлужебный
Функция РегистрироватьИзмененияПравДоступа() Экспорт
Возврат ПользователиСлужебныйПовтИсп.РегистрироватьИзмененияПравДоступа()
И ВключенаЗаписьИнформацииВЖурнал();
КонецФункции
// ГруппыДоступа.ПриЗаписи
Если ПользователиСлужебный.РегистрироватьИзмененияПравДоступа() Тогда
Справочники.ГруппыДоступа.ЗарегистрироватьИзменениеУчастниковГруппДоступа(ЭтотОбъект, СтарыеЗначения);
Справочники.ГруппыДоступа.ЗарегистрироватьИзменениеРазрешенныхЗначений(ЭтотОбъект, СтарыеЗначения);
КонецЕсли;
Пример: запись события в журнал
Фрагмент ГруппыДоступа.ЗарегистрироватьИзменениеРазрешенныхЗначений
ИмяСобытия = УправлениеДоступомСлужебный.ИмяСобытияИзменениеРазрешенныхЗначенийДляЖурналаРегистрации();
// "Управление доступом.Изменение разрешенных значений"
ЗаписьЖурналаРегистрации(
ИмяСобытия,
УровеньЖурналаРегистрации.Информация,
МетаданныеОбъекта,
ОбщегоНазначения.ЗначениеВСтрокуXML(Данные),
,
РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);
В Данные передаётся структура с версией формата, источником изменения, массивами изменений видов/значений доступа, представлениями групп и навигационными ссылками на объекты.
Отчёты для анализа
Изменение участников групп пользователей
История включения/исключения пользователей из групп, в том числе через иерархию.
Изменение участников групп доступа
Кто добавлен или удалён из группы доступа, с учётом косвенных изменений через группы пользователей.
Изменение разрешённых значений
Какие организации, склады, подразделения и другие значения доступа менялись в профилях и группах.
Изменение ролей профилей
Добавление и удаление ролей в профилях, влияющих на права пользователей.
Анализ журнала регистрации
Общий отчёт подсистемы контроля с критичными и информационными событиями.
С регистрацией и без неё
Практическая разница для администратора и аудитора
Без настройки
Остаётся только стандартный журнал по объектам, без структурированного XML и специализированных отчётов БСП.
Сложно быстро ответить, кто расширил доступ к организации или добавил роль в профиль.
Загрузка из другой базы не сопровождается детальным аудитом прав.
С включённой регистрацией
Каждое значимое изменение прав попадает в журнал с детализацией «было / стало».
Администратор строит отчёт за период без ручного разбора XML.
Упрощает внутренний аудит и разбор обращений «у меня внезапно появились права».
Вступайте в нашу телеграмм-группу Инфостарт