All posts

Separation of Duties with Pgcli: Protecting Your Database from Costly Mistakes

That’s the risk when separation of duties isn’t baked into your workflow. Pgcli is powerful. Too powerful when every developer, tester, and admin shares the same permissions. Clean division between who can read, who can write, and who can alter structure is not optional—it’s survival. With Pgcli, separation of duties starts by creating clear user roles in PostgreSQL. One role for read-only queries. One role for schema changes. One for maintenance. Then configure Pgcli to connect using those rol

Free White Paper

DPoP (Demonstration of Proof-of-Possession) + Database Access Proxy: The Complete Guide

Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.

Free. No spam. Unsubscribe anytime.

That’s the risk when separation of duties isn’t baked into your workflow. Pgcli is powerful. Too powerful when every developer, tester, and admin shares the same permissions. Clean division between who can read, who can write, and who can alter structure is not optional—it’s survival.

With Pgcli, separation of duties starts by creating clear user roles in PostgreSQL. One role for read-only queries. One role for schema changes. One for maintenance. Then configure Pgcli to connect using those roles, not generic superuser accounts. This stops casual commands from turning into catastrophic data loss.

The best setups go further. They use auditing to log every Pgcli session. They enforce MFA on database accounts. They disable superuser login for daily work. They keep production direct access off-limits, funneling all interaction through controlled staging and review flows. Pgcli works seamlessly in these boundaries when paired with PostgreSQL’s role and privilege features.

Continue reading? Get the full guide.

DPoP (Demonstration of Proof-of-Possession) + Database Access Proxy: Architecture Patterns & Best Practices

Free. No spam. Unsubscribe anytime.

Separation of duties with Pgcli also means separating environments. Local development shouldn’t point to production data. Staging should mirror production structure but hold anonymized or synthetic records. Sensitive operations should require a second set of eyes—either via code review before migrations or pre-approved maintenance windows.

Every team that ignores these steps pays eventually. For some, it’s a minor outage. For others, it means unrecoverable loss. With Pgcli, the line between speed and safety can be razor-thin unless you set the rules.

If you want to see a streamlined, live example of how separation of duties can be enforced without killing developer velocity, spin it up on hoop.dev. In minutes, you’ll see a working model where Pgcli plays by the rules—and everyone sleeps better.

Get started

See hoop.dev in action

One gateway for every database, container, and AI agent. Deploy in minutes.

Get a demoMore posts