Skip to content

Commit 71c8425

Browse files
adds workflow descriptions
1 parent aff559b commit 71c8425

File tree

1 file changed

+70
-1
lines changed

1 file changed

+70
-1
lines changed

enhancements/workload-identity-management/zero-trust-workload-identity-manager.md

+70-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ A new zero-trust-workload-identity-manager operator will manage the deployment a
6666
- `SPIFFE CSI Driver` as a DaemonSet to inject workload identities (`SVIDs`) into pods.
6767
- Resources `(RBAC, ServiceAccount, ClusterRole, etc.)` are created from static manifest templates.
6868

69-
The operator will create and manage the following resources to deploy SPIRE and SPIFFE components:
69+
The operator will create and manage the following resources to deploy SPIRE and SPIFFE components, Please refer `Implementation Details/Notes/Constraints` section for more details:
7070

7171
1. Core Infrastructure
7272
- Namespaces:
@@ -146,6 +146,75 @@ Refer below links for more information on the labels used
146146

147147
### Workflow Description
148148

149+
#### 1. **Operator Installation**
150+
- **Action**: Install the operator via **OpenShift OperatorHub** or CLI.
151+
- **Result**: The operator deploys:
152+
- **SPIRE Server** (`StatefulSet`) as the certificate authority (CA).
153+
- **SPIRE Agents** (`DaemonSet`) for per-node workload attestation.
154+
- **SPIFFE CSI Driver** (`DaemonSet`) to inject SVIDs into pods.
155+
- **SPIFFE OIDC Provider** (`Deployment`) for OIDC token issuance.
156+
157+
#### 2. **Workload Deployment**
158+
- **Action**: Deploy a pod with labels matching a `ClusterSPIFFEID` policy (e.g., `app: secure`).
159+
- **Result**:
160+
- The SPIRE Agent on the node detects the pod and validates:
161+
1. Pod labels/annotations.
162+
2. Service account and namespace.
163+
3. Node identity (e.g., Kubernetes node UID).
164+
165+
#### 3. **SVID Issuance**
166+
- **Action**: The SPIRE Server processes the attestation request.
167+
- **Result**:
168+
- Generates a short-lived **SVID** (X.509/JWT) with a default 1-hour TTL.
169+
- Signs SVIDs using its CA or delegates to an external enterprise PKI.
170+
171+
#### 4. **SVID Injection**
172+
- **Action**: The SPIFFE CSI Driver mounts the SVID into the pod.
173+
- **Result**:
174+
- SVIDs are stored at `/var/run/secrets/spiffe` as read-only volumes.
175+
- Auto-rotated 10 minutes before expiration.
176+
177+
#### 5. **Secure Communication**
178+
- **Action**: Workloads authenticate using SVIDs.
179+
- **Result**:
180+
- **Mutual TLS (mTLS)**: Services validate each other’s SVIDs during TLS handshakes.
181+
- **OIDC Integration**: Workloads fetch tokens for external systems (e.g., Kubernetes API).
182+
183+
#### 6. **Advanced Scenarios**
184+
- **Federated Trust**:
185+
- Define cross-cluster trust via `ClusterFederatedTrustDomains` CR.
186+
- Example: Trust workloads from `cluster-a.example` in `cluster-b.example`.
187+
- **Static Identities**:
188+
- Use `ClusterStaticEntries` to pre-register identities for system components (e.g., `kube-apiserver`).
189+
190+
---
191+
192+
#### Visual Workflow
193+
194+
```mermaid
195+
graph TD
196+
%% 1. Operator Installation
197+
A[Install Operator] -->|Deploys| B[SPIRE Server]
198+
A -->|Deploys| C[SPIRE Agents]
199+
A -->|Deploys| D[SPIFFE CSI Driver]
200+
A -->|Creates| E[CRDs]
201+
202+
%% 2. Workflow
203+
F[Workload] -->|Detected by| C
204+
C -->|Validates Pod & Node| B
205+
B -->|Issues SVID| C
206+
C -->|Sends SVID| D
207+
D -->|Mounts SVID to Pod| F
208+
209+
%% 3. Secure Communication
210+
F -->|mTLS with SVID| G[Other Workload]
211+
F -->|Fetches OIDC Token| H[OIDC Provider]
212+
213+
%% 4. Trust Federation
214+
E -->|Defines Trust| B
215+
B -->|Shares Trust Bundle| I[External Cluster]
216+
```
217+
149218
### API Extensions
150219

151220
```golang

0 commit comments

Comments
 (0)