Defensive Security

Cloud IAM: The Permission Mistakes That Cause Breaches

Cloud breaches rarely begin with a broken hypervisor. They begin with an identity that had more permission than anyone realised, and an attacker who found a way to use it. Identity and access management is where cloud security is genuinely won or lost, and it is also where technical debt accumulates fastest.

Cloud IAM: The Permission Mistakes That Cause Breaches

Why IAM is the cloud perimeter

In a traditional network you could reason about security by asking what an attacker could reach. In cloud, an API endpoint is reachable from anywhere and access is decided almost entirely by identity and policy.

That shifts the question from "can they connect" to "what is this credential allowed to do". A single over-permissioned role, reachable through a vulnerable workload or a leaked key, can expose far more than a compromised server ever would.

The mistakes that recur

  • Wildcard permissions — policies granting broad action or resource scope because narrowing them took time during a deadline. These are rarely revisited once the deployment works.
  • Long-lived static keys — access keys embedded in code, CI systems and developer machines, often years old and rarely rotated. Short-lived, automatically rotated credentials remove this category entirely.
  • Over-permissioned workload roles — an application that needs to read one storage bucket granted broad storage access, so an SSRF or code-execution flaw becomes a data breach.
  • Privilege escalation paths — an identity that cannot do something directly but can modify a policy, assume a stronger role, or attach itself to a privileged resource, which is effectively the same thing.
  • Unused permissions — access granted for a task completed months ago, still live because nobody tracks usage.
  • Cross-account trust that is too broad — trust relationships permitting more principals than intended.
  • Federation misconfiguration — identity-provider conditions that are weaker than assumed, allowing unexpected principals to assume roles.
Wildcard permissions hide behind convenient defaults
Wildcard permissions hide behind convenient defaults

Why least privilege is hard in practice

Everyone agrees with least privilege in principle. It is difficult in practice because the precise permission set required by an application is genuinely hard to know in advance, and an under-permissioned deployment fails loudly while an over-permissioned one works silently.

That asymmetry drives behaviour: broad permissions get granted to make a release work, and the intention to narrow them later competes with the next deadline. The practical answer is to make narrowing measurable — use access analysis tooling to compare granted permissions against those actually used, then remove the difference on a schedule rather than by good intentions.

What to check first

  1. Inventory identities: human users, service principals, workload roles and any remaining static keys.
  2. Find every identity with administrative or near-administrative permission, and confirm each is genuinely required.
  3. Compare granted against used permissions over a meaningful window, and strip the unused remainder.
  4. Enumerate privilege escalation paths — identities that can grant themselves more access indirectly.
  5. Verify multi-factor authentication on all human access, especially any remaining root or break-glass accounts.
  6. Review cross-account and federated trust conditions carefully; these are frequently broader than the author intended.
  7. Confirm control-plane logging is enabled, centralised and retained long enough to investigate.
Unused privilege is the easiest privilege to remove
Unused privilege is the easiest privilege to remove

Controls that prevent recurrence

  • Eliminate static keys in favour of short-lived, automatically rotated credentials wherever the platform supports it.
  • Apply organisation-level guardrails that cap what any account can do, so a single misconfigured policy cannot exceed the boundary.
  • Require infrastructure-as-code review for policy changes, so permissions are reviewed like any other code.
  • Alert on high-risk control-plane events: policy modification, new credential creation, role trust changes and logging being disabled.
  • Run periodic access reviews with a named owner per identity, and remove anything without one.

Related from TechBiz Security

Sources & further reading

Frequently asked questions

Why is IAM considered the cloud perimeter?
Cloud APIs are reachable from anywhere, so access is decided by identity and policy rather than network position. What a credential is permitted to do therefore determines the blast radius of a compromise more than any network control.
What is a privilege escalation path in cloud IAM?
It is a sequence where an identity that lacks a permission directly can obtain it indirectly — for example by editing a policy, assuming a more privileged role, or attaching itself to a privileged resource. The effective permission is what matters, not the stated one.
How do we actually achieve least privilege?
Measure it. Use access analysis to compare permissions granted against permissions used over a representative period, then remove the difference on a recurring schedule. Least privilege achieved by intention alone tends to decay.
Are static access keys always bad?
They are a substantially higher risk than short-lived credentials because they persist, spread into code and CI systems, and are rarely rotated. Where a platform supports temporary credentials or workload identity, static keys should be eliminated rather than merely rotated.

Related reading

0 comments

Leave a comment

Comments are moderated before appearing.