PostgreSQL Authentication
PostgreSQL에 접속하기 위한 Client는 인증을 획득해야하며, 인증은 $PGDATA/pg_hba.conf 파일을 통해서 이뤄집니다. 해당 파일에서 한개의 레코드는 5개의 필드값(Type, Database, User, Address, Method)으로 작성이 되며 특정 사용자에 대한 인증 혹은 특정 IP 대역의 접속 제한을 수행합니다. 해당 파일 작성시 다음과 같은 규칙을 따릅니다.
- #(주석)문자 뒤의 내용은 무시
- 빈줄 무시
- 백슬래시(\)로 줄을 끝내면 레코드 다음줄로 계속 작성 가능
- 공백 및 탭으로 필드 구분
📌 HBA란 Host-Base Authentication 의 줄임말로 호스트 기반 인증을 나타냅니다.
pg_hba.conf Sample
# Unix 도메인 소켓을 통한 연결로 md5 인증방식으로 모든 데이터베이스 연결을 허용합니다.
# TYPE DATABASE USER ADDRESS METHOD
local all all md5
# 클라이언트의 IP 주소가 ::1/128의 경우 md5 인증방식으로 모든 데이터베이스 연결을 허용합니다.
# 단, Replication은 제외됩니다.
# TYPE DATABASE USER ADDRESS METHOD
host all all ::1/128 md5
# 클라이언트의 IP 주소가 127.0.0.1/32의 경우 md5 인증방식으로 모든 데이터베이스 연결을 허용합니다.
# 단, Replication은 제외됩니다.
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 md5
📌 127.0.0.1/32 : 로컬 루프백 주소로 자신을 나타내는 IP주소입니다. (localhost와 동일) ::1/128 : IPv6의 로컬 루프백 주소
레코드 설정 형식
pg_hba.conf 파일의 하나의 레코드는 5개의 필드로 구성이 됩니다. 각각의 필드가 의미하는 내용과 선택 가능한 옵션은 다음과 같습니다.
TYPE DATABASE USER ADDRESS METHOD
------------- --------- ----- -------- -----------------
local DATABASE USER METHOD [OPTIONS]
host DATABASE USER ADDRESS METHOD [OPTIONS]
hostssl DATABASE USER ADDRESS METHOD [OPTIONS]
hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]
hostgssenc DATABASE USER ADDRESS METHOD [OPTIONS]
hostnogssenc DATABASE USER ADDRESS METHOD [OPTIONS]
TYPE
local, host, hostssl, hostnossl, hostgssenc, hostnogssenc 중 하나를 설정합니다.
- local은 Unix 도메인 소켓을 사용하여 연결하는 경우에 사용 됩니다.
- host, hostssl, hostnossl, hostgssenc, hostnogssenc는 모두 TCP/IP를 사용하여 연결하는 경우에 사용됩니다.
DATABASE
연결할 수 있는 Database 이름을 지정합니다. 복수 지정의 경우 쉼표(,)로 구분하여 작성합니다.
- all로 지정한 경우 복제(Replication)을 제외한 모든 Database를 의미합니다.
- sameuser로 지정한 경우 사용자 이름과 동일한 이름의 Database를 의미합니다.
- samerole로 지정한 경우 연결하는 사용자가 연결하는 Database와 동일한 이름의 Role 구성원이어야 합니다.
- replication으로 지정한 경우 복제 권한이 있는 사용자에 의한 복제 연결을 허용합니다.
- Database 이름을 포함하는 별도의 파일은 @파일이름 으로 지정할 수 있습니다.
USER
연결할 수 있는 Role을 지정합니다. 복수 지정의 경우 쉼표(,)로 구분하여 작성합니다.
- all로 지정한 경우 모든 Role를 의미합니다.
- Database 사용자나 Group이름 앞에 +를 붙이면, 해당 User나 Group이 사용되고 있는 Role을 의미합니다.
- Role 이름을 포함하는 별도의 파일은 파일 이름 앞에 @파일이름 으로 지정할 수 있습니다.
ADDRESS
연결할 수 있는 Host 이름 또는 IP 주소 범위를 지정합니다. IP주소는 IPv4의 경우 10.10.30.160/24 와 같은 형식으로, IPv6의 경우 fe80::a4e8:f42d:2556:f68a/96과 같은 형식으로 지정합니다. 또한, 별도의 Honstname(별칭)을 지정할 수 있습니다.
- all로 지정한 경우 모든 IP 주소를 의미합니다.
- samehost로 지정한 경우 PostgreSQL이 기동중인 서버와 동일한 IP 주소를 의미합니다.
- samenet으로 지정한 경우 PostgreSQL 서버와 동일한 네트워크를 의미합니다.
METHOD
데이터베이스 연결 시 인증방법을 지정합니다.
METHOD | 설명 |
trust | 모든 Role에 암호없이 연결 가능 |
reject | 연결 거부 |
scram-sha-256 | encrypted password 가장 안전한 암호 인증이지만 일부 클라이언트에서 미지원 |
md5 | 암호인증 |
password | 암호를 평문으로 전송하는 암호 인증 |
gss | GSSAPI를 이용한 Single SignOn. 한 번의 로그인으로 여러개의 서비스들을 이용 가능 ** GSSAPI : 인증 자체는 안전하지만, SSL을 사용하지 않을 경우 데이터베이스 연결을 통해 전송된 데이터는 암호화되지 않은 상태로 전송 |
sspi | SSPI를 이용한 Single SignOn ** SSPI : 보안 인증을 위한 Windows 기술 |
ident | Ident 인증. ident.conf를 통한 인증 |
peer | Peer 인증 Client OS User를 가져와 DB user로 사용. 로컬 연결에서만 지원. |
ldap | ldap 인증 메커니즘 사용 |
radius | RADIUS 인증 메커니즘 사용. password Method와 유사하게 작동 |
cert SSL | Client 인증서를 사용한 인증 |
pam | PAM 인증 메커니즘 사용. password Method와 유사하게 작동 ** PAM : Pluggable Authentication Modules |
bsd | BSD 인증 메커니즘 사용. password Method와 유사하게 작동 |
'엑셈 경쟁력 > DB 인사이드' 카테고리의 다른 글
DB 인사이드 | PostgreSQL Architecture - 2. Physical Structure (0) | 2022.04.27 |
---|---|
DB 인사이드 | PostgreSQL Architecture - 5. SQL 처리 과정 (6) | 2022.04.27 |
DB 인사이드 | PostgreSQL Architecture - 3. Logical Structure (2) | 2022.04.27 |
DB 인사이드 | PostgreSQL 참고자료 - Configuration File : postgresql.conf (0) | 2022.03.30 |
DB 인사이드 | PostgreSQL Architecture - 1. Process, Memory (0) | 2022.03.30 |
댓글