Определите область исполняемых артефактов приложения с помощью мониторинга в OpenVMS

У нас есть устаревшее приложение COBOL, основанное на OpenVMS, для которого у нас нет четкого представления о конфигурации. В этом контексте под "конфигурацией" я говорю:

  1. Какие исполняемые файлы составляют приложение;
  2. Какие исходные исходные файлы соответствуют каким исполняемым файлам.

Может показаться странным, что 1 выше является чем-то неизвестным, но со временем произошло то, что исполняемые файлы "приходили и уходили" (а многие все еще остаются использованными). Знание того, какие исполняемые файлы составляют приложение в том виде, в каком оно существует сегодня, неизвестно, поскольку знание того, какие исполняемые файлы больше не требуются, было потеряно во времени. С практической точки зрения, команда добросовестно компилирует все файлы исходного кода и развертывает получившиеся исполняемые файлы, несмотря на то, что, очевидно, существуют программы, которые больше не используются.

Само собой разумеется, что формального процесса управления конфигурацией не существует, а исходный код не хранится в системе контроля версий. Поскольку приложение работает в OpenVMS, соответствующая файловая система на базе Files-11 сохраняет более старые версии файлов (включая исходные файлы), и это долгое время служило оправданием для того, чтобы не помещать исходный код приложения в систему контроля версий (несмотря на причины использования VCS, выходящая далеко за пределы просто записи предыдущих версий).

Конечно, существует несколько способов определения конфигурации, но я бы хотел начать с первого "маленького шага", а именно: определить набор исполняемых файлов, составляющих приложение. Здесь я должен упомянуть, что исполняемые компоненты приложения не ограничиваются образами OpenVMS, но также и командными файлами DCL. Я бы хотел:

  1. Журнал всех вызовов изображений, которые находятся в определенном каталоге или наборе каталогов;
  2. Записывать все вызовы командных файлов, которые находятся в определенном каталоге или наборе каталогов.

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

Я думаю, у меня есть идея, как сделать 1 выше, хотя я не уверен в специфике, то есть использовать SET/AUDIT, Вторая часть, на данном этапе, я понятия не имею, как это сделать.

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

Использование сервисов уровня операционной системы, таких как SET/AUDIT позволит узнать, что выполняется, без необходимости менять исходный код и / или перекомпилировать что-либо. Итак, мой вопрос мульти-партер:

  1. Это оптимальный способ сделать это на OpenVMS?
  2. Что мне нужно сделать, чтобы ограничить SET/AUDIT контролировать только изображения в определенном каталоге?
  3. Как мне зарегистрировать вызов командного файла без изменения .COM исходные файлы?
  4. Чего следует ожидать в плане снижения производительности в результате регистрации такой информации?

2 ответа

Решение

Объявление 2., 3.

Я хотел бы попробовать аудит безопасности с ACL. Из привилегированного аккаунта, что-то вроде...

Убедитесь, что аудит ACL включен:

$ show audit

должен показать

System security audits currently enabled for:
...
ACL
...

Если это не так, включите его с помощью

$ set audit/audit/enable=acl

и затем вы можете отключить его, когда вы закончите с

$ set audit/audit/disable=acl

Установите контрольные списки ACL для всех требуемых файлов:

$ set sec/acl=(audit=security,access=success+execute) [.app]*.com
$ set sec/acl=(audit=security,access=success+execute) [.app]*.exe

и вы можете удалить ACL, когда вы закончите с

$ set security/acl=(audit=security,access=success+execute)/delete [.app]*.com
$ set security/acl=(audit=security,access=success+execute)/delete [.app]*.exe

Вы можете проверить, какие ACL установлены с:

$ show security [.app]*.*

Запустите ваше приложение...

Получить результаты из файла аудита

$ analyze/audit [vms$common.sysmgr]security.audit$journal/sel=access=execute/full/since=17:00/out=app.log

Проверьте свой отчет на наличие файлов:

$ pipe type app.log |search sys$pipe "File name", ,"Access requested"
File name:                _EMUVAX$DUA0:[USER.APP]NOW.COM;1
Access requested:         READ,EXECUTE
Auditable event:          Object access
File name:                _EMUVAX$DUA0:[USER.APP]ECHO.EXE;1
Access requested:         READ,EXECUTE
$ 

Извините, у меня нет ответа для 1. и 4.

Это помогло бы узнать версию OpenVMS (например, 6.2, 7.3-2, 8.4...) и архитектуру (Vax, Alpha,Itanium).

Последние версии OpenVMS имеют отличные расширения sda

http://h71000.www7.hp.com/doc/84final/6549/6549pro_ext1.html

или же

http://de.openvms.org/Spring2009/05-SDA_EXTENSIONS.pdf

такие как LNM для проверки логических имен, используемых процессом, PCS для выборки ПК процесса, FLT для проверки ошибочного поведения приложений, RMS для структур данных RMS, PERF только для трассировки производительности Itanium, PROCIO для чтения и записи для все файлы, открытые процессом

Опубликовать

dir sys$share:*sda.exe

чтобы мы знали, какие расширения Sda доступны для вас.

Вы всегда можете проверить, что процесс с pid 204002B4 делает с

$ ana/sys set proc/id=204020b4 sh process /channel exam @pc

и повторите, пока процесс продолжается.

Другие вопросы по тегам