pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
函数和规则允许用户把代码插入到后端服务器中, 而其他用户可能在不知情的情况下执行这些代码。因此,这两种 机制都允许用户特洛伊木马 攻击他人而相对不受惩罚。唯一真正的保护是严格控制 谁能定义函数(例如,向带 SQL 字段的关系写入)和规则。 也建议在pg_class、pg_user 和pg_group上建立审计追踪和告警器。
除 SQL 之外的语言编写的函数都在后端服务器进程内部 以用户postgres的权限运行 (后端服务器以其真实和有效用户 id 都设置为 postgres的方式运行。用户 有可能从受信任的函数内部更改服务器的内部数据结构。 因此,除许多其他事情外,这样的函数可以绕过任何系统 访问控制。这是用户定义 C 函数固有的问题。
与 SQL 函数一样,规则总是以调用后端服务器的用户的 身份和权限运行。
目前没有在Postgres内部显式支持 加密数据的计划(不过没有什么能阻止用户在用户定义的 函数内加密数据)。在前端/后端协议完全重写之前, 也没有显式支持加密网络连接的计划。
用户名、组名和相关系统标识符(例如 pg_user.usesysid的内容)被假定在整个 数据库中唯一。如果不是这样,可能出现不可预测的结果。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。