① 权限矩阵编辑器(角色 × 表 × 动作)
点击单元格切换 GRANT / REVOKE。下方会同步生成 SQL,并预览每个角色对每张表的「能/不能」。
这套机制对应文档 13.2 节的 GRANT 体系。
已授权
未授权
点击单元格切换
📜 自动生成的 GRANT/REVOKE SQL
🧪 模拟权限检查
点击「检查」查看结果
② 行级安全 RLS · 多租户实时演示
下方是真实的
tickets 表(共 9 行,分属租户 1/2/3)。
切换「当前会话身份」相当于执行 SET LOCAL app.tenant_id = N,
RLS 引擎会自动用 USING 子句过滤行。
📦 表中的真实数据(数据库视角)
👀 RLS 过滤后你能看到的(应用视角)
✏️ 写入测试 · WITH CHECK 拦截演示
尝试以当前身份插入一条工单,
tenant_id 由你指定。如果与会话不一致,
RLS 的 WITH CHECK 子句会拦截。
等待操作...
📜 当前 RLS 策略
-- 启用并强制 RLS(连 owner 也受约束) ALTER TABLE tickets ENABLE ROW LEVEL SECURITY; ALTER TABLE tickets FORCE ROW LEVEL SECURITY; -- PERMISSIVE(默认):每个动作各一条 CREATE POLICY tenant_iso_select ON tickets FOR SELECT USING (tenant_id = current_setting('app.tenant_id')::int); CREATE POLICY tenant_iso_insert ON tickets FOR INSERT WITH CHECK (tenant_id = current_setting('app.tenant_id')::int); CREATE POLICY tenant_iso_update ON tickets FOR UPDATE USING (tenant_id = current_setting('app.tenant_id')::int) WITH CHECK (tenant_id = current_setting('app.tenant_id')::int); -- RESTRICTIVE(黑名单):屏蔽 archived 状态 CREATE POLICY no_archived ON tickets AS RESTRICTIVE FOR SELECT USING (status <> 'archived');
③ pg_hba.conf 规则匹配模拟器
在左边按真实顺序写规则,右边输入「连接请求」模拟 PG 自上而下匹配。
第一条匹配的就是结果。
📝 pg_hba.conf 规则(每行 5 列)
🔌 模拟连接请求
点击「匹配」查看哪条规则命中
🛡️ METHOD 安全等级
| METHOD | 安全 | 原理 | 生产建议 |
|---|---|---|---|
| trust | ⚠️ 极低 | 不验密码 | 仅 docker / CI |
| md5 | 低 | MD5 哈希 | 不推荐 |
| scram-sha-256 | 高 | SCRAM 挑战-应答 | ★ 默认推荐 |
| cert | 高 | 双向 TLS | 机器对机器 |
| peer | 中 | OS 用户名映射 | 仅本地 socket |
| ldap | 中 | 转发到 LDAP | 统一登录 |
| reject | — | 立即拒绝 | 显式拉黑 |