ポストグレスコンテナで接続元IPを絞るには?

ショコラ
ショコラ

ポストグレスコンテナで接続元IPを絞るには?

pg_hba.conf の設定ファイルに、
「host all all 192.168.100.3/32 password」で接続元を許可して、
「host all all all reject」で許可されたもの以外を拒絶します。
手順をまとめました。

もっさん先輩
もっさん先輩

手順

ポストグレスコンテナで接続元IPを絞る手順。

  1. ポストグレスネットワークを作成します。
docker network create --subnet 192.168.100.0/24 postgres_network
  1. ポストグレスコンテナを起動します。
docker run --rm --name postgres\
 --network postgres_network --ip 192.168.100.2\
 -e POSTGRES_PASSWORD=123456 postgres:14
  1. ポストグレスコンテナに入ります。
docker exec -it postgres bash
  1. これから立ち上げるポストグレスコンテナ(192.168.100.3/32)から password接続できるようにします。
sed -i "1i host all all 192.168.100.3/32 password" /var/lib/postgresql/data/pg_hba.conf
  1. 192.168.100.3/32 以外からは接続できないようにします。
sed -i "s/host all all all scram-sha-256/host all all all reject/" /var/lib/postgresql/data/pg_hba.conf
  1. 接続ログを出力するようにします。
sed -i "s/#log_connections = off/log_connections = on/" /var/lib/postgresql/data/postgresql.conf
  1. ポストグレスをリロードします。
su postgres -c "pg_ctl reload"
# su postgres -c "pg_ctl reload"
server signaled
  1. 別のターミナルでポストグレスクライアントを立ち上げます。
docker run --network postgres_network --ip 192.168.100.3 -it postgres:14 bash
  1. psql で 先ほど立ち上げた 192.168.100.2 のポストグレスに接続します。
psql -h 192.168.100.2 -U postgres
# psql -h 192.168.100.2 -U postgres
Password for user postgres:{パスワード入力}
psql (14.2 (Debian 14.2-1.pgdg110+1))
Type "help" for help.

postgres=#
  1. また別のターミナルでポストグレスクライアントを立ち上げます。
docker run --network postgres_network --ip 192.168.100.4 -it postgres:14 bash
  1. psql で 先ほど立ち上げた 192.168.100.2 のポストグレスに接続します。
psql -h 192.168.100.2 -U postgres
# psql -h 192.168.100.2 -U postgres
psql: error: connection to server at "192.168.100.2", port 5432 failed: FATAL:  pg_hba.conf rejects connection for host "192.168.100.4", user "postgres", database "postgres", no encryption

こちらからは reject で接続できません。

以上

Scroll to Top