【问题标题】:User access control of ABAP reportsABAP报告的用户访问控制
【发布时间】:2020-07-05 22:00:18
【问题描述】:

有一个ABAP报告,在生产系统上应该通过访问控制来保护,以避免被未经授权的人执行。

什么是限制和控制仅授权人员访问 ABAP 报告和表格的正确方法?

【问题讨论】:

    标签: permissions abap roles user-permissions


    【解决方案1】:

    全面的方法由两部分组成:

    1. 整个系统的正确配置,限制目标系统上的关键事务,例如SE38 和许多其他人。通常由基础团队或系统所有者根据 SAP 安全指南执行。

    2. 报告本身内部的授权检查实现。这是 ABAP 开发人员的职责。

    下面,我将重点介绍由 ABAP 开发人员执行的第 2 部分。 为了保证可靠的访问控制,我们需要:

    • 验证某人是否有权访问报告本身;

    • 检查此人是否具有对表格的所需访问权限。

    由于在大多数生产环境中通过SE38 直接执行报告被阻止,我们应该遵循以下步骤:

    1. 创建一个事务,例如MY_TCODE,通过SE93进行报告。

    2. MY_TCODE 分配给报告。

    3. AUTHORITY-CHECK OBJECT 'S_TCODE' 添加到事务MY_TCODE 的报告中。

    4. AUTHORITY-CHECK OBJECT 'S_TABU_NAM' 添加到所需表格的报告中,例如MY_TABLE,根据想要的活动。

    5. 将有权通过SU01 执行MY_TCODE 的角色添加到用户配置文件。

    因此,授权逻辑的行为如下:

    • 如果您运行 MY_TCODE,SAP 会验证您是否拥有第 5 步的权限。

    • 如果您运行报告,则报告将根据步骤 A 为指定的 MY_TCODE 执行 AUTHORITY-CHECK OBJECT 'S_TCODE'

    • 如果您的步骤“A”和“B”都正常,那么报表将为所需的表执行AUTHORITY-CHECK OBJECT 'S_TABU_NAM'

    最终的 ABAP 代码:

    " check the access-right for the tcode
    AUTHORITY-CHECK OBJECT 'S_TCODE'
    ID 'TCD' FIELD 'MY_TCODE'.
    IF sy-subrc <> 0.
      MESSAGE 'Access denied to the TCODE MY_TCODE' TYPE 'E'.
      EXIT.
    ENDIF.
    
    " check write permission for the table
    AUTHORITY-CHECK OBJECT 'S_TABU_NAM'
    ID 'ACTVT' FIELD '02'
    ID 'TABLE' FIELD 'MY_TABLE'.
    IF sy-subrc <> 0.
      MESSAGE 'Access denied to the table MY_TABLE' TYPE 'E'.
      EXIT.
    ENDIF.
    

    【讨论】:

      【解决方案2】:

      如果您想限制对整个报告的访问,您可以在事务级别执行此操作。创建事务时,您可以指定授权对象,也可以选择指定字段。未获得此授权对象授权的用户将被排除在报告之外。确保用户无法通过 SE38 或类似事务运行报告来规避此问题。

      但是,有时您需要对此进行编程。例如,您的报表中可能有一个公司代码选择字段,并且您只想允许某些用户查看某些公司代码的数据。在这种情况下,您可以使用 AUTHORITY-CHECK 关键字。这是一个例子:

        AUTHORITY-CHECK OBJECT 'BUKRS_COMP'
          ID 'BUKRS' FIELD lv_bukrs
          ID 'ACTVT'  FIELD '03'. "read access
      
        IF sy-subrc <> 0.
          MESSAGE 'No authorization' TYPE 'E'.
        ENDIF.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-13
        • 1970-01-01
        • 2013-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多