Skip to content

Commit 8cbe46a

Browse files
committed
refactor(docs): improve formatting and linking on architecture page
This refactors the architecture page to improve readability and navigation. The layout is updated to a single column, the diagram is reoriented, and all components and NIST terms are now linked to their respective pages.
1 parent e46aeea commit 8cbe46a

File tree

1 file changed

+57
-49
lines changed

1 file changed

+57
-49
lines changed

docs/architecture.mdx

Lines changed: 57 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -4,71 +4,79 @@ sidebar_position: 3
44

55
# Architecture
66

7-
## Overview
7+
OpenTDF is built on a flexible, service-oriented architecture designed for robust and fine-grained access control. The platform consists of four core components that work together to protect data throughout its lifecycle. This architecture aligns with the well-established [National Institute of Standards and Technology (NIST)](https://www.nist.gov) model for [Attribute-Based Access Control (ABAC)](https://csrc.nist.gov/projects/attribute-based-access-control), ensuring a standards-based and interoperable approach.
88

9-
The OpenTDF platform is made up of 4 main components:
9+
## Core Platform Components
1010

11-
- **[Policy](components/policy/)** - Manages attribute-based access control (ABAC) policies, including namespaces, attributes, values, and their relationships
12-
- **[Authorization](components/authorization)** - Handles entitlement decisions based on policy evaluation and entity context
13-
- **[Key Access Server (KAS)](components/key_access)** - Manages cryptographic keys and provides secure key access for TDF encryption/decryption
14-
- **[Entity Resolution Service](components/entity_resolution)** - Interfaces with Identity Providers (IdPs) to resolve entity information for authorization decisions
15-
16-
## High-Level Architecture
11+
The four main services of the OpenTDF platform are the Policy Service, Authorization Service, Entity Resolution Service, and the Key Access Server.
1712

1813
```mermaid
1914
graph TD
20-
%% External Systems
21-
CLIENT["🖥️ Client Application"]
22-
IDP["🔐 Identity Provider<br/>(Keycloak, Auth0, etc.)"]
23-
24-
%% OpenTDF Platform Components
15+
CLIENT["🖥️ Client Application"]
16+
2517
subgraph "OpenTDF Platform"
26-
POLICY["📋 Policy Service<br/>• Attribute Management<br/>• Subject Mappings<br/>• Resource Mappings<br/>• Key Access Grants"]
27-
28-
AUTHZ["⚖️ Authorization Service<br/>• Entitlement Decisions<br/>• Policy Evaluation<br/>• ABAC Enforcement"]
29-
30-
ERS["👥 Entity Resolution<br/>• JWT Token Parsing<br/>• Entity Chain Creation<br/>• IdP Integration"]
31-
32-
KAS["🔑 Key Access Server<br/>• Key Management<br/>• TDF Encrypt/Decrypt<br/>• Access Control"]
18+
KAS["🛡️ Key Access Server<br/><i>(Implements NIST PEP)</i>"]
19+
AUTHZ["🧠 Authorization Service<br/><i>(Implements NIST PDP)</i>"]
20+
ERS["ℹ️ Entity Resolution Service<br/><i>(Implements NIST PIP)</i>"]
21+
POLICY["🏢 Policy Service<br/><i>(Implements NIST PAP)</i>"]
22+
end
23+
24+
subgraph "External Systems"
25+
IDP["🔐 Identity Provider"]
26+
ATTR_SOURCES["📚 Optional Attribute Sources<br/>(LDAP, SQL, etc.)"]
3327
end
28+
29+
CLIENT -->|1. Authenticates| IDP
30+
CLIENT -->|2. Access Request| KAS
3431
35-
%% TDF Operations
36-
TDF_ENC["📦 TDF Creation<br/>(Encrypt)"]
37-
TDF_DEC["📂 TDF Access<br/>(Decrypt)"]
32+
KAS -->|3. Decision Request| AUTHZ
3833
39-
%% Flow connections
40-
CLIENT -->|"1. Authenticate"| IDP
41-
CLIENT -->|"2. Create TDF"| TDF_ENC
42-
CLIENT -->|"3. Access TDF"| TDF_DEC
34+
AUTHZ -->|4. Get Policies| POLICY
35+
AUTHZ -->|5. Get Attributes| ERS
4336
44-
TDF_ENC -->|"Get Policy & Keys"| POLICY
45-
TDF_ENC -->|"Encrypt with Keys"| KAS
37+
ERS -->|6. Optionally Query| ATTR_SOURCES
4638
47-
TDF_DEC -->|"Rewrap Request<br/>+ Access Token"| KAS
48-
KAS -->|"Parse Token<br/>Extract Entities"| ERS
49-
ERS -->|"Query Entity Data"| IDP
50-
KAS -->|"Authorization Request<br/>+ Entity Chain"| AUTHZ
51-
AUTHZ -->|"Get Policies<br/>& Mappings"| POLICY
52-
AUTHZ -->|"Decision"| KAS
53-
KAS -->|"Unwrapped Key<br/>(if authorized)"| TDF_DEC
39+
AUTHZ -->|7. Decision| KAS
5440
55-
%% Styling
56-
classDef platformService fill:#e1f5fe,stroke:#01579b,stroke-width:2px
41+
KAS -->|8. Grant/Deny Access| CLIENT
42+
43+
classDef opentdfService fill:#e1f5fe,stroke:#01579b,stroke-width:2px
5744
classDef externalSystem fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
58-
classDef tdfOperation fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
5945
60-
class POLICY,AUTHZ,ERS,KAS platformService
61-
class CLIENT,IDP externalSystem
62-
class TDF_ENC,TDF_DEC tdfOperation
46+
class POLICY,AUTHZ,ERS,KAS opentdfService
47+
class ATTR_SOURCES,IDP,CLIENT externalSystem
48+
49+
click POLICY "components/policy/"
50+
click AUTHZ "components/authorization"
51+
click ERS "components/entity_resolution"
52+
click KAS "components/key_access"
6353
```
6454

65-
## Component Interactions
55+
### [Policy Service](components/policy/)
56+
57+
The Policy Service is where all access control policies are defined and managed. It provides the tools and APIs to create a rich set of policies that govern data access. This includes not only attributes and their values, but also the definitions of **actions, obligations, and key access mappings**.
58+
59+
In the context of the NIST ABAC model, the Policy Service functions as the [Policy Administration Point (PAP)](https://csrc.nist.gov/glossary/term/policy_administration_point).
60+
61+
### [Authorization Service](components/authorization)
62+
63+
The Authorization Service is the core decision-making engine of the platform. It is responsible for evaluating the rich policies from the Policy Service against a set of attributes to render an authorization decision.
64+
65+
In the context of the NIST ABAC model, it functions as the [Policy Decision Point (PDP)](https://csrc.nist.gov/glossary/term/policy_decision_point).
66+
67+
### [Entity Resolution Service (ERS)](components/entity_resolution)
68+
69+
The Entity Resolution Service is responsible for gathering the attributes about a subject needed for a decision. By default, it can derive attributes from claims in an authentication token. Optionally, it can be configured to connect to external attribute sources (LDAP, SQL) to "hydrate" the entity with more attributes.
70+
71+
In the context of the NIST ABAC model, the ERS functions as the [Policy Information Point (PIP)](https://csrc.nist.gov/glossary/term/policy_information_point).
72+
73+
### [Key Access Server (KAS)](components/key_access)
74+
75+
The Key Access Server (KAS) enforces access control decisions. Its role is more extensive than a typical enforcement point:
6676

67-
The OpenTDF platform components work together to provide secure, policy-based access to encrypted data:
77+
- **Cryptographic Enforcement:** It enforces decisions by granting or withholding cryptographic keys for TDF decryption.
78+
- **Encryption Enablement:** It manages key exchanges and enables various TDF encryption modes.
6879

69-
1. **Policy Service** defines the rules and attributes that govern access
70-
2. **Entity Resolution Service** translates authentication tokens into entity representations
71-
3. **Authorization Service** evaluates policies against entity context to make access decisions
72-
4. **Key Access Server** enforces those decisions by providing or denying access to decryption keys
80+
In the context of the NIST ABAC model, the KAS functions as the [Policy Enforcement Point (PEP)](https://csrc.nist.gov/glossary/term/policy_enforcement_point).
7381

74-
This architecture enables fine-grained, attribute-based access control while maintaining the security and integrity of encrypted data throughout its lifecycle.
82+
Furthermore, the OpenTDF platform is designed for flexibility. Developers can **build and integrate their own custom PEPs**. These custom enforcement points can leverage the platform's robust Authorization ([PDP](https://csrc.nist.grov/glossary/term/policy_decision_point)) and Policy ([PAP](https://csrc.nist.gov/glossary/term/policy_administration_point)) services while implementing enforcement logic tailored to specific applications. These custom PEPs can also optionally interface with the KAS to take advantage of its powerful cryptographic capabilities.

0 commit comments

Comments
 (0)