Postgresql

將 LDAP 綁定憑證儲存在 pg_hba.conf 的環境變數中

  • January 21, 2022

我正在為 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在初始化時使圖像處理文件。

  1. 使用以下內容為服務創建一個.env文件:
LDAPCONFIG=ldapurl="ldap://example.local/dc=example,dc=local?sAMAccountName" ldapbinddn="username" ldapbindpasswd="password"

將此文件添加到您的文件中,.gitignore這樣它就不會被送出。

  1. pg_hba.conf使用環境變數編輯文件:
# TYPE  DATABASE    USER    ADDRESS     METHOD
host    all         all     all         ldap $LDAPCONFIG
  1. 添加以下腳本(我保存在 下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一行的,不同的行可能有不同的設置。

引用自:https://dba.stackexchange.com/questions/306305