Permissions ABAP报表的用户访问控制

Permissions ABAP报表的用户访问控制,permissions,abap,roles,user-permissions,Permissions,Abap,Roles,User Permissions,有一个ABAP报告,生产系统上的ABAP报告应通过访问控制进行保护,以避免未经授权的人员执行 只有授权人员才能限制和控制对ABAP报告和表的访问权限的正确方法是什么?如果您想限制对整个报告的访问权限,可以在事务级别上进行。创建事务时,可以指定授权对象,也可以选择指定字段。未对此授权对象进行授权的用户将被排除在报告之外。确保用户不能通过SE38或类似事务运行报告来规避此问题 但是,有时您需要对此进行编程。例如,您的报告中可能有公司代码的选择字段,并且您只希望允许某些用户查看某些公司代码的数据。在这

有一个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.
权限检查对象'BUKRS_COMP'
ID“BUKRS”字段lv_BUKRS
ID“ACTVT”字段“03”。“读访问
如果sy subrc为0。
消息“无授权”类型为“E”。
恩迪夫。

如果要限制对整个报表的访问,可以在事务级别上进行。创建事务时,可以指定授权对象,也可以选择指定字段。未获得此授权对象授权的用户将被排除在报表之外。请确保用户无法通过运行来规避此问题通过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.
权限检查对象'BUKRS_COMP'
ID“BUKRS”字段lv_BUKRS
ID“ACTVT”字段“03”。“读取访问权限”
如果sy subrc为0。
消息“无授权”类型为“E”。
恩迪夫。

综合方法由两部分组成:

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

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

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

    • 核实某人是否拥有报告本身的权限

    • 检查该人员是否有必要的表格访问权限

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

  • 通过
    SE93
    为报告创建事务,例如
    MY\u TCODE

  • MY\u TCODE
    分配给报告

  • 权限检查对象的\u TCODE
    添加到事务
    MY\u TCODE
    的报告中

  • 根据需要的活动,向所需表的报告中添加一个
    权限检查对象的“禁忌”
    ,例如
    MY\u table

  • 向用户配置文件添加一个角色,该角色有权通过
    SU01
    执行
    MY\u TCODE

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

    • 如果您运行
      MY\u TCODE
      ,SAP将验证您是否具有步骤5中规定的权限

    • 如果运行报告,则报告将根据步骤a为指定的
      MY\u TCODE
      执行权限检查对象的\u TCODE'

    • 如果步骤“A”和“B”正常,则报告将对所需表执行
      权限检查对象的\u TABU\u 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.
    
    “检查tcode的访问权限
    权限检查对象的\u t代码
    ID“TCD”字段“我的代码”。
    如果sy subrc为0。
    消息“拒绝访问TCODE MY_TCODE”类型为“E”。
    出口
    恩迪夫。
    “检查表的写入权限
    权限检查对象的“禁忌”
    ID“ACTVT”字段“02”
    ID“表格”字段“我的表格”。
    如果sy subrc为0。
    消息“拒绝访问表MY_table”类型为“E”。
    出口
    恩迪夫。
    
    综合方法由两部分组成:

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

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

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

    • 核实某人是否拥有报告本身的权限

    • 检查该人员是否有必要的表格访问权限

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

  • 通过
    SE93
    为报告创建事务,例如
    MY\u TCODE

  • MY\u TCODE
    分配给报告

  • 权限检查对象的\u TCODE
    添加到事务
    MY\u TCODE
    的报告中

  • 根据需要的活动,向所需表的报告中添加一个
    权限检查对象的“禁忌”
    ,例如
    MY\u table

  • 向用户配置文件添加一个角色,该角色有权通过
    SU01
    执行
    MY\u TCODE

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

    • 如果你经营一家公司