2.3.1. Authorization_enabler

2.3.1.1. Introduction

Authorization server offers a decision-making service based on XACML policies. It has different modules that interact and can be deployed independently such as, PEP (Policy Decision Point), PAP (Policy Administration Point), PIP (Policy Information Point) and PDP (Policy Decision Point). Server will present a Rest interface and will respond to an external authorization request. The decision may be accompanied by a set of action to be launched, in the form of external requests.

2.3.1.2. Features

  • PAP -> Edit and publish policy.

    Policy Administration Point offers a web interface to edit the policy and publish it in XACML format to the location where the PDP will use it.

    • Present a web interface to build a policy

    • Transform to XACML and place it in the PDPs repository

  • PIP -> Serve context information.

    Policy Information Point presents a Rest interface to publish context data to be used by the PDP when resolving the decision. It will also offer another interface (Rest and web) to add data.

    • Present an interface to add data to the storage

    • Serve context information in a Rest interface

  • PEP -> Validate identity and request validation.

    Policy Enforcement Point is the responsible of requesting a decision to the PDP.

    • Validate identity against third party IS

    • Launch request to PDP

  • PDP -> Make decision and launch related actions.

    Policy Decision Point is the module responsible of making the actual decision based on the context information compiled and the policy available.

    • Receive a who / what / where question in a Rest interface for validation

    • Obtain context information from external sources

    • Build a request compiling all the available data

    • Validate against the policy

    • Return Permit or Deny response

    • Launch related post decision actions

PIP

Policy Information Point presents a Rest interface to publish context data to be used by the PDP when resolving the decision. It will also offer another interface (Rest and web) to add data.

2.3.1.3. Place in architecture

"CyberSecurity"
PDP

Policy Decision Point is the module responsible of making the actual decision based on the context information compiled and the policy available.

  • Receive a who / what / where question in a Rest interface for validation

  • Obtain context information from external sources

  • Build a request compiling all the available data

  • Validate against the policy

  • Return Permit or Deny response

  • Launch related post decision actions

2.3.1.4. User guide

Authorization server offers a Rest interface for decision making. The url should include the resource, action and requester id. The response will include the decision to be implemented in the enforcer (Permit or Deny).

Method

Endpoint

Description

Payload (if needed)

Response format

GET

/evaluate?resource=<domain>@<sourceOfId>&action=<actionName>&code=<idCode>

Evaluation request

{ “retcode”: “0”, “resource”:”<domain>@<sourceOfId>”, “action”: <actionName>”, “code”: “<idCode>”, “response”: “Permit”,”msg”: “”}

GET

/evaluate?resource=<domain>@<sourceOfId>&action=<actionName>&code=<idCode>@<userRole>

Evaluation request

{ “retcode”: “0”, “resource”:”<domain>@<sourceOfId>”, “action”: <actionName>”, “code”: “<idCode>@<userRole>”, “response”: “Deny”,”msg”: “”}

The required parameters are:

  • domain: Security domain of the policy in Authzserver

  • sourceOfId: Name of the source of identification of the Authzserver user for the code provided.

  • Action: action=actionName

  • actionName: Name of the action, must match in the policy conditions.

  • idCode: Identification code registered in Authzserver for the user.

  • userRole (Optional): Role of the user in IDM for the client app.

The policy that provides this decision can be configured in the graphic UI provided by de server.

2.3.1.5. Prerequisites

The enabler is prepared to run in a K8S environment. The creation is prepared to be autonomous in such a working environment.

The service consumer will be required to communicate with the server using the described Rest interface.

2.3.1.6. Installation

Enabler is provided as a Helm chart. Refer to specific deployment instructions.

2.3.1.7. Configuration options

The Authorization server options for the rest API to connect are available in the libconfig.py file.

remote_address: str = "auth_server"
remote_port: str = "9000"
remote_username: str = "admin"
remote_password: str = "xxxx"

2.3.1.8. Developer guide

The AuthServer enabler exchanges data with the client application via GET call to the request evaluation endpoint with the required parameters, as it is shown in previous section. They way this exchange data works is at follows:

1- The app sends a Request to the authserver with all the needed data to evaluate it. The required parameters are described before, in the User Guide section.

2- If it is needed external data, such as temperature, humidity, distance between two obejtcs,.. this request will be perfomanced by the Authserver to the PiP REST API server previously configured in the policy.

3- Once the Authserver has all the need data evaluates if the user can perform the action and answers with a “Permit” if it can be done or a “Deny” if not.

Example permit response: {“retcode”:”0”,”resource”:”domain@sourceOfId”,”action”:”actionName”,”code”:”idCode@admin”,”response”:”Permit”,”msg”:””}

Example deny response: {“retcode”:”0”,”resource”:”domain@sourceOfId”,”action”:”actionName”,”code”:”idCode”,”response”:”Deny”,”msg”:””}

2.3.1.9. Version control and release

Version 2.4

  • Policy rule condition editor: Added support for the following comparission operators <, <=, >, >=, appart of the ==. Can be used in string, int and double values.

Version 2.3

  • Enhances in the rule editor GUI

Version 2.2

Version 2.1.

  • Added support for evaluation logging to Elasticsearch.

  • MQTT and Elasticsearch configuration made via new enviroment variables

Version 2.0.

  • GUI Remake with addition of Variable Catalog, for use in PIP configuration and Condition edition.

  • Fixed GUI and code errors in Obligations Execution (fixed https support)

  • Simplified User GUI for rule and PIP edition, removing redundant fields.

Version 1.5.

  • Fixes and enhancements in policy exporting to federated PDPs.

Version 1.0. First stable version.

  • PIP configuration and variable definition via GUI using XACML syntax.

  • MQTT publication of evaluation results

  • Obligation execotion in Premit/Deny evaluations

  • Federation supported.

2.3.1.10. License

Authorization server is is propriety of S21Sec.

MySQL is free and open-source software under the terms of the GNU General Public License.

Apache Tomcat is licensed under Apache License Version 2.0.

2.3.1.11. Notice(dependencies)

Will be determined after the release of the enabler.