A small feature flagged on staging had triggered a permissions storm across production. Ten minutes later, the logs showed thousands of new roles, many almost identical but just different enough to evade cleanup scripts. This was the kind of large-scale role explosion that makes audits painful, access reviews almost impossible, and security brittle.
The root cause wasn’t malice. It was complexity. Once you start granting fine-grained permissions for every edge case, your role model becomes a patchwork of exceptions. A single compliance requirement can splinter into dozens of roles. Multiply that across multiple teams, projects, and deadlines, and soon your RBAC system becomes an ungovernable mess.
Dynamic Data Masking (DDM) was supposed to help — centralize rules, hide sensitive columns, reduce the need for custom roles. But without a strategy, DDM can amplify the problem. Poorly scoped policies force developers to clone roles for small visibility changes. Data masking patterns drift. Instead of protecting sensitive information cleanly, you end up with a massive, tangled role hierarchy and inconsistent data access.