(postgresql Host-Based-Access Control)
보통 pg_hba.conf 는 $PGDATA 디렉토리에 존재한다. 예로서 포스트그레스의 디폴트 디렉토리는 /usr/local/pgsql이다. 그리고 PGDATA 의 값은 보통 /usr/local/pgsql/data 이다.
pg_hba.conf 파일은 일반적으로 레코드들로 이루어져 있으며 레코드란 특정한 형태를 지닌 하나의 라인이다. 라인의 제일 앞에 # 로 되어 있으면 이는 주석 처리가 되어 있는 것이다. 또한 라인이 공란이면 이는 무시되어 진다.
pg_hba.conf 의 레코드는 두가지로 분류되며 하나는 Unix Domain Socket 형이며 다른 하나는 Internet Domain Socket(TCP/IP Domain) 형이다.
레코드 형식
local database authentication method
: local은 unix domain socket 방식의 연결을 허용한다.
database 는 연결을 허용하려는 database 이며 모든
database 에 연결을 허용하려면 all 을 적으면 된다.
authentication method 는 사용자 인증방식을 설정한다.
예 1)
local all trust
: local 에서 모든 데이타베이스(all)에 대한 연결을 허용하며
접속하려는 사용자들은 모두 믿을수 있는(trust) 사용자로
인정하며 별다른 인증절차를 거치지 않고 바로 접속할 수 있다.
psql을 통한 접속 :
psql template1
예 2)
local template1 crypt
: local 에서 template1 데이타베이스에만 접속을 허용하며 인증
절차로 crypt 방식을 거친다. crypt는 사용자에 대한 패스워드를
묻고 이 패스워드는 암호화되어 보내어진후 pg_shadow라는 파일에
있는 패스워드와 비교한다. 비교된 패스워드가 맞아 떨어지면
접속이 허용된다.
psql을 통한 접속 :
psql -u template1
(-u 옵션은 유저명과 패스워드를 묻는다)
레코드 형식
host databse IP IP_mask auth method
: jdbc 와 같은 커넥션을 통해 통신을 하는 client 들이
연결을 하려할 때 허용하거나 불허를 위해 설정한다.
(즉, 다른 호스트에서 직접 포스트그레스의 사용자 계정
으로 연결을 하려할 때)
host template1 210.110.144.161 255.255.255.255 crypt
: 210.110.144.161 의 IP 만이 crypt 방식으로 template1
데이타베이스에 접속을 허용한다.
host all 0.0.0.0 0.0.0.0 password
: 모든 데이타베이스와 모든 IP 주소들이 password 방식으로
접속을 할수가 있다.
TRUST : 별다른 인증 절차없이 바로 허용한다.
REJECT : 무조건 접속을 거부한다.
CRYPT : 유저의 패스워드를 묻는다. 이때 패스워드는
암호화되어 포스트그레스에게 보내어진다.
PASSWORD : 유저의 패스워드를 묻는다. 이때 패스워드는
암호화되지 않은 문자 그대로 서버측인
포스트그레스에게 보내어진다.
다음의 인증 방법은 TCP/IP Domain 에만 해당된다.
krb4 : Kerberos V4
krb5 : Kerberos V5
ident : 클라이언트 상의 ident 서버가 사용되어지며
$PGDATA/pg_ident.conf 를 따로 설정하여야
한다.
또한, 네트워크 상의 커넥션을 하려할 때 논리적인 보안 터널을 사용하는 방법이 있다. 이는 ssh 보안 기법을 적용한 것으로 클라이언트와 포스트 그레스 서버 사이의 네트워크 컨넥션을 ssh를 이용하여 암화화할 수 있다. 적절한 적용으로 안전한 네트워크 컨넥션을 만들 수 있다.
참고사이트는 다음과 같다.
http://www.heimhardt.de/htdocs/ssh.html