ショコラ
ポストグレスコンテナで接続元IPを絞るには?
pg_hba.conf の設定ファイルに、
「host all all 192.168.100.3/32 password」で接続元を許可して、
「host all all all reject」で許可されたもの以外を拒絶します。
手順をまとめました。
もっさん先輩
手順
ポストグレスコンテナで接続元IPを絞る手順。
- ポストグレスネットワークを作成します。
docker network create --subnet 192.168.100.0/24 postgres_network
- ポストグレスコンテナを起動します。
docker run --rm --name postgres\
--network postgres_network --ip 192.168.100.2\
-e POSTGRES_PASSWORD=123456 postgres:14
- ポストグレスコンテナに入ります。
docker exec -it postgres bash
- これから立ち上げるポストグレスコンテナ(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
- 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
- 接続ログを出力するようにします。
sed -i "s/#log_connections = off/log_connections = on/" /var/lib/postgresql/data/postgresql.conf
- ポストグレスをリロードします。
su postgres -c "pg_ctl reload"
# su postgres -c "pg_ctl reload"
server signaled
- 別のターミナルでポストグレスクライアントを立ち上げます。
docker run --network postgres_network --ip 192.168.100.3 -it postgres:14 bash
- 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=#
- また別のターミナルでポストグレスクライアントを立ち上げます。
docker run --network postgres_network --ip 192.168.100.4 -it postgres:14 bash
- 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 で接続できません。
以上