- 멀티테넌시 환경의 PostgreSQL의 user가 자신이 가진 권한 외의 데이터베이스, 스키마, 테이블의 메타데이터를 조회가 가능하다는 문제를 전달받음
- 데이터베이스 목록 조회:
\l
- 특정 데이터베이스의 스키마 목록 조회:
\c {데이터베이스 이름}입력 → \dn
- 특정 스키마의 테이블 목록 조회:
\c {데이터베이스 이름}입력 → \dt {스키마 이름}.*
- PostgreSQL 보안 모델은 클러스터 레벨로 이루어져 있음
- 시스템 카탈로그 (
pg_database 등)은 PostgreSQL 내부 동작에 필수직이므로, 모든 사용자에게 읽기 권한이 부여되어 있음
REVOKE SELECT ON pg_database FROM PUBLIC;으로 SELECT 권한을 변경해도 무시됨
- 공격자가 하나의 user 계정를 탈취한다면 PostgreSQL 인스턴스 내 데이터베이스, 스키마, 테이블 이름이 노출됨
- 메타데이터 노출을 막기 위해선 DB 인스턴스를 테넌트별로 분리하는 것이 이상적이나, 이는 현실적인 어려움이 존재함
- 대신 user의 불필요한 권한를 제거함으로 사용자 권한 관리 강화
- 애플리케이션 서버 및 개발자가 Cloud SQL Auth Proxy를 통해 인증을 대신 처리하고, SSL/TLS 터널을 통해 안전하게 접속시킴