首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAP视图/ DCL检查授权

SAP视图/ DCL检查授权
EN

Stack Overflow用户
提问于 2021-10-20 10:41:43
回答 1查看 1.4K关注 0票数 0

我有一个CDS视图,并希望应用授权检查。

CDS视图ZCDS_VIEW

代码语言:javascript
复制
@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视图中的字段进行授权检查。事实上,我必须:

  1. 检查特定表ZT1的利润中心的授权
  2. 将ZT1表的条目与ZT2表连接,该表为我提供了授权的部门
  3. 用授权的部门过滤我的CDS视图的结果。

为了做到这一点,我就这样做了:

创建CDS ZCDS_AUTH_PLANT

代码语言:javascript
复制
@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
};

创建DCL ZDCL_AUTH_PLANT

代码语言:javascript
复制
@MappingRole: true
define role ZDCL_AUTH_PLANT {
  grant
    select
      on
        ZCDS_AUTH_PLANT
          where
            ( profit_center ) = aspect pfcg_auth( XXX, PRCTR );
}

更新CDS ZCDS_VIEW

ZCDSC4_AUTH_PLANT上添加联接条件,使其具有授权的分部。

代码语言:javascript
复制
@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里做所有事情吗?
EN

回答 1

Stack Overflow用户

发布于 2021-10-22 08:44:47

这是个好做法吗?

DCL是为ABAP视图实现授权检查的标准方法,所以是的,使用它是一个很好的实践。

这包括在这里的正式文档CDS实体的访问控制和这里的创建DCL源

你看到更相关的替代方案了吗?

是否使用DCL文件无法满足您的要求?如果它有效,您已经使用了正确的方法来实现auth检查,因此不需要其他解决方案。

我们应该在DCL里做所有事情吗?

如果一切都意味着完整的授权检查,那么是的。当然,DCL中还有比检查PCFG对象更复杂的逻辑(例如GDPR限制),但它似乎不适用于您的场景。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69644528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档