
Securing AI Agents with Database Access Using Token Exchange, DPoP and Row-Level Security
The article explains how to safely grant AI agents access to production databases without exposing excessive privileges. It draws on decades-old security principles such as least privilege and the confused deputy problem, now applied to LLM agents that can be tricked by prompt injection. The recommended architecture replaces persistent service-account tokens with short-lived, attenuated tokens obtained via OAuth 2.0 Token Exchange (RFC 8693) and bound to the client using DPoP (RFC 9449). Human confirmation for sensitive actions is handled through OpenID CIBA, delivering approval directly inside the chat interface. PostgreSQL Row-Level Security enforces the final authorization boundary by checking the user subject on every query. A ready-to-run demo built with issuerd and Keycloak demonstrates the full flow, including prompt-injection attempts and stolen-token attacks that are automatically rejected.
HabrOct 1, 2026Translated from Russian
