Skip to content

Commit a450c20

Browse files
adds workflow descriptions
1 parent aff559b commit a450c20

File tree

1 file changed

+58
-1
lines changed

1 file changed

+58
-1
lines changed

Diff for: enhancements/workload-identity-management/zero-trust-workload-identity-manager.md

+58-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,63 @@ 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+
A[Install Operator] --> B[Deploy SPIRE Server, Agents, CSI Driver, OIDC Provider]
197+
B --> C[Install CRDs]
198+
C --> D[Workload Starts]
199+
D --> E[SPIRE Agent Attests Pod]
200+
E --> F[SPIRE Server Issues SVID]
201+
F --> G[CSI Driver Mounts SVID]
202+
G --> H[Workload Uses SVID for mTLS/OIDC]
203+
H --> I[Secure Communication]
204+
```
205+
149206
### API Extensions
150207

151208
```golang

0 commit comments

Comments
 (0)