Postgresql
將 LDAP 綁定憑證儲存在 pg_hba.conf 的環境變數中
我正在為 PostgreSQL 數據庫設置 LDAP 身份驗證,並在我的
pg_hba.conf
文件中添加了以下內容:# TYPE DATABASE USER ADDRESS METHOD host all all all ldap ldapurl="ldap://example.local/dc=example,dc=local?sAMAccountName" ldapbinddn="username" ldapbindpasswd="password"
有用!但現在我想將使用者名和密碼儲存為環境變數,就像我對大多數配置設置所做的那樣。我嘗試將使用者名和密碼添加為 $ LDAPUSERNAME or " $ LDAPUSERNAME”,但他們沒有插入任何值。這可能嗎?
注意:數據庫將在 docker 容器中執行。如果我必須
pg_hba.conf
在啟動數據庫之前執行一些腳本來處理文件,我可以。
由於我的最終目標是使密碼不受版本控制並且數據庫在 docker 容器中執行,因此我
pg_hba.conf
在初始化時使圖像處理文件。
- 使用以下內容為服務創建一個
.env
文件:LDAPCONFIG=ldapurl="ldap://example.local/dc=example,dc=local?sAMAccountName" ldapbinddn="username" ldapbindpasswd="password"
將此文件添加到您的文件中,
.gitignore
這樣它就不會被送出。
pg_hba.conf
使用環境變數編輯文件:# TYPE DATABASE USER ADDRESS METHOD host all all all ldap $LDAPCONFIG
- 添加以下腳本(我保存在 下
scripts/ldap.sh
)並更新 dockerfile 以將腳本複製到初始化目錄中:#!/usr/bin/env bash echo "Setting up pg_hba.conf file" cat /var/tmp/pg_hba.conf | envsubst > /var/lib/postgresql/data/pg_hba.conf
FROM postgres:14 RUN apt-get -y upgrade \ && apt-get install -y gettext # Dependency for envsubst command COPY ./scripts/ldap.sh:/docker-entrypoint-initdb.d/10ldap.sh COPY ./config/pg_hba.conf /var/tmp/pg_hba.conf
注意:此腳本僅在數據目錄為空時執行,如果容器已經有數據庫,則必須執行該腳本。
現在只需啟動您的數據庫並註意日誌中的任何錯誤!
您不能通過 PostgreSQL 中的環境變數指定這些設置。請記住,這
ldapbindpasswd
是特定於某pg_hba.conf
一行的,不同的行可能有不同的設置。