清理 DBMS 用户管理中的不一致映射,别让 ABAP 用户和数据库用户各走各路
做 SAP 系统用户治理时,最怕的不是 SU01 里少填了一个字段,也不是 PFCG 里某个 authorization object 少维护了一个 activity,而是两个安全世界表面上已经联通,底层却悄悄分叉。SAP NetWeaver AS ABAP 里看起来一个用户还保留着 DBMS user mapping,业务侧也默认这个用户在数据库层面仍然存在,可真正落到 DBMS,那个数据库用户已经被 DBA 手工删除、系统迁移时漏建,或者在清理测试账号时被顺手带走了。这个时候,SAP 层和数据库层之间就出现了一种很隐蔽的脏数据,它不一定马上让系统报错,却会在 BW 查询、HANA 直接访问、分析权限映射、跨层审计等场景里制造麻烦。SAP 官方对 DBMS User Management 的定位很明确,它让 SAP NetWeaver AS ABAP 能够管理 DBMS 中的用户以及权限,而在典型 ABAP 系统里,多数业务用户并不需要直接成为数据库用户,只有 SAP BW、数据库直接访问等场景才会需要 ABAP 用户与 DBMS 用户之间建立关系。官方文档也提到,配置后,SAP NetWeaver AS ABAP 可以在创建 ABAP 用户时自动创建对应 DBMS 用户,用户 ID 和初始口令保持一致,ABAP 用户被 administratively locked 时,对应 DBMS 用户也会被锁定。这里同时要看到边界,password synchronization 和 password locks 并不支持,并且该 customizing 是 client-specific 的。(