Teams create database roles for projects, migrations, and short-lived initiatives. Over time, they pile up. Permissions stay open long after the reason for them is gone. A quarterly check-in on database roles stops this drift before it turns into a breach.
Start with an inventory. List every database role, its permissions, and last usage. Check who owns it and why it exists. You will always find roles with no clear purpose or stale privileges. Remove them or lock them until needed again.
Look for privilege creep. Roles often get more access than they need because it’s faster in the moment. Over quarters, this turns into all-powerful accounts that no one remembers approving. Keep roles scoped to the smallest set of permissions that still lets them do their job.
Document changes. Every role added, removed, or altered should leave a record. This is not just for compliance. It builds a shared memory for the team, so future check-ins are faster and cleaner.