Machine identity

A machine identity is the credential a workload proves itself with: a certificate, a SPIFFE ID, a cloud role. How it differs from a service account.

9 min read · Published September 7, 2026 · Last updated September 7, 2026

A machine identity is the credential a workload, service or device proves itself with: an X.509 certificate, a SPIFFE ID, or a cloud role assumed at runtime. It is a subset of non-human identity, distinct from a service account, which is an account a process signs into, and it is issued and rotated by infrastructure rather than by an administrator.

A machine identity is how a thing proves it is that thing. A workload presents a certificate, a pod assumes a cloud role, a CI job exchanges its own signed token for a short-lived credential. No secret sits in a file, and nothing needs an administrator to create an account.

The term comes from infrastructure security, and it is narrower than the phrase most identity products use. A machine identity is one kind of non-human identity, and it is not a service account, though the three words get used as if they were interchangeable.

NON-HUMAN IDENTITY  (the umbrella: anything that acts without a person)
+---------------------------------------------------------------------+
|                                                                     |
|  MACHINE / WORKLOAD IDENTITY        SERVICE ACCOUNT                 |
|  the thing proves what it is        an account a process signs      |
|  - X.509 cert, SPIFFE ID            in with                         |
|  - cloud role assumed by a pod      - a username and a secret       |
|  - short-lived, issued on demand    - long-lived, usually           |
|  infrastructure security's word     IT and app admin's word         |
|                                                                     |
|  API KEY / TOKEN                    OAUTH GRANT        AI AGENT     |
|  a credential, no account           delegated human    decides at   |
|                                     access             runtime      |
+---------------------------------------------------------------------+

for a SaaS-first company at 300 people: the right-hand column is the whole
problem; the left-hand column matters when you run your own services
Three words for three different things. The umbrella is the non-human identity; machine identity is the workload's own credential, and a service account is the account a process signs in with.

What is the difference between the three terms?

Non-human identityMachine identityService account
What it coversAnything that acts without a personA workload or device proving what it isAn account a process signs into
Typical credentialAnything: a password, a key, a token, a grantAn X.509 certificate, a SPIFFE ID, an assumed roleA password, key or token, usually long-lived
Who issues itWhoever created the thingThe platform, at runtimeAn administrator, once
LifetimeWhatever nobody changedMinutes to hoursYears
Who owns the problemIT and securityThe platform teamIT and application admins
Where it failsNo owner, no expiry, no reviewExpiry nobody tracked, trust misconfiguredThe secret in the password manager

Why the fix differs

The distinction matters because the fix is different. A machine identity problem is solved by using the platform's issuance mechanism, so the work is configuration and it lands on the team that owns the platform. A service account problem is solved by governance: an owner, a scope, an expiry and a review, none of which any issuance mechanism supplies. Buying a tool for the first will not touch the second, and the two problems fail on different clocks. A misconfigured workload identity fails immediately and loudly, because the service cannot authenticate. An ungoverned service account fails silently for years, which is why one shows up in an incident channel and the other shows up in an audit finding.

Where the two words came from

Machine identity is vocabulary from infrastructure security, where the objects are certificates, meshes and public key infrastructure, and the recurring failure is an expiry nobody tracked taking a service offline. Service account is vocabulary from IT administration, where the objects are accounts in a directory or an application, and the recurring failure is standing privilege with no owner. NIST SP 800-207 bridges the two by treating non-person entities as subjects in their own right. Such a subject authenticates on every request and is authorized against policy, rather than trusted because of where it sits on the network. The bridge is conceptual, and in practice the two populations are still administered by different teams using different tools.

How does a workload identity work in practice?

Three shapes cover most of it, and none of them stores a secret.

A role assumed at runtime

The cloud platform knows which workload is running, so the workload asks for a credential and gets one scoped to a role, valid for minutes. On Kubernetes this is the service-account-to-role mapping the cloud providers document, such as IAM roles for service accounts on managed clusters, and the pod never holds a key.

Federation from another issuer

A CI system, a cloud or an identity provider signs a token asserting what the job is, the target platform trusts that issuer for a specific role, and the credential is minted per run. Workload identity federation is the name the cloud providers give this pattern. The trust configuration is its whole control surface. A wildcard in the subject condition grants the role to every job in the repository rather than to the one job intended.

Hacker News comment by 420official

OIDC with JWT doesnt need any long lived tokens. For example, I can safely grant gitlab the ability to push a container to ECR just using a short-lived token that gitlab itself issues.

420official·Hacker News

A certificate issued by a mesh or a CA

Each service gets an identity document and a short-lived certificate, renewed automatically, and services authenticate each other with it. SPIFFE is the open standard for this, and a service mesh is the usual way it arrives.

The reason to prefer any of the three is not elegance. It is that a departure stops being an event:

Hacker News comment by peterldowns

Basically, there are no permanent keys for anything. Slightly annoying to have to wrap some clis in scripts that generate the short-lived token, but it feels really magical to have services securely calling each other without any explicit keys or password to even store in our vault.

peterldowns·Hacker News

When should a mid-market company care?

It depends on what the company runs, and being honest about that is more useful than a maturity model. Three cases cover almost every mid-market stack.

The company runs its own services

Machine identity is then the platform team's answer to secrets in configuration files, and the mechanism should be whatever the cloud provider already offers rather than a key in a vault. The decision is usually made once, when the first service needs to call the second, and it is far cheaper to make correctly at that point than to unwind later. The evidence an auditor eventually asks for is the issuance and trust configuration rather than a list of credentials, because there is no list: the credentials existed for minutes.

The company is mostly SaaS

The population that causes findings is then service accounts, API keys, OAuth grants and agents inside applications. Certificates are not the problem, and a machine identity product will not see any of it, because none of those objects is a workload proving what it is. The relevant question for this company is not how credentials are issued. It is who owns each identity that already exists and what happens to it when that person leaves.

The company is both

This is the common case at 300 people, and it produces two populations, two owners and two mechanisms. The risk lives in the seam between them. A workload that reaches a SaaS application does so with a credential from the second population. That credential is usually an API key held in the platform team's secret store, unknown to whoever governs the application it reaches. Anything that crosses the boundary needs a single owner recorded on both sides, or it belongs to nobody twice over.

What does governing the two populations look like?

The properties are the same and the mechanisms differ, which is the whole point of keeping the words apart.

What holds for both populations

Four properties decide whether either population is governed: a named owner, a scope no wider than the job, an expiry that arrives without anyone remembering it, and a review that someone with standing actually performs. Neither population is exempt from any of the four. What changes is where each property is enforced and what the evidence for it looks like.

WorkloadsSaaS non-human identities
OwnerThe team that deploys the serviceA named person, recorded when the identity is created
CredentialIssued at runtime, minutes longRotated, or replaced by a short-lived token where the application allows it
ScopeThe role the workload assumesThe permissions inside the application
ExpiryAutomatic, per requestA date on which it is re-justified
ReviewThe issuance policy and trust configurationThe identity itself, routed to its owner beside the people
InventoryThe mesh or cloud consoleEvery application's own account and token lists

Why the split matters when buying

The inventory row is the one that decides tooling. A platform that governs workloads reads a mesh or a cloud control plane, which is a small number of well-structured sources. A platform that governs the SaaS population reads every application separately, including the applications with no provisioning interface, which is a large number of badly structured ones. No product does both well today, and a company that assumes otherwise ends up with two thirds of its non-human identities in neither system.

Iden governs the SaaS half of this picture: the service accounts, integration users, tokens, grants and agents inside applications, each with an owner and a place in the review, listed on the Identities screen beside the people. Certificates and cluster workload identities stay with the platform that issues them, which is the right home for them, and the boundary is worth stating rather than blurring. The feature behind it is Service accounts, API keys and agents.

Die Identities-Ansicht in Iden: 433 Identitäten, aufgeteilt in 321 human und 112 non-human, mit Service-Accounts und einem MCP-Token in derselben Tabelle wie Mitarbeitende, jeweils mit Team und den erreichbaren Applikationen.

433 Identitäten, 321 davon human, 112 nicht. cc_github und das MCP-Token stehen in derselben Tabelle wie Amy Lee, mit denselben Spalten und denselben Offboarding-Zuständen.

How does SCIM treat machine identities?

It does not model them at all, in either population.

Why a directory never sees a workload

SCIM provisions users and groups from a directory into applications, and a workload is neither. A certificate is issued by a certificate authority, and an assumed role is granted by a cloud control plane at the moment of the request. An application's integration user is created inside that application by an administrator. None of the three passes through the identity provider, so none of them appears in the directory that SCIM synchronises. That is why the identity provider's user count is never the identity count.

What the inventory looks like instead

Two inventories are needed, and they are built by different means. The workload inventory comes from the issuing system, and its useful column is expiry, because an untracked certificate expiry is an outage rather than a finding. The SaaS inventory comes from reading each application's own account and token lists, and its useful column is owner. The failure mode there is an identity that outlives the person who understood what it was for. Finding non-human identities therefore means reading each system rather than querying one, and accepting that the two halves of the answer arrive in different shapes.

What an auditor checks

FrameworkControlWhat the test looks for
SOC 2CC6.1, CC6.6, CC6.7Logical access is restricted and transmission is protected. For workloads the evidence is the issuance and rotation mechanism rather than a list of accounts.
ISO 27001:2022A.5.16, A.5.17, A.8.24Identities assigned to systems are managed, authentication information is protected, and cryptography including certificate lifecycles is governed by policy.
PCI DSS v4.08.6, 12.3.3Credentials used by systems and applications are managed, and cryptographic cipher suites and certificates are inventoried with their expiry dates.
OWASP NHI Top 10NHI4, NHI7Insecure authentication and long-lived secrets are the two ranked risks that a workload identity is designed to remove.

Asked in the field

A machine identity is how a workload proves what it is, usually with a certificate or a role assumed at runtime and no stored secret. A service account is an account a process signs into with a credential. One is issued by infrastructure and short-lived; the other is created by an administrator and usually long-lived.

No. Non-human identity is the umbrella over everything that acts without a person: service accounts, API keys, OAuth grants, bots and AI agents. Machine identity is the infrastructure subset, the workload or device proving itself. Vendors use the terms interchangeably and the distinction is useful.

Only for the services it runs itself, and there the answer is to use the platform's own mechanism rather than issuing keys. If the company's systems are mostly SaaS, the identities that cause findings are service accounts, tokens and grants inside applications, not certificates.

An open standard for giving a workload a verifiable identity, an SPIFFE ID, and a short-lived credential to prove it, issued automatically at runtime. It is the clearest published answer to machine identity, and it says nothing about why a workload should have access, which is a governance question.

Use the identity the platform already gives the workload: a cloud role assumed by the pod or function, or federation from the CI system's own token. The credential is minted per run and expires, so there is nothing to rotate and nothing for a leaver to keep.Asked on Hacker News