■ PostgreSQL의 클라이언트의 접속 인증관련 파일인 pg_hba.conf 설정하기(Ubuntu 22.04 LTS에서 apt로 설치된 환경)
▶ postgresql.conf 파일은 이름 그대로 PostgreSQL의 설정 관련 내용들을 정의하는 파일입니다.
- 위치 : 기본적으로 /etc 밑에 postgresql 경로에 있습니다. 예) /etc/postgresql/버전/main/postgresql.conf
▶ pg_hba.conf 파일은 클라이언트의 인증관련 설정을 정의하는 파일입니다.
- 위치 : 기본적으로 /etc 밑에 postgresql 경로에 있습니다. 예) /etc/postgresql/버전/main/pg_hba.conf
▶ PostgreSQL 홈페이지의 문서를 참고 하시면 더욱 많은 정보를 얻을 수 있습니다.
- 출처 및 참고 : https://www.postgresql.org/docs/
1. pg_hba.conf 개요
- 클라이언트가 데이터베이스에 접속하는 주소와 역할을 지정하고 인증하고자 하는 설정 파일입니다.
- HBA는 호스트 기반 인증(host-based authentication)의 약어입니다.
- 각 연결 시도에 대해 순차적으로 검사되므로 레코드의 순서는 중요합니다.
1) 설정 형식(설정 필드)
# TYPE DATABASE USER ADDRESS METHOD
2) TYPE
: 접속하고자 하는 대상(TYPE)을 크게 로컬(local), 원격지 IPv4 주소, 원격지 IPv6 주소, 복제 장소를 대상으로 설정합니다.
: local - 운영체제 local을 의미합니다.
: host - TCP/IP를 사용한 연결 시도하는 주소 형태 입니다.
3) DATABASE
: 접속하고자 하는 데이터베이스 이름을 지정합니다.
: all 값은 모든 데이터베이스와 일치하는것을 의미합니다.
: replication 값은 복제 연결이 요청되는 경우 지정합니다. 복제 연결은 특정 데이터베이스를 지정하지는 않습니다.
4) USER
: 데이터베이스 사용자 이름을 지정합니다.
: all 값은 모든 사용자와 일치하도록 지정합니다.
: 쉼표로 구분함해서 사용자 이름을 여러 개 쓸 수 있습니다.
5) ADDRESS
: 원격 접속지 IP입니다.
: 단일 호스트의 경우 172.20.143.89/32, 소규모 네트워크 172.20.143.0/24, 대규모 네트워크의 경우 10.6.0.0/16 등입니다.
: 0.0.0.0/0은 모든 IPv4 주소를 나타내며 ::/0은 모든 IPv6 주소를 나타냅니다.
6) METHOD
: 연결 사용하는 인증 방법을 지정합니다. 여러 방법이 있으나 중요 내용만 설명합니다.
: trust - 무조건 연결을 허용합니다. 패스워드나 다른 인증 없이 임의의 데이터베이스 사용자로 로그인하여 누구나 데이터베이스 서버에 연결할 수 있습니다.
: reject - 무조건 연결을 거부하는 것으로 특정 호스트 또는 사용자 등을 "필터링" 하여 차단 할 때 유용합니다.
: peer - 로컬 연결에서만 사용 할 수 있는 것으로, 운영 체제 사용자 이름을 데이타베이스 사용자 이름과 일치 시켜 인증 합니다.
예) 'postgres' 계정으로 local에서 superuser 권한 접속
: md5 - 사용자 패스워드 방식 인증입니다. 구버전 방식으로 암호화 알고리즘 취약성이 있어 사용을 지양합니다.
: scram-sha-256 - 사용자 패스워드 방식 인증입니다. sha256 패스워드 방식을 지원해야 합니다.
2. pg_hba.conf 설정 예제
# Database administrative login by Unix domain socket local all postgres peer # => 로컬 superuser 접속 설정입니다. DISABLE하지 않습니다. # "local" is for Unix domain socket connections only #local all all peer local all all scram-sha-256 # => 보안상 로컬접속 시 peer접속을 주석처리하고 패스워드로 접속하도록 설정합니다. # IPv4 local connections: host all all 127.0.0.1/32 scram-sha-256 # => 루프백(로컬접속) IP를 허용합니다. host all all 0.0.0.0/0 scram-sha-256 # => 모든 IP 접속을 허용합니다. # => 보안상 데이터베이스는 모든 IP 접속허용을 하지 않는게 일반적입니다. host all all 192.168.48.0/24 scram-sha-256 # => 특정 IP 접속을 허용합니다. 1개 IP 또는 범위 형태로 지정합니다. # IPv6 local connections: host all all ::1/128 scram-sha-256 # replication privilege. local replication all peer host replication all 192.168.48.0/24 scram-sha-256 # => 이중화 구성시 복제를 위한 허용을 지정합니다. |
3. 원격 데이터베이스 접속하기
1) 192.168.48.129 서버에 postgres 계정으로 postgres 데이터베이스에 접속하기
postgres@raonyn:~$ psql -h 192.168.48.129 -U postgres -d postgres Password for user postgres: psql (14.5 (Ubuntu 14.5-0ubuntu0.22.04.1)) Type "help" for help. postgres=# |
'DBMS' 카테고리의 다른 글
[PostgreSQL 설치와 운영] #5. PostgreSQL 로그 설정하기 (0) | 2022.10.20 |
---|---|
[MSSQL] char/varchar, nchar/nvarchar (0) | 2022.10.19 |
[PostgreSQL 설치와 운영] #4. psql 접속과 기본 명령어 (0) | 2022.10.19 |
[PostgreSQL 설치와 운영] #2. postgresql.conf 설정하기 (0) | 2022.10.12 |
[PostgreSQL 설치와 운영] #1. Ubuntu 22.04 PostgreSQL 설치 (0) | 2022.10.11 |
댓글