无超级用户权限的PostgreSQL事件触发器

无超级用户权限的PostgreSQL事件触发器

💡 原文英文,约700词,阅读约需3分钟。
📝

内容提要

Postgres中的事件触发器功能强大,但仅限超级用户创建。在云环境中,授予超级用户权限不可行。通过supautils扩展,普通用户可以安全地创建事件触发器。该扩展使用“特权角色”作为超级用户的代理,提供安全的权限子集,并通过拦截和替换事件触发器函数来确保安全性,防止特权升级。未来希望在Postgres核心中允许普通用户创建事件触发器。

🎯

关键要点

  • Postgres中的事件触发器功能强大,但仅限超级用户创建。
  • 在云环境中,授予超级用户权限不可行。
  • 通过supautils扩展,普通用户可以安全地创建事件触发器。
  • supautils的核心是“特权角色”,作为超级用户的代理,提供安全的权限子集。
  • 创建事件触发器时,使用Utility Hook拦截语句并提升角色为超级用户。
  • 存在特权升级问题,恶意用户可以利用事件触发器提升权限。
  • 解决方案是跳过超级用户的用户事件触发器。
  • 使用Function Manager hook拦截事件触发器函数并替换为“noop”。
  • 用户可以安全地创建事件触发器,而无需超级用户访问权限。
  • 希望在Postgres核心中允许普通用户创建事件触发器,已提交补丁进行讨论。
  • 用户事件触发器现已在Supabase平台的新项目中可用。
➡️

继续阅读