ABAP报表的用户访问控制



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

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

如果您想限制对整个报告的访问,可以在事务级别进行限制。创建事务时,可以指定授权对象,也可以选择指定字段。未对此授权对象进行授权的用户将从报告中排除。确保用户无法通过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.

综合方法由两部分组成:

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

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

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

  • 验证某人是否拥有对报告本身的权限;

  • 以检查该人员是否具有所需的表访问权限。

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

  1. 通过SE93为报告创建事务,例如MY_TCODE

  2. MY_TCODE分配给报告。

  3. 在事务MY_TCODE的报告中添加一个AUTHORITY-CHECK OBJECT 'S_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";如果OK,则报告将为所需的表执行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.

相关内容

  • 没有找到相关文章

最新更新