克里斯托夫·佩图斯:检查您的权限

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

内容提要

PostgreSQL角色和权限系统可能会令人惊讶。除非授予特定权限,否则任何人都可以执行函数。新函数的默认权限是任何人都可以执行。为了修复这个问题,撤销对PUBLIC的授权并修改新函数的默认权限。请注意默认权限并相应地进行调整。

🎯

关键要点

  • PostgreSQL的角色和权限系统可能会令人惊讶。

  • 新创建的函数默认权限是任何人都可以执行。

  • 可以通过撤销对PUBLIC的授权来限制函数的执行权限。

  • REVOKE命令不会创建新的权限条目,只是移除已存在的权限。

  • PUBLIC角色意味着所有角色,因此任何人都可以执行未明确限制的函数。

  • 要修复权限问题,首先需要撤销对PUBLIC的EXECUTE权限。

  • 可以通过ALTER DEFAULT PRIVILEGES命令修改新函数的默认权限。

  • 重要的是要记住,修改默认权限不会影响现有函数的权限。

延伸问答

PostgreSQL的权限系统有什么特别之处?

PostgreSQL的角色和权限系统可能会令人惊讶,尤其是新创建的函数默认权限是任何人都可以执行。

如何限制特定用户执行函数的权限?

可以通过撤销对PUBLIC的EXECUTE权限,并为特定用户授予EXECUTE权限来限制其他用户的执行权限。

REVOKE命令在PostgreSQL中是如何工作的?

REVOKE命令不会创建新的权限条目,而是移除已存在的权限,如果没有匹配的权限条目,REVOKE将无效。

如何修改新函数的默认权限?

可以使用ALTER DEFAULT PRIVILEGES命令来修改新函数的默认权限,撤销对PUBLIC的EXECUTE权限。

为什么低权限用户仍然可以执行函数?

因为新函数默认将EXECUTE权限授予PUBLIC角色,低权限用户可以在没有明确限制的情况下执行该函数。

修改默认权限会影响现有函数吗?

不会,修改默认权限只会影响新创建的函数,不会改变现有函数的权限。

🏷️

标签

➡️

继续阅读