From 1776ff2c780dfabbaa1c4a861b330d3dbe470fb6 Mon Sep 17 00:00:00 2001 From: gururajarao79 Date: Thu, 27 Mar 2025 19:29:29 +0530 Subject: [PATCH] opa pdp documentation Issue-ID: POLICY-5329 Change-Id: I38d158446084f2822cefb6499b5b710f47e27e84 Signed-off-by: gururajarao79 --- docs/conf.py | 9 ++ docs/index.rst | 1 + docs/opa/OPA-architecture.rst | 145 +++++++++++++++++++ docs/opa/OPA-decision-example.rst | 58 ++++++++ docs/opa/OPA-dynamic-dataupdate.rst | 93 ++++++++++++ docs/opa/OPA-introduction.rst | 156 +++++++++++++++++++++ docs/opa/OPA-pdp-engine.rst | 73 ++++++++++ docs/opa/OPA-policy-guide.rst | 92 ++++++++++++ docs/opa/images/OPA-PDP.drawio.svg | 4 + docs/opa/images/OPAPDPArchitecture.png | Bin 0 -> 139990 bytes docs/opa/images/PFHighestLevel.svg | 4 + docs/opa/images/opa-service.svg | 1 + docs/opa/opa.rst | 15 ++ docs/opa/resources/cell_consistency.json | 5 + docs/opa/resources/cell_consistency.rego | 14 ++ docs/opa/resources/cell_consistency.yaml | 17 +++ docs/opa/resources/cell_consistency_topology.rego | 6 + docs/opa/resources/data_add_request.json | 27 ++++ docs/opa/resources/data_get_response.json | 7 + docs/opa/resources/data_remove_request.json | 18 +++ docs/opa/resources/data_replace_request.json | 18 +++ docs/opa/resources/decision_request.json | 16 +++ docs/opa/resources/decision_response.json | 6 + docs/opa/resources/onap.policies.native.opa.yaml | 27 ++++ docs/opa/resources/registration_message.json | 15 ++ .../resources/response_to_pdp_state_change.json | 18 +++ docs/opa/resources/response_to_pdp_update.json | 19 +++ 27 files changed, 864 insertions(+) create mode 100644 docs/opa/OPA-architecture.rst create mode 100644 docs/opa/OPA-decision-example.rst create mode 100644 docs/opa/OPA-dynamic-dataupdate.rst create mode 100644 docs/opa/OPA-introduction.rst create mode 100644 docs/opa/OPA-pdp-engine.rst create mode 100644 docs/opa/OPA-policy-guide.rst create mode 100644 docs/opa/images/OPA-PDP.drawio.svg create mode 100644 docs/opa/images/OPAPDPArchitecture.png create mode 100644 docs/opa/images/PFHighestLevel.svg create mode 100644 docs/opa/images/opa-service.svg create mode 100644 docs/opa/opa.rst create mode 100644 docs/opa/resources/cell_consistency.json create mode 100644 docs/opa/resources/cell_consistency.rego create mode 100644 docs/opa/resources/cell_consistency.yaml create mode 100644 docs/opa/resources/cell_consistency_topology.rego create mode 100644 docs/opa/resources/data_add_request.json create mode 100644 docs/opa/resources/data_get_response.json create mode 100644 docs/opa/resources/data_remove_request.json create mode 100644 docs/opa/resources/data_replace_request.json create mode 100644 docs/opa/resources/decision_request.json create mode 100644 docs/opa/resources/decision_response.json create mode 100644 docs/opa/resources/onap.policies.native.opa.yaml create mode 100644 docs/opa/resources/registration_message.json create mode 100644 docs/opa/resources/response_to_pdp_state_change.json create mode 100644 docs/opa/resources/response_to_pdp_update.json diff --git a/docs/conf.py b/docs/conf.py index b4e839ec..61e5f792 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -61,6 +61,15 @@ redoc = [ 'hide-hostname': True, } }, + { + 'name': 'Policy OPA', + 'page': 'opa/local-swagger', + 'spec': 'https://raw.githubusercontent.com/onap/policy-opa-pdp/' + release + '/api/openapi.yaml', + 'opts': { + 'suppress-warnings': True, + 'hide-hostname': True, + } + }, { 'name': 'Policy DROOLS', 'page': 'drools/local-swagger', diff --git a/docs/index.rst b/docs/index.rst index 7922c08e..7110cfe3 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -20,6 +20,7 @@ Policy Framework Architecture drools/drools xacml/xacml apex/apex + opa/opa distribution/distribution clamp/clamp system-attributes/system-attributes diff --git a/docs/opa/OPA-architecture.rst b/docs/opa/OPA-architecture.rst new file mode 100644 index 00000000..a6ea42aa --- /dev/null +++ b/docs/opa/OPA-architecture.rst @@ -0,0 +1,145 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +OPA-PDP high level architecture +******************************* + +.. contents:: + :depth: 3 + +Software Architecture +^^^^^^^^^^^^^^^^^^^^^ + + .. container:: sectionbody + + .. container:: imageblock + + .. container:: content + + |OPA PDP Architecture| + + .. container:: title + + Figure 1. OPA PDP Architecture + + .. container:: ulist + + - **KafkaListener/Producer**: This component listens for incoming PDP_UPDATE and PDP_STATE_CHANGE messages from PAP. OPA PDP sends PDP_STATUS messages to PAP via Producer. + - **OPA PDP Engine**: The Go application that decodes base64 TOSCA policies and handles the deployment and undeployment of policies into the OPA SDK. + + .. container:: ulist + + - Msg Processor: Handles incoming PDP_UPDATE and PDP_STATE_CHANGE messages from PAP. + - PDP STATE: Maintains PDP State Active or Passive. + - Policy Map: In Memory Cache that holds the Map of names of policies,policy keys and data keys deployed. + - Metrics: Handles statistics of number of policies deployed,success and failure counts and other metrics. + + - **OPA SDK**: An Open Source OPA Go library component that stores data and policies in memory and manages the policies. + - **REST Interface**: Exposes APIs for decision-execution, dynamic data updates, fetch statistics, and health checks. + +OPA PDP And PolicyFramework Interaction +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + .. container:: sectionbody + + .. container:: paragraph + + OPA-PDP will handles all messages that PAP sends similar to other PDPs.Following are functionalities supported. + + .. container:: ulist + + - Registration + - Handle PDP_UPDATE + - Handle PDP_STATE_CHANGE + - Send Heartbeat Messages + - Deploy Policy + - Undeploy Policy + + .. container:: paragraph + + Once OPA-PDP is up it will send “Registration”( PDP_STATUS) message to PAP.Some of the information included in the message are: + + .. container:: ulist + + - pdpType the type of the PDP opa . + - pdpGroup to which the PDP should belong to **opaGroup**. + - state the initial state of the PDP which is PASSIVE. + - healthy whether the PDP is “HEALTHY” or not. + - name a name that is unique to the PDP instance for e.g. **opa-f849384c-dd78-4016-a7b5-1c660fb6ee0e** + + .. literalinclude:: resources/registration_message.json + :language: JSON + :caption: Regsitration Message + + .. container:: paragraph + + Upon receiving the registration message PAP sends a PDP_UPDATE message along with the **pdpHeartbeatIntervalMs**, which specifies the time interval at which PDPs should send heartbeats to the PAP. The OPA-PDP starts a timer to send heartbeat messages periodically. Additionally, the OPA-PDP sends a PDP_STATUS response to the PDP_UPDATE message. + + .. literalinclude:: resources/response_to_pdp_update.json + :language: JSON + :caption: Example PDP_STATUS response to PDP_UPDATE + + .. container:: paragraph + + PAP sends a PDP_STATE_CHANGE message to change the state of PDPs from PASSIVE to ACTIVE. After registration, PAP makes a PDP ACTIVE by default. OPA-PDP handles the state change, updates its state accordingly, and sends a PDP_STATUS response. When a PDP becomes ACTIVE .In the ACTIVE state, OPA-PDP is ready to receive decision requests. + + .. literalinclude:: resources/response_to_pdp_state_change.json + :language: JSON + :caption: Example PDP_STATUS response to PDP_STATE_CHANGE + +Deploy OPA policy +^^^^^^^^^^^^^^^^^ + + .. container:: sectionbody + + .. container:: paragraph + + After receiving the PDP_UPDATE message to deploy policies on Kafka, the OPA PDP will perform the following steps: + + .. container:: ulist + + - Parse the message + - Extract policy + - Perform base64 decoding + - Validate Rego syntax of decoded policy + - validate json format of decoded policy + - validate constraints + +.. note:: + .. container:: ulist + + - Policy key should start with policyname. + - Datakey should start with node.policyname. + - The package name in rego file and policy key should be same. + - Policy naming rules are validated. + + +UnDeploy OPA policy +^^^^^^^^^^^^^^^^^^^ + + .. container:: sectionbody + + .. container:: paragraph + + After receiving the PDP_UPDATE message to undeploy policies on Kafka, the OPA PDP will perform the following steps: + + .. container:: ulist + + - Parse the message + - Check policy exists + - Remove data from OPA SDK + - Remove policy from OPA SDK + + + +.. container:: + :name: footer + + .. container:: + :name: footer-text + + 1.0.0-SNAPSHOT + Last updated 2025-03-27 16:04:24 IST + +.. |OPA PDP Architecture| image:: images/OPA-PDP.drawio.svg + :width: 700px + :height: 300px \ No newline at end of file diff --git a/docs/opa/OPA-decision-example.rst b/docs/opa/OPA-decision-example.rst new file mode 100644 index 00000000..6fe7bd19 --- /dev/null +++ b/docs/opa/OPA-decision-example.rst @@ -0,0 +1,58 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +OPA-PDP Decision +**************** + +.. contents:: + :depth: 3 + +OPA-PDP Decision +^^^^^^^^^^^^^^^^ + + .. container:: sectionbody + + .. container:: paragraph + + OPA-PDP supports sending structured responses to decision requests. The OPA-PDP response is similar to the output from the Rego playground. The decision response is based on the "policy filter" provided in the decision request, which is mandatory. The "policyFilter" is a list of filter values, allowing multiple filters to be specified for the required output. If the policy filter contains an empty value, all output parameters are displayed. If an incorrect policy filter value is provided, valid input filters are displayed. The policy ID should be mentioned in the "policyName" field. + Input field should be populated with json for which decision needs to be validated. + + .. csv-table:: + :header: "Header", "Example value", "Description" + :widths: 25,10,70 + + "policyName", "cell.consistency", "tosca-policy" + "policyFilter", "allow", "output parameter" + "input", "{cell:445611193265040128,PCI:2}", "input json" + + .. csv-table:: + :header: "/decision" + :widths: 10 + + `Decision Swagger <./local-swagger.html#tag/OPAPDPDecisionControllerv1>`_ + + .. container:: paragraph + + This operation performs a decision request on PDP whether PCI value 2 can be modified on cell id 445611193265040128. + Here is a sample request: + + .. literalinclude:: resources/decision_request.json + :language: JSON + :caption: cell.consistency decision request json + + .. container:: paragraph + + As the policy allows changes on cell id 445611193265040128 and the pci is in range change is permitted. + Here is a sample response: + + .. literalinclude:: resources/decision_response.json + :language: JSON + :caption: cell.consistency decision response + +.. container:: + :name: footer + + .. container:: + :name: footer-text + + 1.0.0-SNAPSHOT + Last updated 2025-03-27 16:04:24 IST \ No newline at end of file diff --git a/docs/opa/OPA-dynamic-dataupdate.rst b/docs/opa/OPA-dynamic-dataupdate.rst new file mode 100644 index 00000000..738ee5ae --- /dev/null +++ b/docs/opa/OPA-dynamic-dataupdate.rst @@ -0,0 +1,93 @@ +OPA-PDP Dynamic Data Update +*************************** + +.. contents:: + :depth: 3 + +OPA-PDP Dynamic Data Update +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + .. container:: sectionbody + + .. container:: paragraph + + The Data API provides endpoints for reading and writing data in OPA-PDP. However, data updated via the Data API is not persisted in OPA-PDP. + This feature is useful for scenarios where data needs to be dynamically modified without redeploying the policy. Users can also fine-tune and validate the data configuration. Once the configuration is finalized, users can undeploy the existing policy and create new data/policy with the updated configuration. + +GET a Document +^^^^^^^^^^^^^^ + + .. csv-table:: + :header: "/data/{path:.+}","method","example" + :widths: 25,5,25 + + `Data Swagger <./local-swagger.html#tag/OPAPDPDecisionControllerv1>`_,"GET","/data/node/cell/consistency" + + .. container:: paragraph + + This operation gets the data stored in PDP in json format. + + .. literalinclude:: resources/data_get_response.json + :language: JSON + :caption: response for GET cell.consistency data stored in OPA-PDP + +Patch a Document +^^^^^^^^^^^^^^^^ + + .. csv-table:: + :header: "/data/{path:.+}","method","example" + :widths: 25,5,25 + + `Data Swagger <./local-swagger.html#tag/OPAPDPDecisionControllerv1>`_,"PATCH","/data/node/cell/consistency" + + .. container:: paragraph + + Update a document. + + OPA_PDP accepts updates encoded as JSON Patch operations. The message body of the request should contain a JSON encoded array containing one or more JSON Patch operations. + Each operation specifies the operation type, path, and an optional value. For more information on JSON Patch, see RFC 6902. + + The effective path of the JSON Patch operation is obtained by joining the path portion of the URL with the path value from the operation(s) contained in the message body. + In all cases, the parent of the effective path MUST refer to an existing document, otherwise the server returns 404. In the case of **remove** and **replace** operations, the effective path MUST refer to an existing document, otherwise the server returns 404. + + .. csv-table:: + :header: "Header", "Example value", "Description" + :widths: 25,10,70 + + "policyName", "cell.consistency", "tosca-policy" + "op", "add,replace,remove", "operation type" + "path", "maxPCI", "path at which operation needs to be performed refer RFC 6902" + "value","4000", "A string or json content that needs to be replaced or added" + + .. literalinclude:: resources/data_replace_request.json + :language: JSON + :caption: **replace** maxPCI data value to 4000 in cell.consistency policy + + .. literalinclude:: resources/data_remove_request.json + :language: JSON + :caption: **remove** maxPCI element from data in cell.consistency policy + + .. literalinclude:: resources/data_add_request.json + :language: JSON + :caption: **add** test json element to data in cell.consistency policy + +.. warning:: + .. container:: paragraph + + Improper dynamic data updates can leave the data in an incorrect state. In such situations, + you can undeploy and redeploy the policy to restore the old data. Some common mistakes to avoid include: + + .. container:: ulist + + - Removing JSON elements without restoring them. + - Replacing values without restoring them. + - Adding unnecessary data elements. + +.. container:: + :name: footer + + .. container:: + :name: footer-text + + 1.0.0-SNAPSHOT + Last updated 2025-03-27 16:04:24 IST \ No newline at end of file diff --git a/docs/opa/OPA-introduction.rst b/docs/opa/OPA-introduction.rst new file mode 100644 index 00000000..ff1c3875 --- /dev/null +++ b/docs/opa/OPA-introduction.rst @@ -0,0 +1,156 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +Introduction to OPA +*************************** + +.. contents:: + :depth: 3 + +1. Introduction to OPA +^^^^^^^^^^^^^^^^^^^^^^ + + .. container:: sectionbody + + .. container:: paragraph + + `Open Policy Agent (OPA) `__ is an open-source, general-purpose policy engine that unifies policy enforcement across the stack. + It allows you to decouple policy decisions from your service's code, making it easier to manage and maintain policies. + The integration of Open Policy Agent (OPA) as a Policy Decision Point (PDP) within the Open Network Automation Platform (ONAP) enhances the platform's policy management capabilities. + OPA provides a flexible and scalable solution for enforcing policies across various components of ONAP. + + .. container:: imageblock + + .. container:: content + + |OPA Overview| + + .. container:: title + + Figure 1. OPA Overview + +2. Key Benefits +^^^^^^^^^^^^^^^ + + .. container:: sectionbody + + .. container:: paragraph + + - **Unified Policy Enforcement**: OPA allows for consistent policy enforcement across different ONAP modules, ensuring that policies are applied uniformly. + - **Declarative Policy Language**: Policies are written in Rego, a high-level declarative language, making them easy to understand and maintain. + - **Scalability**: OPA's architecture supports horizontal scaling, allowing it to handle large volumes of policy decisions efficiently. + +3. Use Cases +^^^^^^^^^^^^ + + .. container:: sectionbody + + .. container:: paragraph + + - **Access Control**: Enforcing fine-grained access control policies for ONAP services. + - **Resource Management**: Applying policies to manage and allocate network resources efficiently. + - **Compliance**: Ensuring that ONAP operations comply with regulatory and organizational policies. + +4. Rego Language +^^^^^^^^^^^^^^^^ + + .. container:: sectionbody + + .. container:: paragraph + + `Rego `__ is a declarative query language used by the Open Policy Agent (OPA) to write policy as code. It is designed to be easy to read and write, focusing on providing powerful support for referencing nested documents and ensuring that queries are correct and unambiguous.Rego is a powerful and flexible language for defining policies in a declarative manner. It is an essential tool for anyone looking to implement policy as code in their applications. + +4.1 Rego Key Features +###################### + + .. container:: sectionbody + + .. container:: paragraph + + - **Declarative**: Rego allows you to specify what you want to achieve rather than how to achieve it. + - **JSON Support**: Rego works seamlessly with JSON data, making it ideal for modern applications. + - **Policy as Code**: Rego enables you to define policies that can be version-controlled and integrated into your CI/CD pipelines. + +4.2 Basic Syntax +###################### + + .. container:: sectionbody + + .. container:: paragraph + + Rego rules are defined using a simple and intuitive syntax. Here is an example of a basic rule: + + .. container:: codeblock + + .. container:: content + + .. code-block:: + + package example + import rego.v1 + + default allow = false + + allow if { + input.user == "alice" + } + + .. container:: paragraph + + In this example, the `allow` rule is defined to be true if the `input.user` is "alice". + +4.3 Advanced Features +########################### + + .. container:: sectionbody + + .. container:: paragraph + + Rego supports a variety of advanced features, including: + + - **Composite Values**: You can define rules using composite values such as objects and arrays. + - **Built-in Functions**: Rego provides a rich set of built-in functions for manipulating data. + - **Modules**: You can organize your policies into reusable modules. + +4.4 Example +############ + + .. container:: sectionbody + + .. container:: paragraph + + Here is a more complex example that demonstrates some of Rego's capabilities: + + .. container:: codeblock + + .. container:: content + + .. code-block:: + + package example + import rego.v1 + + import data.servers + + default allow = false + + allow if { + input.user == "admin" + servers[input.server].owner == input.user + } + + .. container:: paragraph + + In this example, the `allow` rule checks if the `input.user` is "admin" and if they own the specified server. + +.. container:: + :name: footer + + .. container:: + :name: footer-text + + 1.0.0-SNAPSHOT + Last updated 2025-03-27 16:04:24 IST + +.. |OPA Overview| image:: images/opa-service.svg + :width: 300px + :height: 200px \ No newline at end of file diff --git a/docs/opa/OPA-pdp-engine.rst b/docs/opa/OPA-pdp-engine.rst new file mode 100644 index 00000000..b040ed78 --- /dev/null +++ b/docs/opa/OPA-pdp-engine.rst @@ -0,0 +1,73 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Policy OPA PDP Engine +##################### + +.. contents:: + :depth: 3 + +Policy OPA PDP Engine +^^^^^^^^^^^^^^^^^^^^^ + + .. container:: sectionbody + + .. container:: paragraph + + The ONAP OPA Policy PDP Engine leverages OPA, an `open source implementation `__, to support fine-grained policy decisions in the ONAP. The REGO 1.0 Standard serves as the policy language for access control decisions. The ONAP OPA PDP translates TOSCA Compliant Policies into the Rego language, loads them into the OPA engine, exposes a decision api for delivering decisions. + +ONAP OPA PDP Supported Policy Types +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + .. container:: sectionbody + + .. container:: paragraph + + Currently, only Native Policy is supported. This policy type can be used by any client or ONAP component that requires native OPA evaluation: + + .. csv-table:: Supported Base Policy Types + :header: "Application", "Base Policy Type", "Description" + + "Native", "onap.policies.native.opa", "OPA PDP Policies" + + .. container:: paragraph + + The TOSCA template for the OPA policy type is shown below: + + .. literalinclude:: resources/onap.policies.native.opa.yaml + :language: YAML + :caption: OPA Policy type + :linenos: + +How OPA PDP Works in ONAP Policy Framework +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + .. container:: sectionbody + + .. container:: paragraph + + opa-pdp integrates into policy framework like any other pdp engine in policy framework + + 1. **Policy Definition**: Policies are defined using native opa policytype and stored in a central repository. + 2. **Policy Deployment**: The Policy Administration Point (PAP) deploys these policies to the OPA PDP instances. + 3. **Policy Evaluation**: When a policy decision is needed, ONAP components can query the OPA PDP, which evaluates the request against the deployed policies and returns a decision. + 4. **Policy Updates**: The PAP can update policies dynamically, and OPA PDP instances will automatically pick up these changes without downtime. + + .. container:: imageblock + + .. container:: content + + |ONAP POLICY FRAMEWORK| + +.. container:: + :name: footer + + .. container:: + :name: footer-text + + 1.0.0-SNAPSHOT + Last updated 2025-03-27 16:04:24 IST + +.. |ONAP POLICY FRAMEWORK| image:: images/PFHighestLevel.svg + :width: 500px + :height: 100px \ No newline at end of file diff --git a/docs/opa/OPA-policy-guide.rst b/docs/opa/OPA-policy-guide.rst new file mode 100644 index 00000000..369de6e7 --- /dev/null +++ b/docs/opa/OPA-policy-guide.rst @@ -0,0 +1,92 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +OPA PDP Policy Guide +******************** + +.. contents:: + :depth: 3 + +Policy Creation Steps +^^^^^^^^^^^^^^^^^^^^^ + + .. container:: sectionbody + + .. container:: paragraph + + Following are the steps in writing a policy. + + .. container:: ulist + + 1. write rego files for policy.OPA PDP supports rego version v1. + 2. write json file for data + 3. Encode rego files and json to base64 + 4. write tosca policy with encoded content + + Let us assume we are writing a policy to check whether modifying a PCI value on a cell is allowed. + +write rego files for policy +########################### + + .. container:: paragraph + + When writing Rego files, if you need to use data, you must reference it with the data key. For example: data.node.cell.consistency.minPCI. + + .. literalinclude:: resources/cell_consistency.rego + :caption: rego code to check PCI range validation + :linenos: + + .. literalinclude:: resources/cell_consistency_topology.rego + :caption: rego code to check whether PCI change allowed on current cell + :linenos: + +.. note:: + .. container:: ulist + + - OPA PDP supports rego version v1 + +write json for data +################### + + .. literalinclude:: resources/cell_consistency.json + :language: JSON + :caption: data file which acts as a data source for policy checks + :linenos: + +Encode rego files and json to base64 write tosca policy +######################################################## + + .. literalinclude:: resources/cell_consistency.yaml + :language: YAML + :caption: tosca policy cell consistency + :linenos: + + .. container:: paragraph + + In the above yaml file two fields that are important are data and policy.Both are of type map they have key and value pair. + + .. note:: + .. container:: ulist + + - while writing policy keys should start with policy-id (eg:cell.consistency,cell.consistency.topology) + - while writing data keys should start with node. (eg:node.cell.consistency) + - The package name (eg: cell.consistency) inside the rego file should match the policy key. + + .. container:: paragraph + + TOSCA policy names must adhere to naming rules. The OPA PDP emphasizes that each TOSCA policy should have a unique policy name or policy ID. Internally, the OPA PDP creates directories based on the name structure. If two policy names share the same parent hierarchy (considering . as the hierarchy delimiter), deleting a policy higher in the hierarchy will also delete its child policies. To prevent this, the following constraints are added. + + .. container:: ulist + + - **Not Allowed**: If a policy named onap.org.cell is deployed, then deploying a policy named onap.org.cell.consistency is disallowed because this name shares the direct hierarchical structure. + - **Not Allowed**: If a policy named onap.org.cell is deployed, then deploying a policy named onap.org is disallowed because it is parent directory. + - **Allowed**: If a policy named onap.org.cell is deployed, then deploying a policy named onap.org.consistency,onap.org1.cell,onap1.org.cell is permitted, as it does not share the same hierarchy. + + +.. container:: + :name: footer + + .. container:: + :name: footer-text + + 1.0.0-SNAPSHOT + Last updated 2025-03-27 16:04:24 IST \ No newline at end of file diff --git a/docs/opa/images/OPA-PDP.drawio.svg b/docs/opa/images/OPA-PDP.drawio.svg new file mode 100644 index 00000000..0176071b --- /dev/null +++ b/docs/opa/images/OPA-PDP.drawio.svg @@ -0,0 +1,4 @@ + + + +
PAP
Kafka Listener/Producer
In Memory 
OPA-PDP
Apache Kafka
policy-pdp-pap
OPA SDK
/Policies
/Data
In Memory
Msg Processor
OPA PDP Engine
Policy Map
PDP State
Metrics
REST API
OPA opensource SDK
OPA PDP Components
\ No newline at end of file diff --git a/docs/opa/images/OPAPDPArchitecture.png b/docs/opa/images/OPAPDPArchitecture.png new file mode 100644 index 0000000000000000000000000000000000000000..850e627d1210f5b14c28a3a5b90bd5400049f80e GIT binary patch literal 139990 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 + + +
PolicyAPI
PolicyAPI
PolicyDB
PolicyDB
PolicyAdministration
PolicyAdministration
opa-pdp
opa-pdp
Policy Framework Component
Policy Framework Component
Other Component
Other Component
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/opa/images/opa-service.svg b/docs/opa/images/opa-service.svg new file mode 100644 index 00000000..53d6d977 --- /dev/null +++ b/docs/opa/images/opa-service.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/opa/opa.rst b/docs/opa/opa.rst new file mode 100644 index 00000000..cae59dc1 --- /dev/null +++ b/docs/opa/opa.rst @@ -0,0 +1,15 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +.. _opa-doc: + +Policy OPA PDP Engine +---------------------- +.. toctree:: + :maxdepth: 1 + + OPA-introduction.rst + OPA-pdp-engine.rst + OPA-architecture.rst + OPA-policy-guide.rst + OPA-decision-example.rst + OPA-dynamic-dataupdate.rst \ No newline at end of file diff --git a/docs/opa/resources/cell_consistency.json b/docs/opa/resources/cell_consistency.json new file mode 100644 index 00000000..3e397049 --- /dev/null +++ b/docs/opa/resources/cell_consistency.json @@ -0,0 +1,5 @@ +{ + "allowedCellId" : 445611193265040129, + "minPCI": 1, + "maxPCI": 3000 + } \ No newline at end of file diff --git a/docs/opa/resources/cell_consistency.rego b/docs/opa/resources/cell_consistency.rego new file mode 100644 index 00000000..c5f3dd25 --- /dev/null +++ b/docs/opa/resources/cell_consistency.rego @@ -0,0 +1,14 @@ +package cell.consistency +import rego.v1 +import data.cell.consistency.topology +default allow = false +# Rule to allow if PCI is within range 1-3000 +allow_if_pci_in_range if { + input.PCI >= data.node.cell.consistency.minPCI + input.PCI <= data.node.cell.consistency.maxPCI +} +# Main rule to determine the final decision +allow if{ + topology.check_cell_consistency + allow_if_pci_in_range +} \ No newline at end of file diff --git a/docs/opa/resources/cell_consistency.yaml b/docs/opa/resources/cell_consistency.yaml new file mode 100644 index 00000000..7437fcfa --- /dev/null +++ b/docs/opa/resources/cell_consistency.yaml @@ -0,0 +1,17 @@ +tosca_definitions_version: tosca_simple_yaml_1_1_0 +topology_template: + policies: + - cell.consistency: + type: onap.policies.native.opa + type_version: 1.0.0 + properties: + data: + node.cell.consistency: eyAgIAogICJhbGxvd2VkQ2VsbElkIiA6IDQ0NTYxMTE5MzI2NTA0MDEyOSwgCiAgIm1pblBDSSI6IDEsIAogICJtYXhQQ0kiOiAzMDAwICAKIH0= + policy: + cell.consistency: cGFja2FnZSBjZWxsLmNvbnNpc3RlbmN5CmltcG9ydCByZWdvLnYxCmltcG9ydCBkYXRhLmNlbGwuY29uc2lzdGVuY3kudG9wb2xvZ3kKZGVmYXVsdCBhbGxvdyA9IGZhbHNlCiMgUnVsZSB0byBhbGxvdyBpZiBQQ0kgaXMgd2l0aGluIHJhbmdlIDEtMzAwMAphbGxvd19pZl9wY2lfaW5fcmFuZ2UgIGlmIHsKICAgIGlucHV0LlBDSSA+PSBkYXRhLm5vZGUuY2VsbC5jb25zaXN0ZW5jeS5taW5QQ0kKICAgIGlucHV0LlBDSSA8PSBkYXRhLm5vZGUuY2VsbC5jb25zaXN0ZW5jeS5tYXhQQ0kKfQojIE1haW4gcnVsZSB0byBkZXRlcm1pbmUgdGhlIGZpbmFsIGRlY2lzaW9uCmFsbG93ICBpZnsKICAgIHRvcG9sb2d5LmNoZWNrX2NlbGxfY29uc2lzdGVuY3kKICAgIGFsbG93X2lmX3BjaV9pbl9yYW5nZQp9 + cell.consistency.topology: cGFja2FnZSBjZWxsLmNvbnNpc3RlbmN5LnRvcG9sb2d5CmltcG9ydCByZWdvLnYxCiMgUnVsZSB0byBjaGVjayBjZWxsIGNvbnNpc3RlbmN5CmNoZWNrX2NlbGxfY29uc2lzdGVuY3kgaWYgewogICAgaW5wdXQuY2VsbCAhPSBkYXRhLm5vZGUuY2VsbC5jb25zaXN0ZW5jeS5hbGxvd2VkQ2VsbElkCn0= + name: cell.consistency + version: 1.0.0 + metadata: + policy-id: cell.consistency + policy-version: 1.0.0 \ No newline at end of file diff --git a/docs/opa/resources/cell_consistency_topology.rego b/docs/opa/resources/cell_consistency_topology.rego new file mode 100644 index 00000000..e8f22f7e --- /dev/null +++ b/docs/opa/resources/cell_consistency_topology.rego @@ -0,0 +1,6 @@ +package cell.consistency.topology +import rego.v1 +# Rule to check cell consistency +check_cell_consistency if { + input.cell != data.node.cell.consistency.allowedCellId +} \ No newline at end of file diff --git a/docs/opa/resources/data_add_request.json b/docs/opa/resources/data_add_request.json new file mode 100644 index 00000000..e41d9f4f --- /dev/null +++ b/docs/opa/resources/data_add_request.json @@ -0,0 +1,27 @@ +{ + "onapName": "CDS", + "onapComponent": "CDS", + "onapInstance": "CDS", + "currentDateTime": "2025-01-17T08:26:41.857Z", + "currentDate": "2025-01-17", + "currentTime": "08:26:41.857Z", + "timeZone": "UTC", + "timeOffset": "+08:45", + "policyName": "cell.consistency", + "data": [ + { + "op": "add", + "path": "/test", + "value": { + "id": "s5", + "name": "job", + "protocols": [ + "amqp" + ], + "ports": [ + "p3" + ] + } + } + ] +} \ No newline at end of file diff --git a/docs/opa/resources/data_get_response.json b/docs/opa/resources/data_get_response.json new file mode 100644 index 00000000..c7487c89 --- /dev/null +++ b/docs/opa/resources/data_get_response.json @@ -0,0 +1,7 @@ +{ + "data": { + "allowedCellId": 445611193265040100, + "maxPCI": 3000, + "minPCI": 1 + } +} diff --git a/docs/opa/resources/data_remove_request.json b/docs/opa/resources/data_remove_request.json new file mode 100644 index 00000000..ed091f9c --- /dev/null +++ b/docs/opa/resources/data_remove_request.json @@ -0,0 +1,18 @@ +{ + "onapName": "CDS", + "onapComponent": "CDS", + "onapInstance": "CDS", + "currentDateTime": "2025-01-17T08:26:41.857Z", + "currentDate": "2025-01-17", + "currentTime": "08:26:41.857Z", + "timeZone": "UTC", + "timeOffset": "+08:45", + "policyName": "cell.consistency", + "data": [ + { + "op": "remove", + "path": "maxPCI", + "value": 4000 + } + ] +} \ No newline at end of file diff --git a/docs/opa/resources/data_replace_request.json b/docs/opa/resources/data_replace_request.json new file mode 100644 index 00000000..ba41109b --- /dev/null +++ b/docs/opa/resources/data_replace_request.json @@ -0,0 +1,18 @@ +{ + "onapName": "CDS", + "onapComponent": "CDS", + "onapInstance": "CDS", + "currentDateTime": "2025-01-17T08:26:41.857Z", + "currentDate": "2025-01-17", + "currentTime": "08:26:41.857Z", + "timeZone": "UTC", + "timeOffset": "+08:45", + "policyName": "cell.consistency", + "data": [ + { + "op": "replace", + "path": "maxPCI", + "value": 4000 + } + ] +} \ No newline at end of file diff --git a/docs/opa/resources/decision_request.json b/docs/opa/resources/decision_request.json new file mode 100644 index 00000000..89661ac5 --- /dev/null +++ b/docs/opa/resources/decision_request.json @@ -0,0 +1,16 @@ +{ + "onapName": "CDS", + "onapComponent": "CDS", + "onapInstance": "CDS", + "currentDateTime": "2025-01-17T08:26:41.857Z", + "currentDate": "2025-01-17", + "currentTime": "08:26:41.857Z", + "timeZone": "UTC", + "timeOffset": "+08:45", + "policyName": "cell.consistency", + "policyFilter": ["allow"], + "input": { + "cell": 445611193265040128, + "PCI": 2 + } +} diff --git a/docs/opa/resources/decision_response.json b/docs/opa/resources/decision_response.json new file mode 100644 index 00000000..45c2ef43 --- /dev/null +++ b/docs/opa/resources/decision_response.json @@ -0,0 +1,6 @@ +{ + "output": { + "allow": true + }, + "policyName": "cell.consistency" +} \ No newline at end of file diff --git a/docs/opa/resources/onap.policies.native.opa.yaml b/docs/opa/resources/onap.policies.native.opa.yaml new file mode 100644 index 00000000..8d695c53 --- /dev/null +++ b/docs/opa/resources/onap.policies.native.opa.yaml @@ -0,0 +1,27 @@ +tosca_definitions_version: tosca_simple_yaml_1_1_0 +policy_types: + onap.policies.Native: + derived_from: tosca.policies.Root + description: a base policy type for all native PDP policies + version: 1.0.0 + name: onap.policies.Native + onap.policies.native.opa: + derived_from: onap.policies.Native + version: 1.0.0 + name: onap.policies.native.opa + description: a policy type for native opa policies + properties: + data: + type: map + type_version: 0.0.0 + description: The base64 encoded json data for Policy. + required: false + metadata: + encoding: Base64 + policy: + type: map + type_version: 0.0.0 + description: The base64 encoded rego PolicySet or Policy. + required: true + metadata: + encoding: Base64 \ No newline at end of file diff --git a/docs/opa/resources/registration_message.json b/docs/opa/resources/registration_message.json new file mode 100644 index 00000000..bd5d4b07 --- /dev/null +++ b/docs/opa/resources/registration_message.json @@ -0,0 +1,15 @@ +{ + "messageName": "PDP_STATUS", + "pdpType": "opa", + "state": "PASSIVE", + "healthy": "HEALTHY", + "description": "Pdp Status Registration Message", + "response": null, + "policies": [], + "name": "opa-4cd0a060-19bc-45ab-9955-7664d2b9604b", + "requestId": "9c73856c-3d02-4236-838f-3d58ea5cc058", + "pdpGroup": "opaGroup", + "pdpSubgroup": null, + "timestampMs": "1743010891210", + "deploymentInstanceInfo": "" +} \ No newline at end of file diff --git a/docs/opa/resources/response_to_pdp_state_change.json b/docs/opa/resources/response_to_pdp_state_change.json new file mode 100644 index 00000000..f08cea6b --- /dev/null +++ b/docs/opa/resources/response_to_pdp_state_change.json @@ -0,0 +1,18 @@ +{ + "messageName": "PDP_STATUS", + "pdpType": "opa", + "state": "ACTIVE", + "healthy": "HEALTHY", + "description": "Pdp Status Response Message to Pdp State Change", + "response": { + "responseTo": "3edbb47c-b015-4fd9-9572-26cde97cc23c", + "responseStatus": "SUCCESS", + "responseMessage": "PDP State Changed From PASSIVE TO Active" + }, + "policies": null, + "name": "opa-949018d3-cc9b-429b-96ae-46ca9c314e42", + "requestId": "02b186a6-485d-4392-90fa-d4cac34be97a", + "pdpGroup": "defaultGroup", + "pdpSubgroup": "opa", + "timestampMs": "1731335550069" +} \ No newline at end of file diff --git a/docs/opa/resources/response_to_pdp_update.json b/docs/opa/resources/response_to_pdp_update.json new file mode 100644 index 00000000..b1b65702 --- /dev/null +++ b/docs/opa/resources/response_to_pdp_update.json @@ -0,0 +1,19 @@ +{ + "messageName": "PDP_STATUS", + "pdpType": "opa", + "state": "PASSIVE", + "healthy": "HEALTHY", + "description": "Pdp Status Response Message For Pdp Update", + "response": { + "responseTo": "06f6d05f-6045-48d9-bcd8-40364fb695ae", + "responseStatus": "SUCCESS", + "responseMessage": "PDP Update was Successful" + }, + "policies": null, + "name": "opa-949018d3-cc9b-429b-96ae-46ca9c314e42", + "requestId": "e6a0607f-5fc8-4d62-afca-3cb984d827a3", + "pdpGroup": "defaultGroup", + "pdpSubgroup": "opa", + "timestampMs": "1731335550030", + "deploymentInstanceInfo":"" +} \ No newline at end of file -- 2.16.6