[英]SAP ABAP CDS View / DCL check authorization
我有一个 CDS 视图并想应用授权检查。
ZCDS_VIEW
@AbapCatalog.sqlViewName: 'ZCDS_VIEW'
@VDM.viewType: #BASIC
@AccessControl.authorizationCheck: #CHECK
define view ZCDS_VIEW
as select distinct from vbak
inner join vbap on vbap.vbeln = vbak.vbeln // At least 1 item
[...]
{
key vbak.vbeln,
vbak.ktext,
[...]
}
where
[...].
我担心的是,控制授权的方法需要在不同的表中进行检查,而不仅仅是对 CDS 视图中的字段进行授权检查。 确实,我必须:
为此,我是这样做的:
ZCDS_AUTH_PLANT
@AbapCatalog.sqlViewName: 'ZCDS_AUTH_PLANT'
@VDM.viewType: #BASIC
@AccessControl.authorizationCheck: #CHECK
define view ZCDS_AUTH_PLANT
as select distinct from zt1
inner join zt2 on zt2.bu = zt1.bu
{
zt1.prctr as profit_center,
zt2.bukrs as company_code,
zT2.werks as plant_code
};
ZDCL_AUTH_PLANT
@MappingRole: true
define role ZDCL_AUTH_PLANT {
grant
select
on
ZCDS_AUTH_PLANT
where
( profit_center ) = aspect pfcg_auth( XXX, PRCTR );
}
ZCDS_VIEW
在ZCDSC4_AUTH_PLANT
上ZCDSC4_AUTH_PLANT
连接条件以具有授权的部门。
@AbapCatalog.sqlViewName: 'ZCDS_VIEW'
@VDM.viewType: #BASIC
@AccessControl.authorizationCheck: #CHECK
define view ZCDS_VIEW
as select distinct from vbak
inner join ZCDSC4_AUTH_PLANT on ZCDSC4_AUTH_PLANT.plant_code = vbap.werks // At least 1 item matching division
[...]
{
key vbak.vbeln,
vbak.ktext,
[...]
}
where
[...].
我想知道:
这是一个好习惯吗?
DCL 是对 ABAP CDS 视图实施授权检查的标准方法,所以是的,使用它是一种很好的做法。
这包含在此处的 CDS 实体访问控制和此处创建 DCL 源的官方文档中
您是否看到了更相关的替代方案?
使用 DCL 文件是否不能满足您的要求? 如果它正常工作,您已经在使用正确的方法来实施身份验证检查,因此不需要替代解决方案
我们应该在 DCL 中做所有事情吗?
如果一切都意味着完整的授权检查,那么是的。 您当然也可以在 DCL 中拥有更复杂的逻辑,而不仅仅是检查 PCFG 对象(例如 GDPR 限制),但它似乎不适用于您的场景
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.