LRLucas RochaLet’s talk
← All articles

Cyber Coffee · English edition

RBAC in Practice: Permissions That Scale Without Becoming Chaos

RBAC fails over time without regular maintenance. Learn how to model roles around functions, enforce least privilege, conduct periodic access reviews, and maintain auditable access logs.

  • RBAC
  • Access Control
  • Least Privilege
Three role badges connect to different permitted resource compartments.

Good RBAC is a garden, not a monument — it requires constant pruning, and the model designed on day one is the easy part of the job.


Role-based access control starts simple and rots slowly, without anyone deliberately choosing to let it rot. On day one, half a dozen roles solve everything — admin, editor, reader, maybe a specific operations role. Two years later, no one knows for sure why so-and-so has access to X, there are 40 roles that no one can explain off the top of their head, and granting any new permission has turned into a ritual of fear, because touching the model feels too risky to fully understand. RBAC doesn't fail because of bad initial design — it fails due to a lack of continuous maintenance over time.

Model roles based on function, not person

The founding mistake, almost always made with good intentions: creating a new role to accommodate the access exception of a specific person, instead of adjusting the existing model or questioning whether the exception truly needs to exist. This silently multiplies roles until the model becomes a soup where each role is, in practice, a person disguised as a function.

A good role maps to a real and stable organizational function — "claims analyst", "platform engineer", "account manager" — not "what John specifically needs access to today". If the answer to "why does this role exist" is a person's name instead of a function, the model has already begun to rot, even if the rest of the structure seems healthy.

Least privilege is the default, not the exception

Grant the minimum access necessary for the role to perform its job, and expand on justified and recorded demand — never the reverse route of granting broad access out of the gate and restricting it later if someone complains. Broad access granted "for convenience," to prevent future requests for expansion, is silent security debt that no one actively reviews until the day of an incident, when suddenly who had access to what matters a lot.

A restrictive default costs a little friction at the beginning — someone will need to request access to something they "will probably need anyway" — and that friction is precisely the price that prevents a larger leak later on. Trading small, constant friction for large, rare risk is almost always the right trade-off in access control.

Periodic access review is what prevents erosion

Granted access tends never to be revoked spontaneously by anyone — the person changes teams, leaves the project, switches roles within the company, and the old access simply remains, because revoking is not the natural next step of any of these organizational events. No one removes access "by memory"; someone needs to ask actively.

Periodic review — quarterly or semiannually, depending on system criticality — that explicitly asks "who has what, and does this still make sense for this person's current function?" is the only real remedy against this silent accumulation of privilege, which over years turns a well-designed RBAC into a security liability that is almost impossible to audit retroactively without the habit of constant review.

Auditing and compliance mapping close the loop

In a regulated environment, RBAC is not just an operational system configuration — it is control evidence required by audit frameworks. Being able to demonstrate, with historical logs, who has access to what, under what justification, and how that maps to a reference framework (ISO 27001, SOC 2, access controls required by LGPD) transforms the model from an "IT configuration that only the technical team understands" into an "auditable governance control that any external auditor can verify."

In practice, this requires that every access grant and revocation be logged in a way that withstands an audit inquiry made months later — ensuring not only that current access is correct, but that the history of how it reached that state can be reconstructed.

Key takeaways

Good RBAC is a garden, not a monument: the initial design — no matter how well thought out, mapping function rather than person and starting from least privilege — is the easy part of the job. What separates maturity from chaos over the years is the discipline of constant pruning: reviewing access periodically, resisting the urge to create roles for individual exceptions, and keeping grant records auditable from the start, rather than scrambling to reconstruct that history under pressure the day an auditor asks.


Sources

← Back to all articles