gpt4 book ai didi

security - Postgresql 数据库对象安全

转载 作者:行者123 更新时间:2023-11-29 13:35:34 25 4
gpt4 key购买 nike

我正在开发一个将使用 postgreSQL 数据库后端的应用程序。我想阻止用户看到一些数据库对象 - 特别是存储过程实现等。

“显而易见的”(但可能是错误的)方法是将对数据库的 CRUD 访问权限授予将具有加密的 uname/pwd 的特定用户?

还有其他方法吗?

注意:我的目标受众主要是非程序员,因此我不需要任何“牢不可破”的东西(假设存在这样的东西)。

最佳答案

PostgreSQL 并不真正支持限制过程源代码、用户或数据库列表等的可见性。最好的办法是接受这一点,或者在 C 或 PL/Java 中实现过程,在这些地方检查起来有点困难成本大大提高了实现的复杂性。

一般来说,您不应该让数据库/表所有者成为数据库的日常操作用户。创建一个新用户并GRANT仅授予它所需的权限。

大多数系统目录都有默认的 SELECT 权限授予 public 所以你真的想限制访问你需要显式地 REVOKE访问然后 GRANT 将其返回给数据库所有者和任何其他应该拥有它的用户。例如,如果您想限制对过程源的访问,您可能希望限制对 pg_proc 的访问。这种方法是有限且脆弱的(root 总是可以获得 PostgreSQL super 用户访问权限,并从那里做任何事情),但你已经说过这可能适合你的目的。

乱用系统目录并没有得到真正的支持,并且可能导致 JDBC、psql 等中的元数据访问出现问题。参见 this related answer .如果您弄乱了目录并且有什么东西坏了,您可以保留这些碎片。

顺便说一句,如果您修改了目录,请尽量避免在这里询问有关带有手动修改目录的数据库的问题。至少要非常清楚地说明您已经弄乱了系统目录,并且确切地您做了什么。如果可能,请先在未修改的数据库上重现问题。

关于security - Postgresql 数据库对象安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13138350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com