Как узнать дату создания пользователя информационной базы 1С и выяснить, кто его создал?

Системный администратор 1С v8.3 (Обычные формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

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

Разберем природу хранения пользователей в платформе 1С:Предприятие, проанализируем разницу между системными и прикладными объектами, а также рассмотрим по шагам методы поиска даты создания и автора учетной записи.

Разделение понятий: пользователь информационной базы и элемент справочника

Для правильного проведения расследования важно понимать фундаментальное архитектурное различие между двумя сущностями:

  1. Пользователь информационной базы (объект ПользовательИнформационнойБазы): это системная учетная запись платформы, хранящаяся во внутренней таблице базы данных (v8users). Именно она отвечает за аутентификацию (логин, пароль, аутентификация Windows), назначение административных ролей и интерфейсов. Сама по себе эта системная запись не содержит реквизитов вроде даты создания или автора изменения.
  2. Элемент справочника Справочник.Пользователи: прикладной объект конфигурации (например, в УТ 10.3 или других типовых решениях), предназначенный для хранения персональных данных сотрудника, его настроек отчетов, подразделения и прав на уровне прикладной логики.

В конфигурациях на обычных формах (таких как «Управление торговлей 10.3») создание пользователя через «Конфигуратор» создает только системную учетную запись. Элемент справочника создается позже — программно при первом интерактивном входе сотрудника в режиме «1С:Предприятие». Поэтому дата создания элемента справочника показывает лишь момент первого входа, а не дату создания учетной записи в конфигураторе.

Поиск даты и факта создания через журнал регистрации 1С

Проанализируем стандартные возможности аудита платформы. Платформа 1С фиксирует системные действия над учетными записями в журнале регистрации.

Разберем по шагам, как найти запись о создании:

  1. Откроем журнал регистрации через пункт меню «Администрирование» — «Журнал регистрации» (или через конфигуратор).
  2. Настроим отбор по событиям. Нам требуется событие системного уровня: «Пользователи. Добавление» (в низкоуровневом представлении — _$User$_.New). Не путайте его с событием Данные. Добавление для объекта Справочник.Пользователи, так как оно фиксирует лишь появление прикладного элемента.
  3. Установим предполагаемый интервал дат и выполним поиск.

При анализе найденного события обратим внимание на важную особенность: колонка «Данные» для системного события добавления пользователя всегда остается пустой. Это нормальное поведение платформы, так как системный пользователь не является ссылочным объектом базы данных. Имя созданной учетной записи платформы следует искать в колонках «Представление данных» или «Комментарий».

Вычисление даты создания по UUID пользователя ИБ

Рассмотрим ситуацию, когда журнал регистрации за нужный период был очищен или усечен. В этом случае точную дату и время генерации учетной записи можно восстановить из уникального идентификатора (UUID) пользователя.

По умолчанию платформа 1С генерирует идентификаторы по стандарту UUID Version 1 (time-based). Если в строковом представлении идентификатора без дефисов 13-й символ равен 1, значит, в нем закодирована метка времени создания.

Посмотрим на алгоритм извлечения метки времени из идентификатора пользователя:

  1. Получаем уникальный идентификатор системного пользователя с помощью вызова встроенного языка: Идентификатор = ПользовательИБ.УникальныйИдентификатор;
  2. В 32-символьной шестнадцатеричной строке переставляем байты времени: сначала берутся символы с 13 по 16 (старшая часть времени time_hi без битов версии), затем с 9 по 12 (средняя часть time_mid), и в конце — с 1 по 8 (младшая часть time_low).
  3. Полученное шестнадцатеричное значение преобразуется в 60-битное целое число, которое отражает количество 100-наносекундных интервалов, прошедших с 15 октября 1582 года.
  4. Делением на 10 000 000 получаем секунды и прибавляем их к начальной точке отсчета с учетом местного часового пояса. В результате мы получаем точный момент генерации учетной записи вплоть до секунды.

Определение автора: сквозной аудит через 1С и сеансы RDP

Если несколько администраторов имеют полные права или входят в 1С под общими административными учетными записями, определение конкретного человека требует сопоставления логов 1С и операционной системы терминального сервера (RDP).

Разберем по шагам методику сквозного поиска:

  1. Анализ сеанса в 1С: найдя в журнале регистрации событие Пользователи. Добавление, фиксируем точное время, номер сеанса (Сессия) и приложение (например, «Конфигуратор»). Отфильтровав журнал по этому номеру сессии назад во времени, находим событие Сеанс.Начало. В его деталях платформа указывает имя пользователя операционной системы (ПользовательОС), в контексте которого был запущен клиент 1С.
  2. Сопоставление с журналами Windows Server: терминальное подключение по RDP не скрывает инициатора. На сервере в системном журнале Security событие с кодом 4624 (тип входа 10 — RemoteInteractive) фиксирует доменное имя, логин Windows и реальный IP-адрес рабочей станции (Source Network Address), с которой выполнялось подключение.
  3. Анализ журнала TerminalServices: в системном журнале Microsoft-Windows-TerminalServices-LocalSessionManager/Operational события с кодами 21 (вход в сессию) и 25 (переподключение) содержат точный идентификатор терминальной сессии, логин учетной записи Windows и сетевой адрес клиентской машины.
  4. Сопоставляя секунду создания учетной записи в 1С с активными RDP-сессиями на терминальном сервере, мы получаем сетевой адрес физического компьютера и учетную запись сотрудника, совершившего операцию.

Альтернативный метод: анализ архивных копий

Если журналы недоступны, проанализируем ситуацию путем пакетной проверки резервных копий информационной базы (дампов или файлов 1Cv8.1CD):

  1. Развернем последовательные копии базы за интересующий интервал дат.
  2. С помощью программного кода получим список пользователей:
    
    СписокПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
    Для Каждого ТекПользователь Из СписокПользователей Цикл
        // Проверяем наличие искомого логина
    КонецЦикла;
    
  3. Момент первого появления искомого имени пользователя между соседними архивами позволит локализовать временное окно инцидента до нескольких часов или суток, что существенно упростит дальнейший аудит оставшихся логов операционной системы.
← На главную