A workload identity platform mints the credentials that every service, pipeline and agent in its trust domain uses to prove who it is, so whoever controls the issuer's signing keys, registration rules or federation trusts can become any workload. Moving from static secrets to short-lived, attested credentials removes thousands of leakable keys, but it concentrates that risk in one place: the issuer and the broker that exchanges external tokens for local access. This vendor-neutral guide covers securing that platform itself: admin roles, the platform's own service accounts, signing keys and trust bundles, federation configuration, logs and lifecycle. It is for platform, identity and cloud security engineers who run a self-hosted issuer, a managed cloud federation service, or both. How workload identity works is covered in the SPIFFE and SPIRE Guide and the Workload Identity Federation Guide; this page assumes you already run one.
Key takeaways
- The issuer is tier 0. Anyone who can change registration entries, issuance rules or signing keys can mint a valid identity for any workload in the trust domain, so administer it like a root certificate authority.
- Federation configuration is as sensitive as keys. The SPIFFE Federation specification warns that tampering with a trust domain name, bundle endpoint URL or endpoint profile can let an attacker impersonate any identity in that trust domain.
- Keep trust domains and their keys separate. Never reuse signing keys across trust domains such as staging and production, and never merge bundles from different trust domains into one.
- Rotation is proven only when relying parties keep up. Publish new keys ahead of use, set a refresh hint, and rehearse an unplanned root rotation end to end.
- Logs and configuration must live outside the issuer. Registration changes, trust changes and key events streamed to a store issuer administrators cannot change are the only way to spot a forged identity after the fact.
What the platform holds and can do
NIST SP 800-207A names an application identity infrastructure, with SPIFFE as its example, as one of the components a cloud-native zero trust architecture needs. The IETF WIMSE architecture draft (draft-ietf-wimse-arch-08, an Internet-Draft as of November 2026, still subject to change) describes the same role as a CA or credential service that issues X.509 certificates or workload identity tokens under a trust domain's authority. In practice the platform has two halves: an issuer inside your trust domain, and a federation broker or security token service that accepts credentials from another issuer, such as a CI system or another cloud, and exchanges them for local access.
| Component | What it holds or can do | If an attacker controls it | Primary control |
|---|---|---|---|
| Signing keys and intermediate CA | Sign every X.509 credential and token in the trust domain | Forge any workload identity offline (T1649, T1606) | Keys in an HSM or cloud KMS, chained to an offline or separately held root, short validity |
| Registration entries and issuance rules | Map attested workload properties to identities | Register a rogue workload under a trusted identity | Two-person change, exact selectors, owners on every entry |
| Node or runtime attestation | Decides which hosts, pods or jobs may request credentials | Enrol an attacker-controlled node | Platform-rooted evidence, single-use join tokens |
| Federation trusts | Which external issuers, subjects and audiences are accepted | Accept tokens from an issuer the attacker runs (T1484.002 Trust Modification) | Exact issuer, subject and audience conditions; change alerts |
| Trust bundle and key set endpoints | Publish the public keys relying parties use to validate | Serve attacker keys to relying parties | Stable authenticated endpoint, integrity monitoring, temporary redirects only |
| Admin API and console | Create entries, change trusts, rotate keys | All of the above | Named admins, phishing-resistant MFA, privileged access workstations |
| Datastore | Entries, trust configuration and sometimes key material | Silent edits that bypass the admin API | Encryption, access limited to the issuer's own identity, backups tested |
Administrative roles and separation of duties
| Role | Can do | Should not do |
|---|---|---|
| Platform administrator | Issuer configuration, upgrades, datastore, log export | Create registration entries or federation trusts alone |
| Registration author | Draft entries and issuance rules for a team's workloads | Approve their own entries, or create entries outside their namespace |
| Trust approver | Approve federation trusts and registration changes | Author the changes they approve |
| Key custodian | Root and upstream CA ceremonies, HSM or KMS key policy | Hold issuer admin rights at the same time |
| Auditor and SOC | Read issuance, admin and trust logs | Change anything |
- Admin identity is itself a workload identity: some issuers grant admin rights to callers presenting a credential with a listed identity. Keep that list short, put admin identities in a separate path of the trust domain, and alert on any change to it. An admin identity that the issuer can mint for itself must be guarded by registration approval.
- Self-service registration with guard rails: let teams register their own workloads only within a namespace or path they own, through a pull request to a configuration repository that the platform applies, so every entry has a reviewer and a history.
- Managed federation services: the cloud roles that create or edit workload identity pools, providers or federated credentials are effectively issuer admin rights. Restrict them to the same named group and alert on their use. See the Workload Identity Federation Trust Review Checklist.
- Tiering: administer the issuer only from privileged access workstations, with just-in-time elevation and a tested break-glass path that does not depend on the issuer itself. See the Tiered Administration and Enterprise Access Model Guide and Break-Glass Account Guide.
The platform's own service accounts and bootstrap credentials
A workload identity platform exists to remove static secrets, yet it usually depends on a few of its own. Each one is a path to issuer control.
| Credential | Purpose | Risk | Pattern |
|---|---|---|---|
| Issuer's identity to the key store | Use the signing key in an HSM or KMS | Anyone holding it can sign | Sign-only permission, no export, usable only from issuer hosts |
| Upstream CA credential | Obtain intermediate certificates from an existing PKI | Mint a parallel intermediate | Narrow issuance profile with name constraints where supported, rotation, alerts on issuance |
| Datastore credential | Read and write entries and trust configuration | Edit entries outside the admin API | Dedicated account, network-restricted, rotated, audited |
| Node join tokens | Bootstrap agents where platform evidence is unavailable | Enrol a rogue node | Single use, short expiry, stored in a secrets manager, revoked after use |
| Bundle endpoint TLS credential | Serve the trust bundle to federated domains | Serve forged bundles | Separate from issuer keys, monitored for unexpected issuance |
| Cloud federation configuration identity | Automation that creates trust relationships | Add an external issuer | Scoped to one pool or project, approval before apply |
Record each of these in the NHI inventory with an owner and expiry. The WIMSE draft notes that bootstrap credentials are one provisioning route; prefer attestation from platform evidence so that join tokens become the exception. See the Workload Attestation Guide and Secrets Management Guide.
Signing keys, trust bundles and rotation
- Protect the keys: keep intermediate signing keys in an HSM or cloud KMS with sign-only permissions, and chain them to a root held offline or in a separate account with its own custodians. The WIMSE draft asks for keys generated with sufficient entropy, stored securely and rotated according to policy. See Securing the cloud key management service (KMS) itself and Securing the internal PKI and certificate authority itself.
- One trust domain, its own keys: the SPIFFE Trust Domain and Bundle specification strongly advises that each authoritative key be used in a single trust domain, because key reuse degrades isolation such as between staging and production.
- Short credentials, bounded by the signer: the SPIFFE JWT-SVID specification requires an
expclaim and encourages the smallest reasonable validity. Credentials should never outlive the key that signed them; check your issuer's documented defaults rather than assuming them. - Publish ahead of use: the SPIFFE Federation specification says new keys should be published at the bundle endpoint 3 to 5 times the bundle's
spiffe_refresh_hintbefore use, and must be published before they sign anything. Set the refresh hint; where it is missing, the specification suggests clients default to about five minutes. - Revoke by removal: keys are revoked by publishing a new bundle without them, so an emergency rotation is only as fast as the slowest relying party's refresh. Measure that propagation, not just the rotation event.
- Back up and restore: back up the datastore and key metadata (never exportable private keys outside the HSM's own backup scheme) and test a restore into an isolated environment.
Federation trusts and token exchange
The broker half of the platform turns an external token into local access. RFC 8693 Token Exchange leaves the decision on which subject and actor tokens to accept to the authorisation server's policy, and warns that omitting client authentication lets a compromised token be leveraged into other tokens by anyone holding it.
- Configure all three parameters explicitly: the SPIFFE Federation specification requires the trust domain name, endpoint URL and endpoint profile to be configured explicitly, because none can be safely inferred from the others. Source them through a channel resistant to tampering; it names email as generally unsuitable.
- Keep bundles bound to their trust domain: bundles from different trust domains must not be merged, or one trust domain can forge identities from another.
- Treat redirects carefully: the same specification recommends that clients treat every redirect from a bundle endpoint as temporary, because a permanent redirect can turn a short compromise into a lasting one.
- Exact conditions on external tokens: pin issuer, subject and audience to exact values. A subject condition that matches any branch, any repository in an organisation or a prefix is the most common way federation widens. See How to Scope CI OIDC Trust to Branch and Environment.
- Single audience tokens: the JWT-SVID specification strongly recommends single-audience tokens, because a token with two audiences can be replayed by one recipient to the other. Where you can, bind tokens to keys; see the DPoP Guide and the mTLS Guide.
- Delegation, not impersonation, for chained calls: RFC 8693 distinguishes the two and recommends limiting scope and lifetime of delegated tokens. Detail is in the OAuth Token Exchange and Delegation Guide.
Logging and monitoring the platform
| Event | Why it matters | Alert? |
|---|---|---|
| Registration entry created or changed, especially selectors or identity path | A rogue workload may now receive a trusted identity | Always for production paths; outside a reviewed change, page the on-call |
| Federation trust added, widened or bundle endpoint changed | New external issuer can obtain access (T1484.002) | Always |
| Admin identity list or cloud federation admin role changed | Persistence over the issuer (T1098.001) | Always |
| Signing key created, rotated, disabled or used from an unexpected host | Key theft or misuse (T1552.004) | Always |
| Node attested with a join token, or from an unknown platform | Rogue node enrolment | Always in production |
| Issuance for an identity with no recent registration change but a new requester | Possible stolen node or workload | Above baseline |
| Log export or audit setting changed | Loss of visibility (T1685) | Always |
- Logs off the platform: stream issuer admin, issuance and key store logs to a SIEM or archive that issuer administrators cannot alter, in line with NIST SP 800-53 AU-9(2) and AC-6(9).
- Relying party side: log validation failures by reason (unknown key, wrong audience, expired). A spike in unknown key failures after rotation shows propagation lag; a single valid token for an identity that has never called that service is worth a look.
- Configuration as code: keep entries and trusts in version control, apply them through a pipeline, and diff the live export against the repository daily. An unexplained diff is a detection.
Lifecycle: deploy, run, respond, retire
| Stage | Security actions |
|---|---|
| Deploy | Design trust domains (one per environment at least), set up the HSM or KMS and root ceremony, define admin roles and log export before the first workload enrols, and take a baseline configuration export. |
| Run | Quarterly reviews of admin rights, registration owners, dormant entries and trusts; issuer upgrades through a staging trust domain first; key rotation on schedule with propagation measured. |
| Respond | Suspected key compromise: publish a bundle without the key, rotate to a new key, force reissuance, then hunt for credentials signed by the old key. Suspected rogue entry: delete it, revoke what it issued where possible, and review what that identity accessed. See Workload Identity Compromise Response Playbook. |
| Retire | Remove the trust domain from every federated party and relying party bundle, delete cloud federation trusts, destroy keys under your key management policy, and keep audit history for your retention period. |
Rolling out hardening: start in a non-production trust domain. Narrow selectors and federation conditions in report-only fashion first by comparing them with the last 30 days of issuance logs, then apply them, keeping the previous configuration in version control so a broken workload can be restored to its exact prior entry rather than a wider one.
Decision guidance
- Self-hosted issuer: you control keys, attestation and logs, and you carry the operational load of HSM integration, upgrades and high availability. Choose it when workloads span several clouds and on-premises, or when you need your own trust domain across them.
- Managed cloud federation: the provider runs the signing keys; your controls are the federation trusts, the admin roles that change them and the logs. Choose it when most workloads live in one provider.
- Both: common in practice. Map which issuer is authoritative for which workloads and avoid chains where a self-hosted identity is exchanged for a cloud identity that is exchanged again without a record of the chain.
- Small teams: prefer managed federation and spend the effort on exact trust conditions and log export. Large estates: separate trust domains per environment and business unit, with delegated registration per namespace.
Detection and measurement
Signals that show the platform's own control plane is under control. Issuer and trust metrics such as bootstrap secret reuse, exactly pinned trusts, the admin footprint and trust root rotation time are measured in the Workload identity platform health check, so they are not repeated here.
- Percentage of registration and trust changes made through a reviewed pipeline (target 100%).
- Administrative sessions on the issuer that came from a privileged access workstation (target 100%).
- Issuer audit log gaps: hours in the period with no audit events reaching the central log platform (target zero).
- Time to detect an unapproved registration entry, measured by planting a test entry.
For the full scored review, use the Workload identity platform (workload identity issuer and federation broker) health check.
Framework mapping
| Control area | NIST SP 800-53 Rev. 5 | NIST CSF 2.0 | ATT&CK threat addressed |
|---|---|---|---|
| Workload authentication and issuance | IA-9, IA-5(2) | PR.AA-01, PR.AA-03 | T1606 Forge Web Credentials |
| Signing keys and certificates | SC-12, SC-17 | PR.AA-01 | T1552.004 Private Keys, T1649 Steal or Forge Authentication Certificates |
| Admin roles | AC-6(5) | PR.AA-05 | T1078.004 Cloud Accounts |
| Registration and trust change control | CM-3 | PR.AA-05 | T1484.002 Trust Modification, T1098.001 Additional Cloud Credentials |
| Audit log protection | AU-9(2), AC-6(9) | PR.PS-04 | T1685 Disable or Modify Tools |
| Token misuse detection and containment | CP-9 for recovery | DE.CM-09, RS.MI-01 | T1550.001 Application Access Token, T1528 Steal Application Access Token |
Common failure patterns
- One key everywhere: staging and production share a signing key or a trust domain, so a test cluster compromise yields production identities.
- Wildcard federation: a CI trust condition matches every branch or every repository in an organisation, so any pull request can obtain production access.
- Reusable join tokens: a long-lived node join token sits in a provisioning script and enrols any host that finds it.
- Admins who can approve themselves: the same group writes registration entries and approves federation trusts, with no review history.
- Rotation never rehearsed: relying parties pin a key or ignore the refresh hint, so an emergency rotation takes days and teams fall back to static secrets.
- Issuer logs stay on the issuer: entry and trust changes are visible only to the people who make them.
Practitioner checklist
- Treat the issuer and the cloud roles that change federation as tier 0, with named admins, phishing-resistant MFA and privileged access workstations.
- Separate registration authoring, trust approval, platform administration and key custody.
- Keep signing keys in an HSM or KMS with sign-only rights, under a root held separately, one key set per trust domain.
- Replace reusable join tokens with platform attestation, and make the remaining tokens single use.
- Configure every federation relationship explicitly and pin issuer, subject and audience to exact values.
- Issue single-audience, short-lived credentials, and set a bundle refresh hint.
- Manage entries and trusts as code, with daily drift checks against the live configuration.
- Stream issuer, issuance and key logs to a store issuer administrators cannot change.
- Rehearse an unplanned signing key rotation at least once a year and measure propagation.
Standards and references
- SPIFFE: SPIFFE Federation specification
- SPIFFE: Trust Domain and Bundle specification
- SPIFFE: JWT-SVID specification
- NIST: SP 800-207A A Zero Trust Architecture Model for Access Control in Cloud-Native Applications
- IETF: Workload Identity in a Multi System Environment (WIMSE) Architecture, Internet-Draft
- IETF: RFC 8693 OAuth 2.0 Token Exchange
- NIST: SP 800-53 Rev. 5 Security and Privacy Controls
- MITRE ATT&CK: T1484.002 Trust Modification
Related NHI Mgmt Group resources: SPIFFE and SPIRE Guide · WIMSE Workload Identity Architecture Guide · Cloud Workload Identity Guide · Workload identity platform (workload identity issuer and federation broker) health check · Securing the NHI management platform itself