我需要开发一个ABAP程序,为SAP Basis执行一些操作。该程序将仅在测试/开发系统中运行,在生产系统中运行该程序是不安全的。
我需要任何安全的方法,以防止程序高效运行。我可以读取 T000 表中的类别字段并检查系统是否有效,但这种方式不是 100% 安全的。任何具有调试/变量修改权限的用户都可以避免这种情况。
一个可能的解决方案是根本不将ABAP程序导入生产系统。同时,我们有一个从生产到QA的系统拷贝(Oracle DB从PROD完全复制到QA并重命名(。这意味着在每个 PROD->QA 副本之后,新程序将在 QA 中删除,我们需要再次将其从 DEV 导入到 QA。所以,这种方式并不方便。
有什么方法更安全吗?
对于恶意使用调试器更改正在运行的程序中的值(并具有这样做的权限(的人,几乎没有保护措施。如果拥有该权限的人想要主动损害您的系统,他/她/它将能够以一种或另一种方式这样做。
通过严格的权限管理来管理该风险。
如果这还不够,请不要传输程序,无论这看起来多么不方便。
尽管如此,你还是应该防止意外执行,为此,客户端的角色(可以是"生产性的"、"定制的"、"测试的";通过事务代码SCC4
;它存储在表列T000-CCCATEGORY
中,可以通过函数模块TR_SYS_PARAMS
读取(就足够了。
任何拥有开发人员/调试授权的人基本上都可以在您的系统中执行所有操作。我的意思是,即使你不发布你的程序,如果我有开发角色,我自己也可以创建一个 z 程序来制作与你的程序相同的事情。
因此,让我们把你的陈述集中在这里:生产系统。有多少用户可以拥有开发授权?我认为它应该由您的管理员严格控制。
除了T000 "Productive" check
,您还可以添加authority check
,例如,S_ADMI_FCD
和登录代码以限制和保护程序。
希望对您有所帮助。谢谢!
解决方案是调用操作系统命令,该命令只能在测试/质量系统中找到,而不是在生产系统上找到。