Skip to content

Commit a42fce0

Browse files
docs: add missing architecture overview diagram
1 parent 7f5bdbb commit a42fce0

2 files changed

Lines changed: 7 additions & 8 deletions

File tree

262 KB
Loading

docs/decisions/0005-architecture-and-data-modeling.rst

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,11 @@ The architecture consists of several key components:
4040

4141
Here is an overview diagram of the architecture:
4242

43-
.. image:: ../images/architecture-overview.png
43+
.. image:: ../_images/architecture-overview.png
4444
:alt: Architecture Overview
4545
:align: center
4646
:width: 600px
4747

48-
4948
This architecture is supported by detailed design decisions outlined below.
5049

5150
Decision
@@ -70,7 +69,7 @@ A Dedicated Open edX Layer for Authorization
7069

7170
Interact with the Policy Store via the Open edX Layer
7271
------------------------------------------------------
73-
- The policy store, which can be a database or configuration files (e.g., authz.policy) will be accessed and managed through the Open edX Layer. No direct access to the policy store should be made by services.
72+
- The policy store, which can be a database or configuration files (e.g., ``authz.policy``) will be accessed and managed through the Open edX Layer. No direct access to the policy store should be made by services.
7473
- The Open edX Layer will handle loading policies from the policy store into the Authorization Engine and ensure that policies are kept up to date.
7574
- The Open edX Layer will also manage the separation between static policies (shipped with services) and dynamic policies (managed via the policy data store) to ensure clarity and maintainability.
7675

@@ -96,7 +95,7 @@ Store All Policies in the Policy Store
9695
--------------------------------------
9796
- All policies (i.e., any type of rule) should be stored in the policy store to ensure a single source of truth for authorization.
9897
- Use the policy store to manage RBAC mappings, such as user-role and role-permission assignments, using Casbin's grouping policies (``g, g2``).
99-
- Use Casbin's adapter APIs to load policies from the policy store into the Authorization Engine at startup and whenever policies are updated.
98+
- Use Casbin's adapter APIs based on Django APIs to load policies from the policy store into the Authorization Engine at startup and whenever policies are updated.
10099

101100
Maintain Consistent Model and Policy Definitions Across Services
102101
----------------------------------------------------------------
@@ -106,12 +105,12 @@ Maintain Consistent Model and Policy Definitions Across Services
106105
#. Client Interactions with the Authorization System
107106
=====================================================
108107

109-
Use the Enforcement API for Authorization Decisions
110-
---------------------------------------------------
108+
Use the Enforcement API for Authorization Decisions for External Clients
109+
------------------------------------------------------------------------
111110
- External clients (e.g., MFEs, IDAs, or any service not co-located with the policy store) must use the REST API provided by the Open edX authorization layer to request authorization decisions.
112111

113-
Use a Stable and Versioned Public API
114-
-------------------------------------
112+
Use a Stable and Versioned Public API for Other Clients
113+
-------------------------------------------------------
115114
- The Open edX Layer will provide a stable and versioned Public API for services to interact with the authorization system. This API will be well-documented and include clear contracts for inputs, outputs, and error handling.
116115
- In-process clients (e.g., LMS, CMS, or any service co-located with the policy store) may use this Public API (``api.py``) directly to interact with the Open edX Layer without going through the REST API, but they must still adhere to the same contracts and versioning.
117116
- Clients must provide all necessary context for authorization decisions, including subject, action, object, and any relevant contextual information (e.g., organization, course) and the authorization layer will make the decision based on the policies in the policy store.

0 commit comments

Comments
 (0)