dev.to | 📄 原文链接 | 2026-08-22 收录

Symfony 中的行级安全:跑迁移的那个角色绕过了你写的所有策略

来源:dev.to — 2026-08-21

📋 概述

作者从一条胜过原文的评论出发,深入探讨了 Symfony 单库多租户场景下的 PostgreSQL 行级安全(RLS)陷阱。他先认同评论观点:谓词不该放在 ORM 里,而应作为 Postgres 的 RLS 策略存在,这样 Messenger worker、原生 SQL 与临时 psql 会话都能拿到同一套 WHERE 约束。但真正的坑在于:不仅是超级用户会绕过 RLS,连"表的所有者"也会绕过该表的策略——而在几乎每个 Symfony 部署中,拥有表所有权的正是应用自己连接的数据库角色。这意味着你写的租户隔离策略可能从未真正生效。所有结论都在 PostgreSQL 18.3 上实测并附完整命令。

🔑 核心要点

💡 金句

那个拥有你所有表的角色,恰恰是你应用连接数据库时用的那个角色。
← 返回 dev.to 首页