.. _policy_enf:

==================
Policy enforcement
==================

Policies are defined and evaluated in the Congress_ project.
The policy language for Congress is Datalog. The congress policy consists
of the Datalog rules and facts.

Examples of policies are as follows:

* Minimum 2 GB of RAM for all VM instances.
* A certified version for all Apache server instances.
* Data placement policy: all database instances must be deployed at a given
  geographic location enforcing some law restriction on data placement.

These policies are evaluated over data in the form of tables (Congress data
structures). A deployed Murano environment must be decomposed to the Congress
data structures. The decomposed environment is sent to Congress for simulation.
Congress simulates whether the resulting state violates any defined
policy: deployment is aborted in case of policy violation.

Murano uses two predefined policies in Congress:

* ``murano_system`` contains rules and facts of policies defined by the cloud
  administrator.
* ``murano`` contains only facts/records reflecting the resulting state after
  the deployment of an environment.

Records in the ``murano`` policy are queried by rules from
the ``murano_system`` policy. The Congress simulation does not create any
records in the ``murano`` policy, and only provides the feedback on whether
the resulting state violates the policy or not.

As a part of the policy guided fulfillment, you need to enforce policies
on a murano environment deployment. If the policy enforcement fails,
the deployment fails as well.

.. _Congress: https://wiki.openstack.org/wiki/Congress


.. include:: /draft/admin-guide/policy_enforcement/policy_enf_overview.rst
.. include:: /draft/admin-guide/policy_enforcement/policy_enf_setup.rst
.. include:: /draft/admin-guide/policy_enforcement/policy_enf_rules.rst
.. include:: /draft/admin-guide/policy_enforcement/policy_enf_dev.rst
.. include:: /draft/admin-guide/policy_enforcement/policy_enf_modify.rst

