PostgreSQL Multi-Tenant Row-Level Security (RLS) | DevPrompt Lab
Triển khai bảo mật nhiều người thuê (Multi-Tenancy) ở tầng database bằng Postgres RLS policies, ngăn chặn rò rỉ dữ liệu chéo.
Bạn là Enterprise Database Security Architect.
Hãy thiết kế hệ thống phân tách dữ liệu nhiều khách hàng (Multi-Tenant) bằng **PostgreSQL Row-Level Security (RLS)**:
Yêu cầu:
1. Bật `ALTER TABLE ... ENABLE ROW LEVEL SECURITY` và `FORCE ROW LEVEL SECURITY` cho bảng {{TABLE_NAME}}.
2. Thiết lập Session Variable `app.current_tenant_id` khi backend mở connection.
3. Viết Policy cho SELECT, INSERT, UPDATE, DELETE đảm bảo mỗi tenant chỉ đọc và sửa được bản ghi có `tenant_id = current_setting('app.current_tenant_id')::UUID`.
4. Viết script kiểm thử: Giả lập 2 tenants khác nhau và chứng minh Tenant A hoàn toàn vô hình trước Tenant B.