Product Information
Attribute Based Access Control (ABAC) – Field Masking scenario in SE16 and MM03 based on Plant and Storage Location of SAP GUI
Introduction
In this blog post, we will learn how to mask “Unrestricted Stock” field in MARD table in transactions SE16 and MM03 based on Plant and Storage Location information.
Attribute based authorizations are dynamic determination mechanism which determines whether a user is authorized to access specific data sets which can be based on the context attributes of the user and data (for example, price of certain sensitive materials are masked).
The end result will appear as:
Prerequisite
Product “UI data protection masking for SAP S/4HANA” is used in this scenario to protect sensitive data at field level and must be installed in the S/4HANA system.
The product is a cross-application product which can be used to mask/protect any field in SAP GUI, SAPUI5/SAP Fiori, CRM Web Client UI, and Web Dynpro ABAP.
Let’s begin
Configuration to achieve masking
Logical Attribute is a functional modelling of how any attribute such as Social Security Number, Bank Account Number, Amounts, Pricing information, Quantity etc. should behave with masking.
Configure Logical Attribute
Follow the given path:
SPRO -> SAP NetWeaver -> UI Data Protection Masking for SAP S/4HANA -> Maintain Metadata Configuration -> Maintain Logical Attributes
Plant
Storage Location
Unrestricted Stock
Configure Derived Attribute
Derived Attributes are user defined attributes which are populated at run time. The derivation of these attributes can be maintained in a class method. The name of the Class can be specified while maintaining a derived attribute in the IMG.
Follow the given path:
SPRO -> SAP NetWeaver -> UI Data Protection Masking for SAP S/4HANA -> Maintain Metadata Configuration -> Maintain Attributes and Ranges for Policy – Follow below mentioned steps:
Storage Location
- Click on “New Entries” button
- Enter “Derived Field” as “DA_STORAGE_LOC”
- Enter “Class Name” as “ZCL_DERIVE_STORAGE_LOC”
- Select “Application Module” as “* Cross-Application”
- Enter “Description” as “Storage Location”
- Click on “Save” button
Implementation of Derived Attribute for Storage Location
For the given case, we are masking Unrestricted Stock field in transaction MM03 and SE16. The context for our rule (i.e. Plant (MARD-WERKS) and Storage Location (MARD-LGORT) ) are available as context in transaction SE16 table MARD but the same is not available in transaction MM03 (as in case of Module Pool programs, Context of only sub-screen fields are available). Hence, there is a need to create a Derived Attribute for Storage Location.
Steps to implement Class for Derived Attribute:
- Execute transaction SE24
- Create Derived Attribute Class mentioned in the configuration (i.e. ZCL_DERIVE_STORAGE_LOC)
- Implement the Interface: /UISM/IF_DERIVED_ATTR_VALUE in the Class
- Sample implementation of Method: /UISM/IF_DERIVED_ATTR_VALUE~EXECUTE
Plant
- Click on “New Entries” button
- Enter “Derived Field” as “DA_WERKS”
- Enter “Class Name” as “ZCL_DERIVE_PLANT”
- Select “Application Module” as “* Cross-Application”
- Enter “Description” as “Plant”
- Click on “Save” button
Implementation of Derived Attribute for Plant
For the given case, we are masking Unrestricted Stock field in transaction MM03 and SE16. The context for our rule (i.e. Plant (MARD-WERKS) and Storage Location (MARD-LGORT) ) are available as context in transaction SE16 table MARD but the same is not available in transaction MM03 (as in case of Module Pool programs, Context of only sub-screen fields are available). Hence, there is a need to create a Derived Attribute for Plant.
Steps to implement Class for Derived Attribute:
- Execute transaction SE24
- Create Derived Attribute Class mentioned in the configuration (i.e. ZCL_DERIVE_PLANT)
- Implement the Interface: /UISM/IF_DERIVED_ATTR_VALUE in the Class
- Sample implementation of Method: /UISM/IF_DERIVED_ATTR_VALUE~EXECUTE
Configure Value Range
Value Ranges are a set of pre-populated values which can be used to derive the context under which an action should be executed.
Follow the given path:
SPRO -> SAP NetWeaver -> UI Data Protection Masking for SAP S/4HANA -> Maintain Metadata Configuration -> Maintain Attributes and Ranges for Policy – Follow below mentioned steps:
Range for Storage Location
- Click on “New Entries” button
- Enter “Value Range” as “VR_STORAGELOCATION”
- Select “Application Module” as “* Cross-Application”
- Enter “Description” as “Sensitive Storage Locations”
- Click on “Save” button
Range for Plant
- Click on “New Entries” button
- Enter “Value Range” as “VR_PLANT”
- Select “Application Module” as “* Cross-Application”
- Enter “Description” as “Sensitive Plants”
- Click on “Save” button
Enter entries in “VR_STORAGELOCATION” Value Range
- Execute Transaction Code “/UISM/V_RANGE”
- Click on “VR_STORAGELOCATION” Value Range
- Click on “Display<- -> Change” button
- Click on “Add New Entry” button
- Add Value as “0001” and Description as “Lagerort 0001” under “Include Value” tab
- Click on “Save” button
Enter entries in “VR_PLANT” Value Range
- Execute Transaction Code “/UISM/V_RANGE”
- Click on “VR_PLANT” Value Range
- Click on “Display<- -> Change” button
- Click on “Add New Entry” button
- Add Value as “0001” and Description as “Werk 0001” under “Include Value” tab
- Click on “Save” button
Maintain Technical Address
In this step, we will associate the Technical Address of the fields to be masked with the Logical Attributes.
You can get the Technical Address of a GUI field by pressing “F1” on the field.
Follow the given path:
SPRO -> SAP NetWeaver -> UI Data Protection Masking for SAP S/4HANA -> Maintain Metadata Configuration -> Maintain Technical Address
Follow below mentioned steps:
Under “GUI Table Field Mapping”, maintain technical address for following fields.
Storage Location
- Click on “New Entries” button
- Enter “Table Name” as “RMMG1”
- Enter “Field Number” as “LGORT”
- Enter “Logical Attribute” as “LA_STORAGELOCATION”
- Enter “Description” as “Sensitive Storage Locations”
- Click on “Save” button
- Click on “Mass Configuration” button which is required to generate technical addresses for Module Pool Programs
Plant
- Click on “New Entries” button
- Enter “Table Name” as “RMMG1”
- Enter “Field Number” as “WERKS”
- Enter “Logical Attribute” as “LA_PLANT”
- Enter “Description” as “Sensitive Plants”
- Click on “Save” button
- Click on “Mass Configuration” button which is required to generate technical addresses for Module Pool Programs
Unrestricted Stock
- Click on “New Entries” button
- Enter “Table Name” as “MARD”
- Enter “Field Number” as “LABST”
- Enter “Logical Attribute” as “LA_UNRESTRICT_STOCK”
- Enter “Description” as “Unrestricted Stock”
- Click on “Save” button
- Click on “Mass Configuration” button which is required to generate technical addresses for Module Pool Programs
Policy Configuration
A Policy is a combination of rules and actions which are defined in one or more blocks. The actions are executed on a sensitive entity (field to be protected) which has to be assigned to a Policy. The conditions are based on contextual attributes which help derive the context.
Context Attributes are logical attributes which are used in designing the rules of a policy. They are mapped to fields which are used to derive the context under which an action is to be executed on a sensitive entity.
Sensitive Entities are logical attributes which are sensitive and need to be protected from unauthorized access.
Follow the given path:
SPRO -> SAP NetWeaver -> UI Data Protection Masking for SAP S/4HANA -> Data Protection Configuration -> Maintain Policy Details for Attribute based Authorizations – Follow below mentioned steps:
- Click on “New Entries” button
- Enter “Policy Name” as “POL_PROTECT_STOCK”
- Select “Type” as “Field Level Masking”
- Select “Application Module” as “* Cross-Application”
- Enter “Description” as “Protect Sensitive Stock based on Plant and Storage Location”
- Click on “Save” button
Write following logic into Policy
Maintain Field Level Security and Masking Configuration
Here, we will define how masking will behave with the logical attribute that we created in above step.
Follow the given path:
SPRO -> SAP NetWeaver -> UI Data Protection Masking for SAP S/4HANA -> Data Protection Configuration -> Maintain Field Level Security and Masking Configuration
Follow below mentioned steps:
- Click on “New Entries” button
- Enter “Sensitive Entity” as “LA_UNRESTRICT_STOCK” and press “Enter” key. “Description” and “Application Module” will get populated in corresponding fields
- Check “Enable Configuration” check-box
- Select “Attribute Based Authorization” option
- Enter “Policy Name” as “POL_PROTECT_STOCK”
- Click on “Save” button
Conclusion
In this blog post, we have learnt how Attribute-based masking is achieved in transactions SE16 and MM03 for masking “Unrestricted Stock” field based on Plant and Storage Location information.