我花了一个小时试图理解为什么我的odi角色(既不是公共模式的所有者,也不是数据库的所有者)可以在这个模式中创建表。
| | odi=U/eos |
public | postgres | postgres=UC/postgres+| standard public schema
| | =UC/postgres +|
| | odi=U/postgres +|
| | visu=U/postgres |
字符串
最奇怪的是,即使我明确地剥夺了这个权利(从ODI中撤销在模式公共上创建),这个动作也没有阻止他这样做。
有什么建议吗?PG服务器v11.5非常感谢
1条答案
按热度按时间bxjv4tth1#
原因就是这个访问控制项:
=UC/postgres
:它赠款USAGE
和CREATE
授予PUBLIC
(每个人)。您应该删除不安全的默认设置。就像文档说的:
请注意,默认情况下,每个人都对模式
public
具有CREATE
和USAGE
特权。这允许所有能够连接到给定数据库的用户在其public
模式中创建对象。某些使用模式要求撤销该权限:字符串
请至少升级到最新的次要版本(当前为11.20)。更好的是,升级到v15或更高版本,因为
PUBLIC
上的版本不再具有这种不安全的默认权限。