다음 이전 차례

2. pg_hba.conf 설정

(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) 형이다.

2.1 Unix Domain Socket 설정

레코드 형식
   
 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 옵션은 유저명과 패스워드를 묻는다)
  

2.2 Internet Domain Socket 설정

레코드 형식 
   
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 방식으로
     접속을 할수가 있다.
     
 

2.3 Authentication method(인증 방법)

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


다음 이전 차례