Skip to content

Commit

Permalink
Embellished Jans Lock intro page. (#6844)
Browse files Browse the repository at this point in the history
Signed-off-by: Mustafa Baser <mbaser@mail.com>
  • Loading branch information
nynymike authored and devrimyatar committed Dec 30, 2023
1 parent 0696fb6 commit c372148
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 4 deletions.
46 changes: 42 additions & 4 deletions docs/admin/lock/README.md
Expand Up @@ -11,10 +11,48 @@ tags:

# Jans Lock Overview

Lock enables domains to enforce policies based on real time OAuth data. Lock
pushes token data from Auth Server to [OPA](https://openpolicyagent.org), enabling
authorization based on real time information from the OAuth infrastructure. In
order to use Lock, admins will have to do a few things:
Jans Lock enables domains to enforce access policies based on real time OAuth
data.

Centralized policy management is a best practice for authorization for distributed
networks. If security policies are buried in the code of numerous applications,
they are hard to inventory and harder to update. For decades, application
security architects have conceptualized distributed authorization in line with
[RFC 2409](https://datatracker.ietf.org/doc/html/rfc2904#section-4.4)
and [XACML](https://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-cos01-en.html),
which describe several common components:

|Abbr. | Term | Description |
| ----- | :--: | ----------- |
| PDP | Policy Decision Point | Service which evaluates access requests against authorization policies before issuing access decisions |
| PEP | Policy Enforcement Point | Service, website or API which queries the PDP for authorization |
| PAP | Policy Administration Point | User interface where admins manage authorization policies |
| PIP | Policy Information Point | The "data" about people, clients and resources |
| PRP | Policy Retrieval Point | Repository where policies are stored |

In the old days of "WAM" (web access management), each web server would query
a centralized PDP over the network. This is ok for course grain authorization.
But for fine grain authorization, it is too slow--each decision requires a round
trip HTTP request/response. A more performant design is to move the PDP to the
edge of the network. Policy definition and administration is still a centralized
activity. Once a policy is defined, it can be executed anywhere on the network.
Although multiple PDP instances exist, they must provide the same access control
decisions given the same inputs.

Another critical optimization was to move the PIP to the edge, so the PDP
has all the data it needs to make a decision. This aligns with a principle that
each microservice is well-encapsulated--all logic and data is encapsulated into
a single deployment unit.

![Jans Lock Toplogy](../../assets/lock-design-diagram-02.png)

To empower this cloud native authorization pattern, Janssen leverages a
component governed under the Linux Foundation: [OPA](https://openpolicyagent.org),
a project at the [CNCF](https://cncf.io). OPA is a popular PDP, whose popularity
grew significantly in response to the need for granular policies for Kubernetes
access control. The Jans Lock solution pushes token data from Auth Server to OPA,
enabling authorization based on real time information from the OAuth
infrastructure. In order to use Lock, admins will have to do a few things:

* [Enable Lock in Auth Server](./lock_token_stream.md)
* [Configure a Lock client instance](./lock_client.md)
Expand Down
Binary file modified docs/assets/lock-design-diagram-00.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/lock-design-diagram-02.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit c372148

Please sign in to comment.