Security

我可以在 Postgres 中創建特定於主機的使用者嗎?(例如:postgres@localhost)

  • August 15, 2021

我的問題

我可以對使用者(例如:)設置權限,以postgres使該使用者只能從 TCP localhost 登錄,但不能從 Internet 登錄?

受信任的套接字與遠端密碼

我知道您可以初始化 postgres 以允許本地使用者無需密碼登錄,並允許遠端主機使用密碼登錄:

initdb \
           -D "$POSTGRES_DATA_DIR/" \
           --username postgres --pwfile "$PWFILE" \
           --auth-local=trust --auth-host=password

內聯網與網際網路

對於通過 Internet 連接的任何系統,我想使用具有非常、非常強(不可記憶)的隨機 128 位字元串的使用者。

但是,對於本地和 Intranet 訪問,我希望能夠擁有一個我能記住(和輸入)的使用者名和密碼。

我可以這樣做……還是我只需要為每個允許連接的系統設置一個使用者,每個使用者都有.pgpass一個?

(我不想在電腦之間共享明文文件中的密鑰)

您沒有提供有關您的 PostgreSQL 版本的任何資訊,我假設您使用的是 PostgreSQL 12。

我可以對使用者(例如:postgres)設置權限,使得該使用者只能從 TCP localhost 登錄,但不能從 Internet 登錄?

是的,使用pg_hba.conf. 您可能希望首先通過hba_file執行時配置載入它。

但是,對於本地和 Intranet 訪問,我希望能夠擁有一個我能記住(和輸入)的使用者名和密碼。

如果要添加受密碼保護的僅限本地使用者,請添加

local <database_name> <local-only_user_name> scram-sha-256 

在你的pg_hba.conf.

您可能希望首先通過以下方式創建使用者CREATE ROLE

CREATE ROLE username LOGIN ENCRYPTED PASSWORD 'insert-your-password-here';

您可能還需要檢查hosthostssl記錄條目以添加到您pg_hba.conf的配置您的 Intranet 和基於 Internet 的身份驗證。

檢查連結文件以獲取更多資訊。

引用自:https://serverfault.com/questions/1074592