Overview
This configuration guide helps developer to create business rules that can be interpreted by ZENworks Mobile Workspace rule engine. Therefore, access rights and security policies can be modified on the fly based on the mobile context and user’s metadata.
Introduction
ZENworks Mobile Workspace security server embeds a business rule engine (BRMS) called Drools. Modified to fit ZENworks Mobile Workspace requirements, it allows to define security policies that cannot be defined directly with ZENworks Mobile Workspace. This is useful when:
-
Security settings must change depending of the context
-
Security settings must be set at a different level than ZENworks Mobile Workspace Security Group (e.g. user)
-
Security settings must be applied depending of external parameter (e.g. user’s calendar)
For ZENworks Mobile Workspace, the following concept has been developed: As an input, the application gather all information it can retrieved on the device and in the server configuration to create a request context. On the other hand, developers or business analysts create rules, based on this context, to modify on the fly security policies and access rights.
Rules development
Available conditional elements
This section list all objects/attributes that can be used to take decision.
User information model
-
Username: MobileUserLogin.name
-
Group name: UserGroup.name
-
Domain name: UserDomain.domainIdentifier
-
Password: SecurityPassword.password
Mobile context model
-
OS name: DeviceInformation.Name.SystemName
-
OS version: DeviceInformation.Name.SystemVersion
-
Device model: DeviceInformation.Name.Model
-
Device Name: DeviceInformation.Name.Name
Time context model
-
Current hour: RulesCalendar.hour
-
Current day: RulesCalendar.day
-
Check interval: RulesCalendar.isInInterval
-
Check weekend: RulesCalendar.isWeekend
-
Check weekday: RulesCalendar.isWeekday
Location context model
-
ISO 3166 2-letter code: RulesCountry.code
-
Full Country Name: RulesCountry.name
-
Latitude: GeoLocation.coordA
-
Longitude: GeoLocation.coordB
-
Altitude: GeoLocation.coordC
-
Accuracy: GeoLocation.uncertainty
-
Coordinate system: GeoLocation.crs
Network context model
-
Host address: IpAddress.hostAddress
-
Check if public address: IpAddress.isPublicAddress
-
Check if private address: IpAddress.isPrivateAddress
-
Check if lookback address: IpAddress.isLoopbackAddress
-
Check if link local address: IpAddress.isLinkLocalAddress
-
Check if site local address: IpAddress.isSiteLocalAddress
Available action elements
This section list all objects/attributes that can be modified depending on the condition.
Session configuration (in SessionContextHolder)
-
Grant access (boolean): SessionContextHolder.accessGranted
-
Access denied reason (AccessDeniedReason): SessionContextHolder.accessDeniedReason
-
UNTRUSTED_DEVICE: Set when the access is denied because of a forbidden device.
-
UNTRUSTED_NETWORK: Set when the access is denied because of the network from where the request is coming.
-
DISALLOWED_APPLICATION: Set when the access is denied because the application is not allowed for the user.
-
LOCATION_REQUIRED: Set when the access is denied because the location of the user is required.
-
NO_REASON: Set when above reasons does not fit the situation.
-
-
Session context (SessionContext): SessionContextHolder.sessionContext
Security policies configuration (in SessionContext)
-
User inactivity timeout (long): SessionContext.userInactivityTimeout
-
Session inactivity timeout (long): SessionContext.sessionInactivityTimeout
-
Background execution (boolean): SessionContext.backgroundExecutionEnabled
-
Max. wrong credentials (int): SessionContext.maximumAuthenticationAttempts
-
Offline access (boolean): SessionContext.offlineAccessEnabled
-
Offline access timeout (long): SessionContext.offlineAccessValidity
-
Location required (boolean): SessionContext.locationRequired
-
Storage availability (boolean): SessionContext.localStorageEnabled
-
Push notification (boolean): SessionContext.pushNotificationsEnabled
Access control configuration (in SessionContext)
-
Workspace components (List): SessionContext.authorizedApps
-
Proxy URL (List): SessionContext.serviceEndpoints
Drools Rule Language (DRL)
Drools is the rule engine embedded in ZENworks Mobile Workspace which understand its own “native” rule language. This document does not aims to teach developers how to write rules as details document is available here: https://docs.jboss.org/drools/release/5.2.0.Final/drools-expert-docs/html/ch05.html.
Using drools language is for expert that have knowledge in Java development and want to create complex rules that may require external libraries. Please refer to existing samples for quick start.
Drools workbench
Drool comes with a workbench allowing developer to create and edit rules with a developer friendly interface:
Automatically generating drool rule file:
To quickly install the workbench, the best is to install Docker and install the drools workbench showcase image.
Excel spreadsheet (XLS, XSLX)
As we have seen in the previous chapter, drool language must be created by developers. However, most of the time, they are not those who will match business needs and rules. Business analyst for example knows the business needs but are unlikely to develop a rule. Therefore, developer needs to provide them an easiest way to create rules.
Here again, this document does not aims to teach developers how to write rules in Excel as details document is available here: https://docs.jboss.org/drools/release/5.2.0.Final/drools-expert-docs/html/ch06.html
Setup of these files must still be done by java developer but when it is ready, the Excel file can be provided to business analyst. Please refer to existing samples for quick start.
The current version of ZENworks Mobile Workspace is not able to upload Excel spreadsheet directly. It must be converted with drools workbench into a DRL file.
ZENworks Mobile Workspace configuration
Once the rule file has been created, it must be uploaded in the security server administration console. Full description can be found in the ZENworks Mobile Workspace Security Server: Administration Guide. Here are the summary steps:
Upload rules
-
Log in the ZENworks Mobile Workspace administration console as an administrator.
-
Click on the
GENERAL
menu. -
Go under the
Contextual rules
tab. -
Create a new rule.
-
Put a name and a version.
-
Upload your rule file.
Enable rules
-
Log in the ZENworks Mobile Workspace administration console as an administrator.
-
Click on the
GENERAL
menu. -
Go under the
Security settings
tab. -
Edit the desired settings (or create a new one).
-
In the
Rules package
section, Enable rules execution ? by checking the box. -
Select the desired rule by clicking in the radio button.