在生产性 ERP 系统中避免 ABAP 程序 运行 的安全方法

A safe way to avoid ABAP program running in productive ERP system

我需要开发一个 ABAP 程序来为 SAP Basis 执行一些操作。该程序将 运行 仅在 test/development 系统中使用,并且 运行 该程序在生产系统中不安全。

我需要任何安全的方法来防止程序 运行ning 在生产中。我可以读取 T000 table 中的类别字段并检查系统是否有效,但这种方式并非 100% 安全。任何拥有 debug/variable 修改权限的用户都可以避免这种情况。

一个可能的解决方案是根本不将 ABAP 程序导入生产系统。同时,我们有一个从生产到 QA 的系统副本(Oracle DB 从 PROD 完全复制到 QA 并重命名)。这意味着新程序将在每次 PROD->QA 复制后在 QA 中被擦除,我们将需要再次将其从 DEV 导入 QA。所以,这种方式并不方便。

有没有更安全的方法?

对于恶意使用调试器更改 运行 程序中的值(并且有权这样做)的人,几乎没有什么防范措施。如果拥有该权限的人想要主动破坏您的系统,he/she/it 将能够以某种方式这样做。

通过严格的权限管理来管理该风险。

如果这还不够,请不要传输程序,无论这看起来多么不方便。

不过,您应该防止意外执行,为此,客户端的角色(可以是 "productive"、"customizing"、"test";通过事务代码 SCC4; 它存储在 table 列 T000-CCCATEGORY 并且可以通过功能模块读取 TR_SYS_PARAMS) 应该足够了。

拥有developer/debug授权的任何人基本上都可以在您的系统中进行任何操作。我的意思是即使你不发布你的程序,如果我有开发角色,我自己也可以创建一个 z-program 来做和你的程序一样的事情。

所以让我们把你的陈述集中在这里:生产系统。有多少用户可以拥有开发授权?我认为它应该由您的管理员严格控制。

除了T000 "Productive" check之外,您还可以添加authority check,例如S_ADMI_FCD并登录您的代码来限制和保护程序。

希望对您有所帮助。谢谢!

解决方案是调用操作系统命令,该命令只能在 test/quality 系统中找到,而不能在生产系统中找到。