无权限执行query 权限检查

文章目录


事情可能是这样的:

  1. 你自己去跑一个query,用RSRT去执行,当填完参数时,结果返回一个no authorization错误。
  2. 别人去跑一个workbook,是基于一个query的,在前端AFO显示 no authorization错误。

正确的链路是什么样子的呢?
如果你帮别人去查,你可能会要去rsudo去用他的账号跑一遍,还是会出这个错。
一条路,你去查这个query是否做了什么权限限制(就是用了权限相关对象),而这个用户没有被授权。这要求你对你们的权限对象以及customer exit特别熟悉。知道哪些权限对象用在哪里。
另外一条路,注意力集中在这个错误上,它提示了是no authorization错误。
那么我们来找这个错误。

SU53

这个是用来追踪之前失败的授权对象。就是说你去访问的东西没权限,那是哪个对象的问题呢?
想象一下,你去跑报表的时候,后台是要一条一条的检测你的权限是否满足报表的限制的。不仅在于你是否有跑报表的权限,还在于你是否有查看报表数据的权限。

现在我们来rsudo一个用户,去跑一个query,那么得到了一个no authorization的错误。这个错误已经很详细了,有时候错误没有那么详细。
在这里插入图片描述
我们现在去SU53去找他的权限检查问题。

在这里插入图片描述
在这里能看到的所有的授权对象和授权字段,标红的显示是缺少啥。

为了把链路打通,咱首先得知道啥是授权对象。
在知道名词之前,首先得有个映像,就是这个玩意是干啥的。那咱也就得知道这一套机制是咋实现的。

BW的权限机制
看完了上篇的话,你就会知道,这里的提示是在权限对象下缺少了哪些针对那个info provider的权限。于是你去这个用户的role下面的profile去做修改就好了。
SU53就是来检查这些权限对象的值的。

SU56

在SU56里面,你可以查找这个用户下面的这个权限对象,系统会罗列出这个用户的所有role下面的该权限对象的权限字段以及值,你可以轻易看出SU53中缺少的权限字段值并不在SU56中用户的所有角色下。
在这里插入图片描述

ST01

还有个方法就是用ST01来追踪。
首先确定用户,然后开启权限检查。结束后来trace off.
在这里插入图片描述
最后查看分析权限日志。只选个权限检查就行了。
在这里插入图片描述
RC=0没错,Return Code=4有错。
在这里插入图片描述

RSECPROT

这个也就是分析授权RSECADMIN下面的分析日志:
在这里插入图片描述
首先我们限定时间,然后如果你本人就填你是executing user,如果你帮了别人查看权限,在restricted user下写他账号。
在这里插入图片描述
然后display:
你将会看到该用户没有哪个权限对象的分析授权。
在这里插入图片描述
这个最好结合SU53和SU56来看。

关于权限相关字段的检查,要注意的是,有时候会有一种情况:
我的分析授权里对一个字段做了限定,但是这个字段我没有用在报表里,当我去跑报表的时候,报权限错误。。问题在于,我虽然报表里没有用这个限定的字段,但是这个报表基于的info provider里面有这个字段,info provider里面的所有权限相关字段都会被检查。当检查到我要跑的别的数据被分析授权的字段限制住,无法展示的时候,就会报错。

那么这里就又涉及到另外一个点了:如果我不想让权限去检查info provider里有但是我报表里没有的字段怎么办?
在这里插入图片描述
那你要额外增加一个EQ:告诉报表,别用我已经限定的值来限定这个info provider,如果创建的query里面没有我,请别用我限定的值,就用所有的我的值。

猜你喜欢

转载自blog.csdn.net/weixin_45689053/article/details/112800957