원문 캡처 · github.com
원문 캡처 · github.com

Vericto Proxy는 PostgreSQL이나 MySQL 앞에 두고 AI 에이전트·스크립트·사람이 보내는 SQL을 규칙에 따라 차단하거나 전달하는 프록시다. 애플리케이션 코드를 바꾸지 않고 연결 문자열의 호스트와 포트만 프록시로 지정하면 되며, Docker로 임시 데이터베이스를 띄워 동작을 시험할 수 있다.

프록시는 데이터베이스 통신 프로토콜을 사용해 쿼리를 파싱하고 규칙을 확인한다. 기본 규칙은 조건절 없는 DELETE·UPDATE, DROP TABLE, DROP SCHEMA, TRUNCATE, 일부 SQL 주입 패턴 등을 차단한다. SELECT *처럼 심각도가 낮은 항목은 차단하지 않고 전달하면서 기록한다. 규칙 동기화를 위한 제어 플레인 연결이 있으면 심각도별 동작을 워크스페이스 정책으로 정할 수 있다.

PostgreSQL은 기본 설정이며, MySQL은 VERICTO_WIRE_PROTOCOL=mysql로 선택한다. 두 데이터베이스에서 차단된 쿼리는 각 프로토콜의 일반 오류로 반환된다. Oracle, SQL Server, Snowflake, SQLite용 와이어 프록시는 제공하지 않는다. 이들 방언은 HTTP API·CLI·MCP로 평가할 수 있으며, SQLite는 애플리케이션 안에서 실행 전에 SQL을 검사해야 한다.

민감 열 정책은 Team·Enterprise 요금제에서 대시보드에 설정할 수 있고, 정책 동기화에는 제어 플레인 연결과 VERICTO_DATABASE_ID가 필요하다. 정책은 차단·마스킹·표시 중 선택하며, 여러 민감 열이 포함되면 가장 엄격한 정책을 적용한다. 마스킹 쿼리를 안전하게 재작성할 수 없으면 원래 쿼리를 전달하지 않고 차단한다. 마스킹 또는 차단 대상 열이 있는 테이블에서 SELECT *를 실행하는 경우에도 쿼리를 막으므로 열을 명시해야 한다.

에이전트 접근 제어 역시 Team·Enterprise 요금제 기능이다. 데이터베이스 사용자별로 읽기·쓰기 가능한 테이블과 열을 허용 목록으로 설정하며, 목록에 없는 항목은 VERICTO-087로 거부한다. 세션의 신원은 인증한 데이터베이스 사용자로 정하므로 에이전트마다 별도 사용자를 부여해야 한다. observe 모드에서는 거부할 쿼리를 기록하되 전달한다.

Docker 체험은 계정·API 키·빌드 없이 실행할 수 있다. 저장소의 명령은 일회용 PostgreSQL 데이터베이스와 프록시를 띄운 뒤 조건절 없는 DELETE와 조건절이 있는 DELETE를 차례로 보낸다. 전자는 데이터베이스에 도달하지 않고 후자는 전달된다. 예시 비밀번호 demo는 이 임시 데이터베이스에만 쓰인다. 자세한 설치와 설정은 Vericto Proxy 저장소와 Docker 안내를 참고하면 된다.

프록시는 자체 호스팅이 가능하며 영리 기업의 프로덕션 사용도 무료다. 다만 이를 대체하거나 실질적으로 비슷한 기능을 제공하는 상용 제품·서비스에 포함해 제공하는 것은 라이선스가 허용하지 않는 경쟁 사용에 해당한다. 각 릴리스는 Vericto가 공개한 지 2년 뒤 Apache-2.0으로 전환된다.