В процессе администрирования 1С периодически возникают ситуации, когда в системе появляется новая учетная запись, созданная в обход стандартных регламентов согласования прав. При этом возникает задача расследования инцидента: необходимо точно выяснить момент появления системного пользователя информационной базы и вычислить сотрудника, который выполнил данное действие.
Разберем природу хранения пользователей в платформе 1С:Предприятие, проанализируем разницу между системными и прикладными объектами, а также рассмотрим по шагам методы поиска даты создания и автора учетной записи.
Для правильного проведения расследования важно понимать фундаментальное архитектурное различие между двумя сущностями:
ПользовательИнформационнойБазы): это системная учетная запись платформы, хранящаяся во внутренней таблице базы данных (v8users). Именно она отвечает за аутентификацию (логин, пароль, аутентификация Windows), назначение административных ролей и интерфейсов. Сама по себе эта системная запись не содержит реквизитов вроде даты создания или автора изменения.Справочник.Пользователи: прикладной объект конфигурации (например, в УТ 10.3 или других типовых решениях), предназначенный для хранения персональных данных сотрудника, его настроек отчетов, подразделения и прав на уровне прикладной логики.В конфигурациях на обычных формах (таких как «Управление торговлей 10.3») создание пользователя через «Конфигуратор» создает только системную учетную запись. Элемент справочника создается позже — программно при первом интерактивном входе сотрудника в режиме «1С:Предприятие». Поэтому дата создания элемента справочника показывает лишь момент первого входа, а не дату создания учетной записи в конфигураторе.
Проанализируем стандартные возможности аудита платформы. Платформа 1С фиксирует системные действия над учетными записями в журнале регистрации.
Разберем по шагам, как найти запись о создании:
_$User$_.New). Не путайте его с событием Данные. Добавление для объекта Справочник.Пользователи, так как оно фиксирует лишь появление прикладного элемента.При анализе найденного события обратим внимание на важную особенность: колонка «Данные» для системного события добавления пользователя всегда остается пустой. Это нормальное поведение платформы, так как системный пользователь не является ссылочным объектом базы данных. Имя созданной учетной записи платформы следует искать в колонках «Представление данных» или «Комментарий».
Рассмотрим ситуацию, когда журнал регистрации за нужный период был очищен или усечен. В этом случае точную дату и время генерации учетной записи можно восстановить из уникального идентификатора (UUID) пользователя.
По умолчанию платформа 1С генерирует идентификаторы по стандарту UUID Version 1 (time-based). Если в строковом представлении идентификатора без дефисов 13-й символ равен 1, значит, в нем закодирована метка времени создания.
Посмотрим на алгоритм извлечения метки времени из идентификатора пользователя:
Идентификатор = ПользовательИБ.УникальныйИдентификатор;
time_hi без битов версии), затем с 9 по 12 (средняя часть time_mid), и в конце — с 1 по 8 (младшая часть time_low).Если несколько администраторов имеют полные права или входят в 1С под общими административными учетными записями, определение конкретного человека требует сопоставления логов 1С и операционной системы терминального сервера (RDP).
Разберем по шагам методику сквозного поиска:
Пользователи. Добавление, фиксируем точное время, номер сеанса (Сессия) и приложение (например, «Конфигуратор»). Отфильтровав журнал по этому номеру сессии назад во времени, находим событие Сеанс.Начало. В его деталях платформа указывает имя пользователя операционной системы (ПользовательОС), в контексте которого был запущен клиент 1С.4624 (тип входа 10 — RemoteInteractive) фиксирует доменное имя, логин Windows и реальный IP-адрес рабочей станции (Source Network Address), с которой выполнялось подключение.Microsoft-Windows-TerminalServices-LocalSessionManager/Operational события с кодами 21 (вход в сессию) и 25 (переподключение) содержат точный идентификатор терминальной сессии, логин учетной записи Windows и сетевой адрес клиентской машины.Если журналы недоступны, проанализируем ситуацию путем пакетной проверки резервных копий информационной базы (дампов или файлов 1Cv8.1CD):
СписокПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого ТекПользователь Из СписокПользователей Цикл
// Проверяем наличие искомого логина
КонецЦикла;