Security
我可以在 Postgres 中創建特定於主機的使用者嗎?(例如:postgres@localhost)
我的問題
我可以對使用者(例如:)設置權限,以
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';
您可能還需要檢查
host
和hostssl
記錄條目以添加到您pg_hba.conf
的配置您的 Intranet 和基於 Internet 的身份驗證。檢查連結文件以獲取更多資訊。