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

Eri*_*ith 0 vms dcl openvms

我们有一个基于OpenVMS的传统COBOL应用程序 - 我们对配置没有一个清晰的认识.在这种情况下,通过"配置",我说的是:

  1. 哪个可执行文件构成应用程序;
  2. 哪些原始源文件对应于哪些可执行文件.

上面的1是一个未知的东西似乎很奇怪,但随着时间的推移,可执行文件已经"来去匆匆"(并且许多仍然被使用).其中的可执行文件构成的应用程序,因为它存在的知识,今天,因为知识,其中的可执行文件,不再需要在时间已丢失不得而知.实际上,团队忠实地编译所有源代码文件并部署生成的可执行文件,尽管显然有不再使用的程序.

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

当然,有许多方法可以确定配置,但我想从第一个"小步骤"开始,即:确定构成应用程序的可执行文件集.此时我应该提到应用程序的可执行组件不仅限于OpenVMS映像,还包括DCL命令文件.我想要:

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

如果我们在延长的时间段(例如两个月)内对我们的生产系统进行此日志记录,我们可以很好地了解应用程序包含的内容.与用户咨询一起,我们将能够确认是否需要未被调用的可执行文件.

我想我已经知道如何做1以上,虽然我不确定具体,即使用SET/AUDIT.第二部分,在这个阶段,我不知道该怎么做.

因此,这项工作的主要标准是,为了获得上述信息,现有系统的影响很小.由于配置周围的问号(以及完全缺乏自动化测试),改变任何事情都是一项令人头疼的事情.

使用操作系统级服务SET/AUDIT可以让人们在不需要更改源代码和/或重新编译任何内容的情况下了解正在运行的内容.所以,我的问题是多方:

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

小智 5

广告2.,3.

我会尝试使用ACL进行安全审核.从一个特权帐户,像......

确保启用ACL审核:

$ show audit
Run Code Online (Sandbox Code Playgroud)

应该表明

System security audits currently enabled for:
...
ACL
...
Run Code Online (Sandbox Code Playgroud)

如果没有,请启用它

$ set audit/audit/enable=acl
Run Code Online (Sandbox Code Playgroud)

然后你可能想要在完成后禁用它

$ set audit/audit/disable=acl
Run Code Online (Sandbox Code Playgroud)

在所有需要的文件上设置审核ACL:

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

并且您可能希望在完成后删除ACL

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

您可以检查设置的ACL:

$ show security [.app]*.*
Run Code Online (Sandbox Code Playgroud)

运行你的应用...

从审计文件中获取结果

$ analyze/audit [vms$common.sysmgr]security.audit$journal/sel=access=execute/full/since=17:00/out=app.log
Run Code Online (Sandbox Code Playgroud)

检查报告中的文件:

$ 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
$ 
Run Code Online (Sandbox Code Playgroud)

对不起,我对1.和4没有答案.