В Великобритании проводится большая реформа политики защиты данных, известная как GDPR. Для одного клиента нам нужно усилить аудит доступа к определенным серверам нашей командой поддержки и разработки. Я хочу знать не только, кто вошел в систему на удаленном рабочем столе сервера, но и почему. Я мог бы просто создать электронную таблицу Excel или запись в службе поддержки и просить людей заполнять их каждый раз при входе в систему, но на самом деле это недостаточно надежно.
В других средах я видел, что в момент входа на сервер (в форме входа в систему) отображается вторичная форма с вопросом, почему человек входит в систему. Вход в систему не разрешен, пока вторичная форма не будет заполнена.
Я искал такой продукт, но не могу его найти. Кто-нибудь может порекомендовать какие-либо решения?
Server Fault действительно не для рекомендаций по продукту. Был аналогичный вопрос в SF в 2013 году, и OP в итоге создал сценарий входа в систему, запрашивая причину, пока она не будет указана, то есть не пуста:
<!-- language: lang-vb --> ' Display an input dialog asking the reason for a login and writes it to the event viewer with information of the user. Const EVENT_TYPE = "Information" 'Available Values: Success, Error, Warning, Information Const EVENT_SOURCE = "LoginAudit" 'Setting the event source requires that the script runs with administrative privileges firstname = GetUserFirstname() username = GetUsername() loginReason = "" Do While (loginReason = "") loginReason = InputBox("Hi " + firstname + ", please describe the reason of your login:", "Login Audit") Loop eventDescription = "User '" & username & "' logged in, providing the following reason: " & Chr(13) & Chr(13) & loginReason Set WshShell = WScript.CreateObject("WScript.Shell") strCommand = "eventcreate /T " & EVENT_TYPE & " /ID 100 /L Application /SO LoginAudit /D " & _ Chr(34) & eventDescription & Chr(34) WshShell.Run strcommand Function GetUserFirstname() Set objSysInfo = CreateObject("ADSystemInfo") Set objCurrentUser = GetObject("LDAP://" & objSysInfo.UserName) GetUserFirstname = objCurrentUser.givenName End Function Function GetUsername() Set objNetwork = CreateObject("Wscript.Network") GetUsername = objNetwork.UserName End Function
Вы можете изменить это в соответствии со своими потребностями. Я думаю, что этот подход с открытой формой поля привлекает однобуквенные ответы вместо реальных причин. Выпадающее меню могло бы быть лучше, если бы все действия соответствовали известным стандартным процедурам. Поскольку это часть работы, связанной с GDPR, вы, вероятно, уже думали об этих процедурах для обработки личная информация.