通过在 OpenVMS 上监控确定应用程序可执行工件范围

Determine application executable artifact scope through monitoring on OpenVMS

我们有一个基于 OpenVMS 的遗留 COBOL 应用程序,我们对其配置没有清晰的认识。在这种情况下,"configuration" 我说的是:

  1. 应用程序包含哪些可执行文件;
  2. 哪些原始源文件对应哪些可执行文件。

上面的 1 是未知的,这似乎很奇怪,但随着时间的推移,可执行文件有 "come and gone"(并且许多仍在使用)。由于关于哪些可执行文件不再需要的知识已经及时丢失,因此目前 今天 不知道哪些可执行文件构成了应用程序。实际上,该团队忠实地编译了 所有 源代码文件并部署了生成的可执行文件,尽管事实上显然有不再使用的程序。

不用说,没有正式的配置管理流程,源代码也没有保存在版本控制系统中。由于 OpenVMS 上的应用程序 运行s,相应的基于 Files-11 的文件系统保留了旧版本的文件(包括源文件),这一直是不将应用程序源代码放入版本控制的借口系统(尽管使用 VCS 的原因远远超出仅仅拥有以前版本的记录)。

当然,可以通过多种方式确定配置,但我想从第一个开始 "small step",即:确定构成应用程序的可执行文件集.在这一点上我应该提一下,应用程序的可执行组件不仅限于 OpenVMS 映像,还包括 DCL 命令文件。我愿意:

  1. 记录驻留在特定目录或目录集中的图像的所有调用;
  2. 记录驻留在特定目录或目录集中的命令文件的所有调用。

如果我们 运行 在我们的生产系统上长时间登录,比如两个月,我们可以很好地了解应用程序的组成。与用户咨询一起,我们将能够确认是否需要未被调用的可执行文件。

我想我已经知道如何做上面的1了,虽然我不确定具体情况,那就是使用SET/AUDIT。第二部分,现阶段,我也不知道该怎么做。

因此,这项工作的主要标准是尽可能少地影响现有系统以获得上述信息。由于围绕配置的问号(以及完全缺乏自动化测试),更改任何内容都是一件令人伤脑筋的事情。

使用像 SET/AUDIT 这样的操作系统级服务可以让人们了解正在发生的事情 运行 而无需更改源 and/or 重新编译任何东西。所以,我的问题是多方的:

  1. 这是在 OpenVMS 上执行此操作的最佳方法吗?
  2. 我需要做什么来限制 SET/AUDIT 只监视特定目录中的图像?
  3. 如何在不更改 .COM 源文件的情况下记录命令文件调用?
  4. 在记录此类信息后性能下降方面,我应该期待什么?

广告 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用于进程的PC采样,FLT用于检查应用程序的故障行为,RMS用于RMS数据结构,PERF仅用于Itanium性能跟踪,PROCIO用于进程打开的所有文件的读写

Post一个

dir sys$share:*sda.exe

以便我们知道您可以使用哪些 Sda 扩展。

您始终可以检查 pid 为 204002B4 的进程在做什么

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

并在过程继续进行时重复。