PostgreSQL 安全性

2021-08-19 18:00 更新

能夠修改訂閱者側模式的用戶可以作為超級用戶執(zhí)行任意代碼。將這些表上的所有權和TRIGGER特權限制為超級用戶信任的角色。 此外,如果不受信任的用戶可以創(chuàng)建表,則只使用顯式列出表的發(fā)布。 也就是說,只有當超級用戶信任允許在發(fā)布者或訂閱者上創(chuàng)建非臨時表的所有用戶時,才創(chuàng)建FOR ALL TABLES的訂閱。

用于復制連接的角色必須具有REPLICATION屬性(或者是超級用戶)。 如果角色缺少SUPERUSERBYPASSRLS,發(fā)布者的行安全策略可以執(zhí)行。 如果角色不信任全部表所有者,則在連接字符串中包含options=-crow_security=off;如果表所有者隨后添加行安全策略,則該設置將導致復制中斷,而不是執(zhí)行該策略。 角色的訪問權限必須在pg_hba.conf中配置,并且必須具有LOGIN屬性。

為了能夠拷貝初始表數(shù)據(jù),用于復制連接的角色必須在被發(fā)布的表上具有SELECT特權(或者是一個超級用戶)。

要創(chuàng)建發(fā)布,用戶必須在數(shù)據(jù)庫中有CREATE特權。

要把表加入到一個發(fā)布,用戶必須在該表上有擁有權。要創(chuàng)建一個自動發(fā)布所有表的發(fā)布,用戶必須是一個超級用戶。

要創(chuàng)建訂閱,用戶必須是一個超級用戶。

訂閱的應用過程將在本地數(shù)據(jù)庫上以超級用戶的特權運行。

特權檢查僅在復制連接開始時被執(zhí)行一次。在從發(fā)布者讀到每一個更改記錄時不會重新檢查特權,在每一個更改被應用時也不會重新檢查特權。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號