← Back to portfolio

Non-Human Identity Governance

Status

Design Stage

Maturity

Governance model documented

Evidence

Control design complete · Dashboard planned

Next

Build NHI inventory dashboard

Problem Statement

Non-human identities — service accounts, OAuth2 clients, API keys, CI/CD tokens, and workload identities — often outnumber human identities in enterprise environments by an order of magnitude. Yet governance tooling, access reviews, and lifecycle policies are almost always built for humans. Service accounts accumulate excessive scopes, credentials are never rotated, and decommissioned applications leave orphaned credentials with standing access. This is the fastest-growing attack surface in enterprise IAM.

Why NHI Is Different

DimensionHuman IdentityNon-Human Identity
Identity typePersonApplication, service, script
AuthenticationPassword + MFAClient secret, certificate, workload identity
Session durationHours (re-auth expected)Long-lived or persistent
Access patternInteractive, variableProgrammatic, predictable
RotationPassword policy, manualAutomated, zero-downtime required
Governance gapMature (IGA tooling)Often immature or absent
Blast radiusOne person's accessAll resources in scope set

OAuth2 Client Credentials Lifecycle

1. Creation

Client registered with minimum required scopes, short TTL, and owner attribution recorded in inventory

2. Rotation

Credentials rotated on a defined schedule or on-demand; new secret issued before old is revoked to prevent downtime

3. Review

Periodic review compares assigned scopes to actually-used scopes; flags drift or over-privilege

4. Revocation

Client credentials revoked immediately on application decommission, team offboarding, or detected compromise

Scope Governance

Scope governance for non-human identities applies the same least-privilege principle as RBAC for humans, but operates in the OAuth2 scope model.

Over-Privilege Detection

Over-privilege detection compares the scope set assigned to a client against the scopes that appear in token introspection or usage logs over a rolling period.

// Detection logic

assigned_scopes = ["billing:read", "users:read", "admin:write"]

used_scopes_30d = ["billing:read"]

// Result

drift = ["users:read", "admin:write"] // flagged for review

risk_level = HIGH // admin:write unused but assigned

Employer Value

Risk reduced

Over-privileged service accounts, long-lived credentials, untracked M2M access

Operational value

Reduced blast radius for compromised workload identity

IAM domain

OAuth2 client credentials, NHI governance, workload identity

Seniority signal

Understands the full identity surface — humans and machines

Evidence

Governance model

[ Documented above ]

NHI inventory dashboard

[ Dashboard planned ]

Over-privilege report mock

[ Screenshot pending ]

GitHub repository

[ Repo pending ]