通过在 OpenVMS 上监控确定应用程序可执行工件范围
Determine application executable artifact scope through monitoring on OpenVMS
我们有一个基于 OpenVMS 的遗留 COBOL 应用程序,我们对其配置没有清晰的认识。在这种情况下,"configuration" 我说的是:
- 应用程序包含哪些可执行文件;
- 哪些原始源文件对应哪些可执行文件。
上面的 1 是未知的,这似乎很奇怪,但随着时间的推移,可执行文件有 "come and gone"(并且许多仍在使用)。由于关于哪些可执行文件不再需要的知识已经及时丢失,因此目前 今天 不知道哪些可执行文件构成了应用程序。实际上,该团队忠实地编译了 所有 源代码文件并部署了生成的可执行文件,尽管事实上显然有不再使用的程序。
不用说,没有正式的配置管理流程,源代码也没有保存在版本控制系统中。由于 OpenVMS 上的应用程序 运行s,相应的基于 Files-11 的文件系统保留了旧版本的文件(包括源文件),这一直是不将应用程序源代码放入版本控制的借口系统(尽管使用 VCS 的原因远远超出仅仅拥有以前版本的记录)。
当然,可以通过多种方式确定配置,但我想从第一个开始 "small step",即:确定构成应用程序的可执行文件集.在这一点上我应该提一下,应用程序的可执行组件不仅限于 OpenVMS 映像,还包括 DCL 命令文件。我愿意:
- 记录驻留在特定目录或目录集中的图像的所有调用;
- 记录驻留在特定目录或目录集中的命令文件的所有调用。
如果我们 运行 在我们的生产系统上长时间登录,比如两个月,我们可以很好地了解应用程序的组成。与用户咨询一起,我们将能够确认是否需要未被调用的可执行文件。
我想我已经知道如何做上面的1了,虽然我不确定具体情况,那就是使用SET/AUDIT
。第二部分,现阶段,我也不知道该怎么做。
因此,这项工作的主要标准是尽可能少地影响现有系统以获得上述信息。由于围绕配置的问号(以及完全缺乏自动化测试),更改任何内容都是一件令人伤脑筋的事情。
使用像 SET/AUDIT
这样的操作系统级服务可以让人们了解正在发生的事情 运行 而无需更改源 and/or 重新编译任何东西。所以,我的问题是多方的:
- 这是在 OpenVMS 上执行此操作的最佳方法吗?
- 我需要做什么来限制
SET/AUDIT
只监视特定目录中的图像?
- 如何在不更改
.COM
源文件的情况下记录命令文件调用?
- 在记录此类信息后性能下降方面,我应该期待什么?
广告 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
并在过程继续进行时重复。
我们有一个基于 OpenVMS 的遗留 COBOL 应用程序,我们对其配置没有清晰的认识。在这种情况下,"configuration" 我说的是:
- 应用程序包含哪些可执行文件;
- 哪些原始源文件对应哪些可执行文件。
上面的 1 是未知的,这似乎很奇怪,但随着时间的推移,可执行文件有 "come and gone"(并且许多仍在使用)。由于关于哪些可执行文件不再需要的知识已经及时丢失,因此目前 今天 不知道哪些可执行文件构成了应用程序。实际上,该团队忠实地编译了 所有 源代码文件并部署了生成的可执行文件,尽管事实上显然有不再使用的程序。
不用说,没有正式的配置管理流程,源代码也没有保存在版本控制系统中。由于 OpenVMS 上的应用程序 运行s,相应的基于 Files-11 的文件系统保留了旧版本的文件(包括源文件),这一直是不将应用程序源代码放入版本控制的借口系统(尽管使用 VCS 的原因远远超出仅仅拥有以前版本的记录)。
当然,可以通过多种方式确定配置,但我想从第一个开始 "small step",即:确定构成应用程序的可执行文件集.在这一点上我应该提一下,应用程序的可执行组件不仅限于 OpenVMS 映像,还包括 DCL 命令文件。我愿意:
- 记录驻留在特定目录或目录集中的图像的所有调用;
- 记录驻留在特定目录或目录集中的命令文件的所有调用。
如果我们 运行 在我们的生产系统上长时间登录,比如两个月,我们可以很好地了解应用程序的组成。与用户咨询一起,我们将能够确认是否需要未被调用的可执行文件。
我想我已经知道如何做上面的1了,虽然我不确定具体情况,那就是使用SET/AUDIT
。第二部分,现阶段,我也不知道该怎么做。
因此,这项工作的主要标准是尽可能少地影响现有系统以获得上述信息。由于围绕配置的问号(以及完全缺乏自动化测试),更改任何内容都是一件令人伤脑筋的事情。
使用像 SET/AUDIT
这样的操作系统级服务可以让人们了解正在发生的事情 运行 而无需更改源 and/or 重新编译任何东西。所以,我的问题是多方的:
- 这是在 OpenVMS 上执行此操作的最佳方法吗?
- 我需要做什么来限制
SET/AUDIT
只监视特定目录中的图像? - 如何在不更改
.COM
源文件的情况下记录命令文件调用? - 在记录此类信息后性能下降方面,我应该期待什么?
广告 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
并在过程继续进行时重复。