TL;DR: Cloud-native systems make static roles and older PAM approaches brittle, with Reva.AI arguing that policy as code is needed for scalable, context-aware authorization across microservices, APIs, containers, and serverless environments. The core shift is from embedded, binary access logic to runtime policy decisions that can be versioned, audited, and adapted to changing risk and workload conditions.
At a glance
What this is: This article argues that cloud-native authorization breaks down when static roles and older PAM assumptions are forced onto distributed systems, and that policy as code offers the more workable control model.
Why it matters: It matters because IAM, PAM, and platform teams need authorization that can keep pace with ephemeral services, non-human identities, and changing context without losing auditability or least privilege.
Context
Cloud-native authorization is the problem here, not just access administration. When applications are built from microservices, APIs, containers, and serverless functions, the old assumption that access can be mapped once and left stable no longer holds. Traditional role design and privileged access tooling were built for slower, more centralised environments.
The issue becomes sharper as workloads and service identities change faster than human administrators can track them. In that setting, access control has to be externalised, context-aware, and machine-readable if it is going to remain governable at all. authorization models are the right starting point for understanding why policy-driven control outperforms static role logic.
Key questions
Q: How should teams implement policy-based authorization in cloud-native applications?
A: Start by separating decision logic from application code, then express access rules as versioned policies that can be tested before deployment. Keep the policy model aligned to service boundaries, and make sure each decision is observable so security teams can explain why access was allowed or denied during audit or incident review.
Q: Why do static roles fail in microservices and serverless environments?
A: Static roles fail because they assume access can be defined once and reused safely, but distributed systems change too fast for that model. Microservices, APIs, and serverless functions create role sprawl, over-permissioning, and audit complexity, so entitlement decisions need to be finer-grained and evaluated at runtime rather than only at provisioning time.
Q: What are the signs that PAM is not working well in a cloud environment?
A: Common signs include lingering access after contractors or vendors finish their work, weak visibility into privileged sessions, and manual review processes that cannot keep up with cloud scale. Another warning sign is reliance on vaulting alone without integrated governance or auditing. If teams cannot see who accessed what, when, and from where, PAM is not operating effectively.
Q: What is the difference between RBAC and policy-based authorisation?
A: RBAC assigns access through predefined roles, while policy-based authorisation evaluates rules at request time using context such as resource sensitivity, risk, device state, or time. RBAC is useful for coarse structure, but policy-based authorisation is better when access must vary dynamically across cloud-native services and non-human identities.
Technical breakdown
Why static roles break in distributed systems
Role-based access control works when the environment is small, stable, and predictable. In cloud-native systems, roles proliferate as services, teams, environments, and permissions multiply, which creates role explosion and makes entitlements harder to reason about. The deeper failure is that RBAC answers a structural question at provisioning time, while modern systems need a decision at request time. That gap produces over-permissioning, brittle audits, and policy drift. Practical implication: teams should stop treating role design as the core authorisation mechanism for fast-changing cloud estates. See the IAM and IGA Basics.
Practical implication: Treat role design as a coarse baseline and move fine-grained decisions into a policy layer that evaluates context at runtime.
Why older PAM models lag cloud-native workloads
Traditional PAM was designed for long-lived, high-trust administrative sessions around fixed infrastructure. Cloud-native workloads do not behave that way. They can be created, scaled, terminated, and re-deployed in minutes, so an approval and checkout model tied to a static privileged session becomes too slow and too narrow. PAM still matters for high-risk access, but it does not solve the broader authorisation problem across ephemeral services, APIs, and automation. Practical implication: PAM should be reserved for elevated human or break-glass paths, not used as the default control plane for cloud workload authorisation. See the Privileged Access Management Guide.
Practical implication: Use PAM for exceptional elevation paths and move routine workload authorisation into policy enforcement that matches cloud runtime speed.
How policy as code externalises authorisation decisions
Policy as code separates authorisation logic from application code and expresses it in a declarative, version-controlled form. That matters because access rules then become testable, reviewable, and deployable through the same engineering processes used for other infrastructure changes. The model also supports contextual inputs such as device posture, risk level, time, and resource sensitivity, which static permissions cannot evaluate well. In practice, this is what makes fine-grained authorisation scalable across microservices and multi-cloud estates. Practical implication: authorisation should be treated as a governed runtime service, not a hardcoded application feature. See the Cloud Misconfiguration Guide.
Practical implication: Externalise access logic into a policy engine and validate changes through version control and CI/CD before they reach production.
Breaches seen in the wild
- Azure Key Vault Contributor escalation 2024: Datadog found Azure Key Vault Contributor could add itself to access policies and read every secret, key and certificate in a vault.
- BeyondTrust breach 2024: A stolen BeyondTrust Remote Support API key let a China state-sponsored actor reset accounts and reach US Treasury workstations in 2024.
Read and download The State of NHI & AI Agent Breach Report 2026, covering 200+ breaches impacting Non-Human Identities including AI Agents.
NHI Mgmt Group analysis
Policy as code is becoming the control plane for cloud-native authorization. Static RBAC and legacy PAM both assume that access can be defined in advance and then left mostly unchanged. That assumption fails when the application estate is distributed, ephemeral, and heavily dependent on non-human identities. The implication is that authorisation governance now has to move from assignment-time thinking to runtime decision-making.
Cloud-native environments expose an authorisation governance gap, not just a tooling gap. The real problem is that many access models still expect administrators to keep pace manually with service growth, API sprawl, and ephemeral workloads. That does not scale, and it predictably produces over-permissioning and audit friction. Practitioners should read this as a governance redesign problem, not a simple product selection problem.
Policy-driven authorisation is where least privilege becomes operational rather than aspirational. Versioned policies can encode scope, context, and exception handling far better than broad roles can. That makes them especially useful when human access, workload access, and service-to-service access all need different enforcement logic. The practitioner takeaway is that least privilege needs a runtime expression, not just a provisioning rule.
Cloud-native systems make the old distinction between application logic and security logic too costly to preserve. When authorisation rules live inside code, every change becomes an application release problem. Externalising policy reduces that coupling and makes review, rollback, and testing more realistic. The field should expect authorisation design to look more like governed infrastructure than like an access matrix.
From our research library:
- 97% of NHIs carry excessive privileges, increasing unauthorised access and broadening the attack surface, according to the Ultimate Guide to NHIs.
- Read next: Privileged Access Management Guide
What this signals
Runtime authorisation is now a governance requirement, not an optimisation. Cloud teams should expect more environments where a static permission model is simply too blunt to be defensible. The practical question is whether your current programme can express fine-grained access without embedding every rule into the application release cycle.
A useful way to think about this shift is as authorisation externalisation: the access decision moves out of the service and into a governed policy layer. That change matters for auditability, exception handling, and change control, especially when workload identity and human access are governed in the same estate.
Policy as code also changes where evidence lives. Instead of reconstructing access logic from application code and scattered configuration, teams can point to a versioned policy set, a review history, and runtime decision logs. That makes authorisation easier to prove, not just easier to describe.
For practitioners
- Separate authorisation from application code Move access decisions into a version-controlled policy layer so developers do not hardcode entitlement logic into services.
- Limit PAM to exceptional privilege paths Reserve PAM workflows for administrative, break-glass, and other high-risk elevation events instead of using them as the default cloud authorisation model.
- Test policies before production rollout Validate policy changes in CI/CD with representative workloads, context signals, and denial cases before they affect live access decisions.
- Map workload and service identities explicitly Document which services, APIs, and automated workloads are authorised to call each resource so policy rules reflect actual machine-to-machine relationships.
Key takeaways
- Cloud-native authorisation fails when static roles and legacy PAM are forced onto fast-changing services, APIs, and serverless workloads.
- Policy as code shifts access control into a versioned runtime layer that can evaluate context and support auditability.
- Practitioners should externalise high-value access decisions, reserve PAM for exceptional privilege paths, and validate policies before production use.
Related NHI Mgmt Group resources: Authorisation Models Guide · IAM and IGA Basics · Compliance Automation Guide · Privileged Access Management Guide
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
OWASP Non-Human Identity Top 10 addresses the attack and risk surface, while NIST CSF 2.0, NIST SP 800-53 Rev 5 and NIST Zero Trust (SP 800-207) set the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| OWASP Non-Human Identity Top 10 | NHI-05 — Overprivileged NHI | The article centers on excessive permissions across service accounts and automated workloads. |
| Recommendation — Apply NHI-05 to reduce excessive permissions in service and workload identities. | ||
| NIST CSF 2.0 | PR.AA-05 — Access Permissions, Entitlements and Authorizations | The piece is fundamentally about governing access entitlements in dynamic cloud environments. |
| Recommendation — Use PR.AA-05 to govern entitlements through policy-based runtime decisions. | ||
| NIST SP 800-53 Rev 5 | AC-6 — Least Privilege | Least privilege is a core control objective repeatedly challenged by role sprawl and static access models. |
| Recommendation — Enforce AC-6 by narrowing access to the minimum needed for each action and service. | ||
| NIST Zero Trust (SP 800-207) | Policy Decision Point — Policy Decision Point | The article aligns with zero trust by externalising and continuously evaluating authorisation decisions. |
| Recommendation — Place authorisation at a policy decision point so access can be re-evaluated continuously. | ||
Key terms
- Policy as Code: Policy as code stores authorization logic in version control and evaluates it through testable, reviewable rules. For agent governance, it makes runtime decisions reproducible and measurable, which is critical when actions can be triggered by untrusted content and executed at machine speed.
- Role-Based Access Control: A model that grants permissions by assigning identities to predefined roles. It works well when jobs are stable and access patterns are predictable, but it becomes brittle when exceptions pile up. In practice, role design must stay small enough to audit and broad enough to avoid endless custom variants.
- Runtime Authorisation: Runtime authorisation is the practice of deciding access while a task is in progress, rather than only at provisioning time. It matters for NHIs because credentials and entitlements can change risk mid-session, especially when automation or AI agents interact with sensitive systems.
- Policy Engine: A policy engine evaluates identity, device, and transaction data against defined rules and then automates the access decision. It is the mechanism that turns zero trust from a concept into an operational control by allowing approval, blocking, quarantine, or revocation based on risk.
Deepen your knowledge
NHI governance, agentic AI identity, and machine identity lifecycle are core topics in our NHI Foundation Level course, the industry's only accredited NHI security programme. If you are responsible for identity security strategy or NHI governance in your organisation, it is worth exploring.
Published by the NHIMG editorial team on October 22, 2026.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org