【问题标题】:PostgreSQL separate User for Replication?PostgreSQL 单独的复制用户?
【发布时间】:2019-12-05 22:06:45
【问题描述】:

我想知道为什么需要专门为复制创建一个单独的用户(具有 REPLICATION 权限的用户)或者我可以使用超级用户来做同样的事情吗?

我有一个 PostgreSQL 11 数据库正在运行,它有一个主要用户(超级用户)。 webapp 使用相同的超级用户连接到数据库。现在,我需要将此数据库复制到从站。创建一个新的数据库用户(用于复制或任何其他目的)对我们的客户来说是一个巨大的安全问题/交易。我想知道我是否可以使用相同的超级用户进行复制,或者是否需要创建复制用户(具有 REPLICATION 权限)。如果需要单独的复制用户,您能解释一下原因吗?

请告诉我。

谢谢

【问题讨论】:

  • 显然您的客户并不真正关心安全性,因为“一个 webapp 使用同一个超级用户连接到数据库”是一个真的,真的与创建第二个用户相比,这是个坏主意,而且安全风险很多

标签: postgresql database-replication postgresql-11


【解决方案1】:

superuser 可以做很多 replication 用户不能做的事情。虽然复制用户是一个非常特权的角色,但它不能执行创建/删除其他超级用户或安装/使用某些扩展等操作。如果对源码做grep,可以看到:

$ grep "must be superuser to" -inr * | wc -l
     698
$ grep "must be superuser or replication role to" -inr * | wc -l
      37

即使复制角色具有高度特权,也不能将其误认为是超级用户角色。需要非常仔细地考虑创建超级用户角色,并且只将其分配给可以信任的人。

【讨论】:

    猜你喜欢
    • 2014-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2020-11-27
    相关资源
    最近更新 更多