Security & DevSecOps Practical By Samson Tanimawo, PhD Published Sep 9, 2025 4 min read

RBAC as Code

RBAC in version control.

Git

RBAC drift is one of the largest sources of insider-risk incidents. Roles get added in the UI for a one-time need and never removed. Bindings accumulate across years of org changes. The map of "who can do what" lives in nobody's head and matches reality only by accident. The fix is RBAC as code: every role definition and every role binding lives in version control.

What RBAC as code actually requires:

RBAC as code replaces the implicit, console-driven, drift-prone model with an explicit, reviewable, source-of-truth model. The investment is the migration; the payoff is permanent visibility into who has access to what.

CI

The CI pipeline is the mechanism that turns the git state into actual platform configuration. The pipeline reads the role and binding definitions, validates them, and applies them to the target platforms. The discipline is making sure no other path can change RBAC.

The CI path is the operational control that keeps RBAC manageable. Without it, the git state is just documentation; with it, git is the actual source of truth and the platforms reconcile to match.

Audit trail

The third leg of RBAC as code is the audit trail. Every RBAC change is now a commit, with an author, a timestamp, a reviewer, a reason. The audit story that compliance teams previously had to construct from disparate sources (AWS CloudTrail, console actions, screenshots from manual reviews) lives in one queryable place: git.

RBAC as code with git, CI-driven apply, and git history as audit log is the access management architecture pattern that scales from a five-person team to a five-thousand-person organization. Nova AI Ops integrates with RBAC repos, runs drift detection between git state and platform reality, and surfaces the access pattern across the org so security teams have visibility without having to chase down each platform's access reports separately.