Database design PostgreSQL/PHP自定义CMS-单个数据库安全中的多个模式

Database design PostgreSQL/PHP自定义CMS-单个数据库安全中的多个模式,database-design,postgresql,content-management-system,Database Design,Postgresql,Content Management System,我正在使用PHP和PostgreSQL编写CMS。CMS能够从单个代码库运行多个站点,每个站点/域使用一组唯一的表,这取决于启用了哪些功能 我知道PostgreSQL在一个数据库中支持多个模式,访问权限由模式设置 我的问题是,在同一个数据库中,每个站点使用一个模式是否有任何安全隐患 在理解任何一种方法的利弊方面都非常有帮助,但是它没有提到安全方面。选择的答案表示PostgreSQL“模式”等同于MySQL“数据库”。如果是这样的话,我对这种方法很满意。但是,是否有任何安全问题需要注意?我的理解是

我正在使用PHP和PostgreSQL编写CMS。CMS能够从单个代码库运行多个站点,每个站点/域使用一组唯一的表,这取决于启用了哪些功能

我知道PostgreSQL在一个数据库中支持多个模式,访问权限由模式设置

我的问题是,在同一个数据库中,每个站点使用一个模式是否有任何安全隐患

在理解任何一种方法的利弊方面都非常有帮助,但是它没有提到安全方面。选择的答案表示PostgreSQL“模式”等同于MySQL“数据库”。如果是这样的话,我对这种方法很满意。但是,是否有任何安全问题需要注意?我的理解是PostgreSQL使用的细粒度权限应该保护给定数据库中的每个模式,但是我不能100%确定这一点

此设置是否还可以在一次查询中为具有多个架构权限的用户跨多个架构进行查询


任何想法都将不胜感激,提前感谢。

是的,具有适当权限的用户可以跨架构查询。只需确保在表名前面加上模式名即可


就安全性而言,只要您对每个只能访问该架构的架构使用单独的用户帐户,与使用单独的数据库相比,应该没有什么区别。

他们将能够看到其他架构和表存在,但他们将无法访问它们。包含这些信息的Postgres目录不能像那样被锁定。这是一个已知的模式分离的“限制”

否则,只要安全设置正确,他们就不能通过模式之外的方式访问任何信息


是的,您可以跨他们有权访问的任何架构/表/对象进行用户查询,只要它位于搜索路径中,或者通过显式限定它。

2这两种方法都很好地回答了这个问题。由于附加架构可见性“gotcha”,已将此标记为已使用!