Помощь в аудите использования мобильного доступа NOMAD

21 0

Я был очень рад, когда купили DIRECTUM JAZZ. И затем очень удивлён отсутствием прозрачного отслеживания используемости, хотя все нужные данные есть, причём в таблицах SQL, а не в текстовых логах. В итоге, сделали для себя обложку с наглядным отображением информации по пользователям NOMAD.

Теперь за счёт визуальной подсветки видно, кому забыли удалённо данные на устройстве удалить при увольнении, кому недонастроили внешний вид, кто не обновил приложение или упорно просил дать ему доступ и не пользуется.

Чтобы сделать подобное вам понадобится работающий буфер обмена и минут 15 времени. Итак, по шагам:

1) Создаём сценарий. В нашем случае (используется в прикреплённом файле-обложке) имя INT_CoverNOMADDevices, заголовок "Сценарий для обложки Пользователи и устройства NOMAD", отнесён к модулю Утилиты администратора. Текст:

  TextHTML = ""
  CLOSED_USER_SOST_TEXT = 'Закрыт'
  NO_NOMAD_USER_TEXT = 'Нет'
  VALID_DEVICE_STATUS_TEXT = 'Разрешено'
  INVALID_DEVICE_STATUS_TEXT = 'Удалено'

// -------------------------- Информация по пользователям NOMAD и их устройствам
  Query = CreateQuery()
  Query.CommandText = "-- Информация по пользователям NOMAD и их устройствам
                      SELECT DISTINCT
                        usr.NameAn AS UserFIO
                        , CASE usr.Sost
                            WHEN 'Д' THEN 'Действующий'
                            ELSE '" & CLOSED_USER_SOST_TEXT & "'
                          END AS UserSost
                        , CASE nomad_dev.Status
                            WHEN 1 THEN '" & VALID_DEVICE_STATUS_TEXT & "'
                            ELSE '" & INVALID_DEVICE_STATUS_TEXT & "'
                          END AS DeviceStatus
                        , usr_comp.UserLogin AS UserLogin
                        , CASE
                            WHEN nomad_usr.Analit IS NULL THEN '" & NO_NOMAD_USER_TEXT & "'
                            ELSE 'Есть'
                          END AS HaveNOMADUser
                        , nomad_dev.CDID AS CDID
                        , nomad_dev.AppVersion AS JazzVersion
                        , nomad_dev.OSVersion AS OSVersion
                        , nomad_dev.Name AS DeviceName
                        , nomad_sessions.LastAccessTime AS LastAccessTime
                        , CASE
                            WHEN nomad_sessions.LastAccessTime IS NULL THEN '1'
                            WHEN DATEDIFF(day, nomad_sessions.LastAccessTime, GETDATE()) > 30 THEN '1'
                            ELSE '0'
                          END AS UserActivity
                      FROM
                        dbo.NOMADUserDevices nomad_dev
                        LEFT OUTER JOIN dbo.MBAnalit usr
                          ON usr.Analit = nomad_dev.UserID
                        LEFT OUTER JOIN dbo.MBUser usr_comp
                          ON usr.Dop = usr_comp.UserKod
                        LEFT OUTER JOIN dbo.MBAnalit nomad_usr
                          ON nomad_usr.Vid = " & ИДТипСпр('NOMADUsers') & " AND usr.Analit = nomad_usr.Polzovatel
                        LEFT OUTER JOIN dbo.NOMADSeance nomad_sessions
                          ON nomad_sessions.UserID = nomad_dev.UserID AND nomad_sessions.CDID = nomad_dev.CDID
                      ORDER BY
                        2 ASC, 1 ASC, 4 ASC, 3 ASC, 9 ASC"
  
  
  TextHTML = TextHTML & CR & 
    " <h4 nowrap='nowrap'>Информация по пользователям NOMAD и их устройствам</h4>
<table border=1>
<thead>
 <tr>
 <th>ФИО пользователя</th>
 <th>Состояние</th>
 <th>Статус устройства</th>
 <th>Логин пользователя</th>
 <th>Запись в справочнике Пользователи NOMAD</th>
 <th>CDID</th>
 <th>Версия ПО</th>
 <th>Версия ОС устройства</th>
 <th>Наименование устройства</th>
 <th>Дата последнего подключения устройства</th>
 </tr>
</thead>
<tbody>"
  Query.Open
  Query.First
  while not Query.EOF
    UserFIO = Query.Fields("UserFIO").AsString
    UserSost = Query.Fields("UserSost").AsString
    DeviceStatus = Query.Fields("DeviceStatus").AsString
    UserLogin = Query.Fields("UserLogin").AsString
    HaveNOMADUser = Query.Fields("HaveNOMADUser").AsString
    CDID = Query.Fields("CDID").AsString
    JazzVersion = Query.Fields("JazzVersion").AsString
    OSVersion = Query.Fields("OSVersion").AsString
    DeviceName = Query.Fields("DeviceName").AsString
    LastAccessTime = Query.Fields("LastAccessTime").AsString
    UserActivity = Query.Fields("UserActivity").AsString
    if DeviceStatus == VALID_DEVICE_STATUS_TEXT
      if UserActivity == '0'
        LastAccessTime = '<td bgcolor = "yellowgreen" nowrap="nowrap">' & LastAccessTime & '</td>'
      else
        LastAccessTime = '<td bgcolor = "salmon" nowrap="nowrap">' & LastAccessTime & '</td>'
      endif
    else
      LastAccessTime = '<td nowrap="nowrap">' & LastAccessTime & '</td>'
    endif
    if UserSost == CLOSED_USER_SOST_TEXT
      if DeviceStatus == VALID_DEVICE_STATUS_TEXT
        DeviceStatus = '<font color = "red">' & UpperCase(DeviceStatus) & '</font>'
        UserSost = '<font color = "red">' & UpperCase(UserSost) & '</font>'
        UserFIO = '<font color = "red">' & UserFIO & '</font>'
        UserLogin = '<font color = "red">' & UserLogin & '</font>'
        CDID = '<font color = "red">' & CDID & '</font>'
        JazzVersion = '<font color = "red">' & JazzVersion & '</font>'
        OSVersion = '<font color = "red">' & OSVersion & '</font>'
        DeviceName = '<font color = "red">' & DeviceName & '</font>'
      endif
      if DeviceStatus == INVALID_DEVICE_STATUS_TEXT
        DeviceStatus = '<font color = "maroon">' & DeviceStatus & '</font>'
        UserSost = '<font color = "maroon">' & UserSost & '</font>'
      endif
    else
      if DeviceStatus == VALID_DEVICE_STATUS_TEXT
        DeviceStatus = '<font color = "green">' & DeviceStatus & '</font>'
        UserSost = '<font color = "green">' & UserSost & '</font>'
        UserFIO = '<font color = "green">' & UserFIO & '</font>'
        UserLogin = '<font color = "green">' & UserLogin & '</font>'
        CDID = '<font color = "green">' & CDID & '</font>'
        JazzVersion = '<font color = "green">' & JazzVersion & '</font>'
        OSVersion = '<font color = "green">' & OSVersion & '</font>'
        DeviceName = '<font color = "green">' & DeviceName & '</font>'
      endif
      if DeviceStatus == INVALID_DEVICE_STATUS_TEXT
        DeviceStatus = '<font color = "maroon">' & DeviceStatus & '</font>'
      endif
    endif
    if HaveNOMADUser == NO_NOMAD_USER_TEXT
      HaveNOMADUser = '<font color = "red">' & UpperCase(HaveNOMADUser) & '</font>'
    endif
    TextHTML = TextHTML & cr &
    "<tr>
 <td nowrap='nowrap'>" & UserFIO & "</td>
 <td nowrap='nowrap'>" & UserSost & "</td>
 <td nowrap='nowrap'>" & DeviceStatus & "</td>
 <td nowrap='nowrap'>" & UserLogin & "</td>
 <td nowrap='nowrap'>" & HaveNOMADUser & "</td>
 <td nowrap='nowrap'>" & CDID & "</td>
 <td nowrap='nowrap'>" & JazzVersion & "</td>
 <td nowrap='nowrap'>" & OSVersion & "</td>
 <td nowrap='nowrap'>" & DeviceName & "</td>
 " & LastAccessTime & "
 </tr>"
    Query.Next
  endwhile
  TextHTML = TextHTML & CR & 
  "   </tbody>
     </table>
     <br/>"
  Query.Close
  Query = nil
// -----------------------------------------------------------------------------
  
  Result = TextHTML

Кому давать права на этот сценарий и просмотр содержимого обложки, на ваше усмотрение.

2) Импортировать файл с обложкой в систему Обложка Пользователи и устройства NOMAD.zip
 (опять-таки не забываем про права доступа). Если называли свой сценарий в п.1 иначе, предварительно подправьте информацию в index.htm.

3) Создать новую папку, указав импортированный файл в качестве обложки; отображать можно только обложку.

Пользуйтесь на здоровье! Желаю компании-разработчику "расширить и углубить" идею аудита в рамках коробочной поставки NOMAD.

Желающие добавить вместе с/вместо визуального оформления фильтры в таблицу, не стесняйтесь делиться в комментариях плодами успешных доработок (у нас меньше 50 пользователей JAZZ, цветовой визуализации пока хватает).

Дополнительно, рекомендую создать в системе ещё 1 папку с документацией, указав в качестве обложки https://club.directum.ru/home/mobile#nomad

Пока комментариев нет.

Авторизуйтесь, чтобы написать комментарий