concept · wiki/concept-chemical-rls-app-role.md
Concept — chemical RLS and app role
**테넌트 격리 = PostgreSQL RLS + 비-owner `chemical_app` 접속 + 관리자만 명시 bypass**.
corpusprojectlayermodeltypeconceptdomainbackendsprojectchemicalstatusactiveupdated2026-07-18originowned
Concept — chemical RLS and app role
한 줄: 테넌트 격리 = PostgreSQL RLS + 비-owner chemical_app 접속 + 관리자만 명시 bypass.
모델
| 역할 | 용도 |
|---|---|
| chemical | owner/DDL·마이그레이션. 앱 런타임 접속 금지 |
| chemical_app | 모든 앱 서비스 DATABASE_URL |
| app.bypass_rls=on | admin-gateway 등 전역 조회 세션만 |
적용 단계
014→015→016 정책 enable 후 017 FORCE — table owner조차 정책 우회 불가(super/BYPASS 제외).
운영 함의
- 로컬 owner가 superuser면 FORCE 의미를 과대 주장하지 말 것 (체크리스트).
- loader/배치가 owner로 돌면 운영에서 깨질 수 있음 → 경로 목록화.