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

生产性ERP系统中避免ABAP程序运行的安全方法,abap,sap-erp,sap-basis,Abap,Sap Erp,Sap Basis,我需要开发一个ABAP程序,为SAP Basis执行一些操作。该程序将仅在测试/开发系统中运行,在生产系统中运行该程序是不安全的 我需要任何安全的方法来防止程序在生产环境中运行。我可以读取T000表中的类别字段,检查系统是否有效,但这种方式不是100%安全的。任何具有调试/变量修改授权的用户都可以避免这种情况 一个可能的解决方案是根本不将ABAP程序导入生产系统。同时,我们有一个从productive到QA的系统副本(Oracle DB从PROD完全复制到QA并重命名)。这意味着在每个PROD-

我需要开发一个ABAP程序,为SAP Basis执行一些操作。该程序将仅在测试/开发系统中运行,在生产系统中运行该程序是不安全的

我需要任何安全的方法来防止程序在生产环境中运行。我可以读取T000表中的类别字段,检查系统是否有效,但这种方式不是100%安全的。任何具有调试/变量修改授权的用户都可以避免这种情况

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


有什么方法更安全吗?

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

通过严格的权限管理来管理这一风险

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


不过,您应该防止意外执行,为此,客户机的角色(可以是“生产性的”、“定制的”、“测试的”;通过事务代码
SCC4
;它存储在表列
T000-CCCATEGORY
中,并且可以通过功能模块
TR_SYS_PARAMS
读取)应该足够了。

任何拥有开发人员/调试授权的人基本上都可以在您的系统中做任何事情。我的意思是,即使你没有发布你的程序,我自己也可以创建一个z程序,如果我有一个开发人员的角色,我可以做与你的程序相同的事情

因此,让我们把重点放在这里:生产系统。有多少用户可以拥有dev授权?我认为应该由你的管理员严格控制

除了
T000“生产性”检查
,您还可以添加
权限检查
,例如,
S_ADMI_FCD
,并登录您的代码以限制和保护程序


希望能有帮助。谢谢大家!

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

方便或安全:如果不能同时拥有这两个命令,请保持“安全”,如果您想保留“工作”…非常感谢您的快速响应。“…客户机/系统设置应该足够。”-你是说检查ABAP程序中的T000-CCCATEGORY吗?是的,尽管我建议使用TR_SYS_参数来读取它。我用信息T000-CCCATEGORY和TR_SYS_参数更新了答案。对于授权,一种解决方案是将此类程序分配给自定义的“授权组”(在SM30 V_TPGP中列出)并允许用户仅通过授权对象S_program和S_DEVELOP in Dev/Test systems访问该组。