1. PostgreSQL 行级安全(Row-Level Security, RLS)策略的实现?
PostgreSQL 行级安全(Row-Level Security, RLS)策略如何实现?
- RLS 概念
- CREATE POLICY 语法
- 启用与禁用
行级安全(RLS)允许数据库在行级限制哪些用户能访问哪行数据,无需应用层过滤。实现步骤:①在表上启用 RLS:ALTER TABLE ... ENABLE ROW LEVEL SECURITY;②创建策略:CREATE POLICY ... ON table USING (条件) WITH CHECK (条件);③条件中可用 CURRENT_USER、current_setting('app.tenant_id') 等判断当前用户。策略按操作类型(ALL/SELECT/INSERT/UPDATE/DELETE)分别定义,USING 限制现有行,WITH CHECK 限制插入/更新的新行。RLS 常用于多租户隔离。
RLS 是 PostgreSQL 实现多租户行级隔离的核心机制,策略由数据库强制,比应用层过滤更安全。FORCE ROW LEVEL SECURITY 可对表 owner 也强制。
ALTER TABLE orders ENABLE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation ON orders
USING (tenant_id = current_setting('app.tenant_id')::int);