Distributed Workflow Orchestration Platform  ·  View 28 of 31  ·  Assurance

Secretless Access — Token Path

How a caller proves who it is, and how a pod reaches a database without holding a credential.

Editable source SVG draw.io All views
Client application
Client application
Microsoft Entra ID
Microsoft Entra ID
API Management
API Management
Execution API pod
Execution API pod
Key Vault
Key Vault
Cosmos DB
Cosmos DB
Service Bus
Service Bus
1. client_credentials · scope api://wfo/.default
1. client_credentials · scope api://wfo/.default
2. access token · 60 min · appid + roles
2. access token · 60 min · appid + roles
3. POST /executions · Bearer
3. POST /executions · Bearer
4. fetch + cache JWKS
4. fetch + cache JWKS
5. validate-jwt · scope · tenant claim · quota
5. validate-jwt · scope · tenant claim · quota
6. forward over mTLS · x-tenant-id
6. forward over mTLS · x-tenant-id
7. exchange projected SA token (workload identity federation)
7. exchange projected SA token (workload identity federation)
8. token for Cosmos and Service Bus scopes
8. token for Cosmos and Service Bus scopes
9. write execution · RBAC data plane, no account key
9. write execution · RBAC data plane, no account key
10. send · Entra RBAC, SAS disabled
10. send · Entra RBAC, SAS disabled
11. resolve legacy downstream credential
11. resolve legacy downstream credential
12. secret · cached 10 min in memory only
12. secret · cached 10 min in memory only
13. 202 Accepted
13. 202 Accepted
Secretless Access — Token Path from Caller to Data Plane
Secretless Access — Token Path from Caller to Data Plane
No connection string or account key exists anywhere in the cluster, so none can be stolen from a compromised pod. The only secrets in Key Vault are third-party credentials for downstreams that cannot speak Entra.
No connection string or account key exists anywhere in the cluster, so none can be stolen from a compromised pod. The only secrets in Key Vault are third-party credentials for downstreams that cannot speak Entra.
v 1.0 · owner Data & AI Global Practice · date 2026-08
v 1.0 · owner Data & AI Global Practice · date 2026-08
Text is not SVG - cannot display

Decisions

  • Workload identity federation over managed identity with pod identity: the pod's projected service-account token is exchanged for an Entra token, so nothing long-lived exists on the node and there is no node-level identity to escalate to.
  • Token validation happens at API Management, not in each service. JWT validation, scope checks, tenant claim extraction and quota become one reviewable policy artefact rather than middleware repeated seven times.
  • Key Vault holds only third-party credentials for downstreams that cannot speak Entra. Every entry in it is an exception with an owner and a rotation schedule, which keeps the list short enough to audit.

Token handling

  • Client tokens are 60 minutes; service-to-service tokens are cached in memory for their lifetime minus a 5-minute skew and are never written to disk or logs.
  • Secrets resolved from Key Vault are cached in memory for 10 minutes only, so a rotation propagates without a deployment and a compromised pod's window is bounded.
  • The tenantId claim is mandatory. A request without it is rejected at the gateway, which is what makes the isolation model in view 29 enforceable rather than aspirational.

Risks

  • API Management is a single enforcement point and therefore a single point of failure for authorisation. It is zone redundant, and services still validate the tenant claim defensively rather than trusting the header.
  • Federated credential misconfiguration is subtle and hard to spot in review: a wrong subject claim can silently widen access. It is covered by policy-as-code checks in the pipeline.
  • Partner webhook HMAC keys remain the one long-lived shared secret. 90-day rotation, Key Vault stored, and flagged as the weakest link in the identity design.