当前位置:网站首页>谈谈 SAP 系统的权限管控和事务记录功能的实现
谈谈 SAP 系统的权限管控和事务记录功能的实现
2022-07-08 00:37:00 【汪子熙】
之前笔者在网络上,曾经也阅读过一些 SAP ABAP同仁们介绍如何通过 ABAP 单步调试,绕过SAP标准权限检查“小技巧”的文章,比如说在调试器里修改权限检查语句AUTHORITY-CHECK的返回值sy-subrc, 或者干脆用调试器的“跳转到某条语句”这一功能,直接绕过权限检查语句。
虽然说在SAP生产系统里,按照惯例,普通的业务用户绝对不会有调试的权限,更别说在调试器里修改变量的值了,但如果是在开发系统里,直接在调试器里修改变量的值,或是跳过某些语句的执行,真的就能够不会被别人发现么?
答案是否定的。
看个例子:

我在ABAP调试器里把变量的值从12改成123,回车使更改生效。
然后事务码SM21,打开系统日志查看工具:

我刚才在ABAP调试器里修改变量值的行为,赫然在案:

再试试在ABAP调试器里,使用“Goto statement”,直接跳过某些语句:

这一行为也逃不过系统日志的记录,甚至连我从第几行ABAP代码跳转到另外的第几行,都清晰地记录下来了。

Terminal字段即在调试器里执行了语句跳转的用户使用的终端机器ID,每台连接到ABAP Netweaver服务器上的机器都具有一个唯一的终端ID.
这些系统日志文件存储的具体位置在哪?
点击Display Components,在Component trace面板里,能有选择性地查看某种类别的系统日志:

其中/usr/sap/AG3/D56开头的路径,即是我当前登录的Application Server,ID为AG3,instance numeber 为56这台服务器的工作目录:

使用事务码AL11沿着这条路径找下去,在work子目录就能发现这些系统日志文件:


普通ABAP用户没有操作系统的访问权限,也就不能对这些系统日志文件进行任何写操作。
总而言之,一旦你使用单步调试的方法绕过一些权限检查或者执行其他危险操作时,这些行为立即记录在系统日志里,普通用户无法删除这些日志文件。
SAP系统的权限控制体系设计得非常完善,当大家在实际工作中发现自己缺少某个事务的执行权限时,请按照SAP权限管控的标准流程去解决问题。通过ABAP单步调试绕过权限检查,在任何情况下都绝非SAP推荐的解决方式。即便是大家想在开发系统上这样做的之前,也务必三思而后行。
聊完了 SAP ABAP 系统里的权限管控,我们再来看看其事务记录功能的实现。
用过“瘟酒吧”的七零后八零后,对于Windows注册表一定不陌生。在那个距今已经显得有些遥远的时代,甚至还有很多专门出版的书籍,教授如何修改Windows注册表来提高系统性能,或是启用一些微软默认disable了的隐藏功能。


我们知道Windows注册表用于存储系统和应用程序的设置信息,从Windows 95启用一直沿用到今天的Windows10.

那么SAP GUI命令行里用过的事务码列表,会不会也保存在Windows系统注册表的某个地方呢?

Windows操作系统里,Win + R,执行regedit打开注册表,沿路径HKEY_USERS\Software\SAP\SAPGUI Front\SAP Fronted Server\Code展开,即可看到这些用过的事务码列表。

同样,在本地SAP GUI目录下,有SAPHistory.db和SAPHistory.mdb这两个文件:

按照SAP note 1121688 - SAP History: explaining database files, etc的说法,扩展名.mdb文件是旧版本的SAP GUI使用,而.db对应新版本。

授人以鱼不如授人以渔,如何自行找到SAP GUI存储这些本地信息的注册表位置?
假设想知道下列这些History Settings的值是否维护在Windows注册表里,

首先,在修改设置之前,导出一个注册表镜像文件before.reg:

在SAP GUI里对设置做修改,保存后,导出第二个注册表镜像文件after.reg, 然后用Windows自带的文件比较工具fc比较两个镜像文件的差别,结果即为SAP GUI这些设置在Windows注册表里的位置。

结果如下:

绝大多数注册表项都位于SAPGUI Front这个节点下面,而从该节点向上追溯,也能发现其他SAP软件在注册表里写入的值,比如SAP Cloud Connector,SA Cloud Application Studio,SAP Intelligent Robotic Process Automation套件等等。

SAP GUI设置里的checkbox如果勾上,对应Windows注册表里的值维护为00000001:

而在SAP GUI里按照十进制存储的值,存储在Windows注册表里会自动转换成十六进制:

总结
本文从 SAP 系统开发人员通过单步调试的方式试图绕过系统权限的监控这一行为本身及其后果进行分析,介绍了 SAP 系统权限管控的完备实现,接着从 Windows 操作系统的注册表展开类别,介绍了 SAPGUI 事务记录功能的工作原理。
边栏推荐
- Urban land use distribution data / urban functional zoning distribution data / urban POI points of interest / vegetation type distribution
- mysql/mariadb怎样生成core文件
- #797div3 A---C
- 鼠标事件-事件对象
- Wechat applet uniapp page cannot jump: "navigateto:fail can not navigateto a tabbar page“
- burpsuite
- Tapdata 的 2.0 版 ,開源的 Live Data Platform 現已發布
- 发现值守设备被攻击后分析思路
- Applet running under the framework of fluent 3.0
- Voice of users | winter goes and spring comes, waiting for flowers to bloom -- on gbase 8A learning comprehension
猜你喜欢

《ClickHouse原理解析与应用实践》读书笔记(7)

Remote Sensing投稿經驗分享

Exit of processes and threads

保姆级教程:Azkaban执行jar包(带测试样例及结果)

nmap工具介绍及常用命令

静态路由配置全面详解,静态路由快速入门指南

Introduction to grpc for cloud native application development

Redux usage

ANSI / nema- mw- 1000-2020 magnetic iron wire standard Latest original

给刚入门或者准备转行网络工程师的朋友一些建议
随机推荐
云原生应用开发之 gRPC 入门
Js中forEach map无法跳出循环问题以及forEach会不会修改原数组
Nanny level tutorial: Azkaban executes jar package (with test samples and results)
Version 2.0 of tapdata, the open source live data platform, has been released
The numerical value of the number of figures thought of by the real-time update of the ranking list
【目标跟踪】|atom
Tencent game client development interview (unity + cocos) double bombing social recruitment 6 rounds of interviews
批次管控如何实现?MES系统给您答案
MySQL查询为什么没走索引?这篇文章带你全面解析
MySQL数据库(2)
什么样的MES系统才是好系统
Optimization of ecological | Lake Warehouse Integration: gbase 8A MPP + xeos
滑环使用如何固定
由排行榜实时更新想到的数状数值
Apache多个组件漏洞公开(CVE-2022-32533/CVE-2022-33980/CVE-2021-37839)
Android 创建的sqlite3数据存放位置
Keras' deep learning practice -- gender classification based on inception V3
进程和线程的退出
Uniapp one click Copy function effect demo (finishing)
ANSI / NEMA- MW- 1000-2020 磁铁线标准。. 最新原版