제품 여행

CUBRID의 접속 제어 관리 (ACL : Access_control) 기능 살펴보기

by 허서진 posted Dec 21, 2017

 

접근 권한(Access Control)이란허용한 IP 목록과 허용된 DB 사용자 외 다른 IP 및 DB사용자가 해당 브로커나 데이터베이스 서버로 접속하는 것을 제한하기 위해 사용됩니다이 기능을 사용하시면외부의 잘못된 접근으로 인하여 발생하는 문제로부터 데이터베이스를 보호할 수 있습니다.

 

CUBRID는 데이터베이스에 접속하는 브로커 및 CSQL 인터프린터를 제한하기 위한 데이터베이스 접속 제어 관리브로커에 접속하는 응용 클라이언트를 제한하기 위한 브로커 접속 제어 관리를 제공하고 있습니다.

 

이번 글에서는 데이터베이스 및 브로커 접속 제어 관리의 설정 방법과 모니터링 방법을 살펴보겠습니다.

작성된 예시는 CUBRID 9.3.6.0002 버전 기준입니다.

 

1.     데이터베이스 서버 접속 제어 관리

1)     데이터베이스 서버 접속 제어 관리 설정

    cubrid.conf 파일 설정($CUBRID/conf/cubrid.conf)

-      데이터베이스 서버의 접속 제어 관리 기능을 사용하기 위해서는 access_ip_control 파라미터를 yes로 설정해야 하며(기본 값은 no), access_ip_control_file(접속을 허용하는 IP 목록이 작성된 파일경로를 입력해야 합니다.

-      해당 설정 값은 데이터베이스 서버를 재 기동해야 적용 할 수 있습니다.

-      예시)

cubridconf.png

 

    access_ip_control_file 파일 작성 형식

[@<db_name>]

<ip_addr>

-      <db_name> : 접근을 허용할 데이터베이스 이름

-      <ip_addr> : 접근을 허용할 IP 주소뒷자리를 *로 입력하면 뒷자리의 모든 IP를 허용.
하나의 데이터베이스 이름 다음 줄에 여러 줄의 <ip_addr>을 추가할 수도 있습니다.

-      예시)

access_ip_control_file.png

-       testdb 데이터베이스는 10.182으로 시작하는 모든 IP의 접속을 허용

-       demodb 데이터베이스는 10.으로 시작하는 모든 IP 192.168.0.83인 IP의 접속을 허용

-       cubriddb 데이터베이스는 모든 IP의 접속을 허용

     HA 구성이거나, Broker 서버를 분리 구성한 경우 해당 호스트의 IP를 반드시 적어주어야 합니다.

 

    이미 구동되어 있는 데이터베이스 서버에 새로운 access_ip_control_file 적용

cubrid server acl reload <database_name>      -- HA 구성인 경우 @<hostname> 추가

-      예시)

server_acl_reload.png

 

    구동 중인 데이터베이스 서버의 접속 제어 관리 설정 내용 확인

cubrid server acl status <database_name>      -- HA 구성인 경우 @<hostname> 추가

-      예시)

server_acl_status.png

 

2)     데이터베이스 서버 접속 제어 관리 로그 확인

-      허용되지 않는 IP에서 접근할 경우 서버 에러 로그 파일에 기록이 남게 됩니다.

-      데이터베이스 서버 에러 로그는 $CUBRID/log/server 디렉터리에 생성되며파일 이름은<db_name>_<yyyymmdd>_<hhmi>.err 형식으로 저장됩니다.

-      예시)

acl_server_err.png

 

2.     브로커 접속 제어 관리

1)     브로커 접속 제어 관리 설정

     cubrid_broker.conf 파일 설정($CUBRID/conf/cubrid_broker.conf)

-      브로커의 접속 제어 관리 기능을 사용하기 위해서는 access_control 파라미터를 on으로 설정해야 하며(기본 값은 off), access_control_file 파라미터 값에 접속을 허용하는 사용자와 데이터베이스 및 IP 목록이 작성된 파일의 경로를 입력해야 합니다.

-      accss_control, accss_control_file 파라미터는 공통 적용 파라미터가 위치하는 [broker] 아래에 작성되어야 합니다.

-      해당 설정 값은 브로커를 재 기동해야 적용 할 수 있습니다.

-      예시)

brokerconf.png

 

     access_control_file 파일 작성 형식

[%<broker_name>]

<db_name>:<db_user>:<ip_list_file>

-      <broker_name> : 브로커 이름. cubrid_broker.conf에 지정한 브로커 이름 중 하나.

-      <db_name> : 데이터베이스 이름. *로 지정하면 모든 데이터베이스를 허용.

-      <db_user> : 데이터베이스 사용자 ID. *로 지정하면 모든 데이터베이스 사용자 ID를 허용.

-      <ip_list_file> : 접속 가능한 ip 목록을 저장한 파일의 이름여러 파일을 쉼표(,)로 구분 가능.

-      예시)

access_control_file.png

-       query_editor 브로커의 접속 허용 범위 :

testdb에 접속하는 모든 사용자가 readonlyip.txt.에 등록된 IP에서만 허용
testdb
 testuser 사용자로 접속할 경우 IPlist.txt에 등록된 IP에서만 허용

모든 데이터베이스에 dba로 접속할 경우 writeip.txt에 등록된 IP에서만 허용

 

     ip_list_file 파일 작성 형식

192.168.0.21

10.*

*

-      첫 번째 줄 : 192.168.0.21을 허용

-      두 번째 줄 : 10으로 시작하는 모든 IP를 허용

-      세 번째 줄 : 모든 IP를 허용

 

     이미 구동되어 있는 브로커에 새로운 access_control_file 적용

cubrid broker acl reload <broker_name>     

-      브로커 이름을 생략하면 전체 브로커에 변경 내용을 적용.

-      예시)

broker_acl_reload.png

 

     구동 중인 브로커의 접속 제어 관리 설정 내용 확인

cubrid broker acl status <broker_name>     

-      브로커 이름을 생략하면 전체 브로커의 설정을 출력.

-      예시)

      broker_acl_status.png


2)     브로커 접속 제어 관리 로그 확인

-      허용되지 않는 IP에서 접근할 경우 브로커 ACCESS_LOG와 SQL_LOG에 기록이 남게 됩니다.

-      ACCESS_LOG와 SQL_LOG는 기본적으로 $CUBRID/log/broker 디렉터리 밑에 생성되며설정 값에 따라 달라질 수 있습니다.

-      ACCESS_LOG의 경우 ACCESS_LOG 파라미터가 ON으로 설정되어 있어야 생성이 됩니다.

-      ACCESS_LOG 예시 )

access_log.png


-      SQL_LOG 예시 )

sql_log.png


 

CUBRID에서 제공하는 접속 제어 관리 기능을 올바르게 사용하여 외부의 잘못된 접근으로 인하여 발생되는 문제로부터 데이터베이스를 보호하시기를 바랍니다.

이것으로 CUBRID 접속 제어 관리 기능에 대한 소개를 마치겠습니다.