KR100926075B1 - 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치 및 방법 - Google Patents

웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치 및 방법 Download PDF

Info

Publication number
KR100926075B1
KR100926075B1 KR1020090031672A KR20090031672A KR100926075B1 KR 100926075 B1 KR100926075 B1 KR 100926075B1 KR 1020090031672 A KR1020090031672 A KR 1020090031672A KR 20090031672 A KR20090031672 A KR 20090031672A KR 100926075 B1 KR100926075 B1 KR 100926075B1
Authority
KR
South Korea
Prior art keywords
information
database
application
monitoring
user
Prior art date
Application number
KR1020090031672A
Other languages
English (en)
Inventor
정재훈
Original Assignee
주식회사 신시웨이
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 신시웨이 filed Critical 주식회사 신시웨이
Priority to KR1020090031672A priority Critical patent/KR100926075B1/ko
Application granted granted Critical
Publication of KR100926075B1 publication Critical patent/KR100926075B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity

Abstract

본 발명은 웹어플리케이션 서버(WAS)를 통한 데이터베이스 접근을 감시하여 데이터베이스 이용 내역에 대한 실제 사용자 정보를 보안 모듈에 전달하도록 한 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치 및 방법에 관한 것으로, WAS 어플리케이션이 제공하는 사용자 정보와 실제 데이터베이스와 통신하는 JDBC의 수행 정보를 쓰레드 번호를 기반으로 대응시켜 데이터베이스 수행과 실제 사용자 정보를 정확하게 일치시켜 수집함으로써 WAS의 설계 변경 없이도 보안성을 강화할 수 있는 효과가 있다.
DBMS, 데이터베이스, SQL, 식별자, ID, 해쉬, WAS, 웹어플리케이션 서버, 후킹

Description

웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치 및 방법{DATABASE ACCESS THROUGH WEB APPLICATION SERVER MONITORING APPARATUS AND METHOD THEREOF}
본 발명은 데이터베이스 접근 감시 장치 및 방법에 관한 것으로, 특히 웹어플리케이션 서버(WAS)를 통한 데이터베이스 접근을 감시하여 데이터베이스 이용 내역에 대한 실제 사용자 정보를 보안 모듈에 전달하도록 한 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치 및 방법에 관한 것이다.
정보통신 시대에 접어들면서 각종 정보들을 수집하여 활용하거나 이를 통해 비즈니스 정보(BI:Business Information)을 얻기 위한 다양한 시스템이 등장하고 있으며, 이러한 시스템의 근간에는 DBMS(DaraBase Management System) 관련 기술의 진보가 밑바탕이 되어왔다.
이러한 DBMS는 비즈니스 관련 정보, 고객 정보, 상품 정보, 컨텐츠 정보를 포함하는 다양하고 방대한 자료들을 저장 및 관리하고 있으며, 이러한 정보들을 안전하게 보호하기 위하여 다양한 형태의 보안 시스템이 적용되고 있다.
도 1은 보안 구성이 적용된 기본적인 데이터베이스 시스템 구성을 보인 것으로, 복수의 사용자(클라이언트) 단말기들(1)이 통신망(2)을 통해서 DBMS(5, 6)에 접속하도록 구성되며, 이러한 DBMS(5, 6)에 대한 접속 정보를 로그로 관리하기 위하여 게이트웨이 서버(3)나 스니핑(Sniffing)을 위한 보안 서버(4) 등을 구성하게 된다. 이러한 구성 외에 프록시 게이트웨이 서버나 DBMS(5, 6) 내부에 보안 에이전트를 구성하는 방식도 개별 혹은 복합적으로 구성될 수 있다.
이러한 보안 구성들은 관리자에 의해 허가된 사용자만 DBMS에 접근할수 있도록 통제하거나, DBMS 접근 및 사용 내역에 대한 모니터링과 강제 세션 종료 등을 실시할 수 있도록 하며, 사용 내용을 로그로 저장하고 사용자별로 접근 정책을 설정하는 등의 다양한 보안 기능을 제공할 수 있다.
최근에는 일반적인 DBMS 사용자, DBMS 관리자, 보안 관리자, 경영층 등의 다양한 사용자들의 다양한 접근 권한에 대한 관리는 물론이고 최고 권한을 가진 사용자에 의한 접속 감시도 가능하도록 구성되고 있다. 한편, 이러한 감시의 결과로서 DBMS 사용에 따른 로그 정보를 별도의 로그 데이터베이스에 저장하여 추후 부적절한 사용 내역을 파악하기 위한 용도로 활용하고 있다.
이러한 일반적인 데이터베이스 시스템은 웹기반 정보 시스템으로 확장되어 데이터베이스 접근에 대한 다양한 경로를 제공하고 있는데, 그 중 한가지 방식으로 웹어플리케이션 서버(이하, WAS라 칭함)를 통해서 복수의 사용자들이 데이터베이스에 접근하여 원하는 서비스를 제공받을 수 있도록 하는 구성이 널리 사용되고 있다.
도 2는 WAS를 통해 데이터베이스에 접근하도록 구성된 시스템의 예를 보인 것으로, 도시한 바와 같이 복수의 사용자 단말기(10)들이 웹서버(11)를 통해 WAS(12)에 접속하여 로그인 한 후 해당 WAS(12)에서 제공하는 서비스를 통해 SQL 수행 등과 같은 DBMS(13) 접속 기반 작업을 실시하게 된다.
한편, 상기 웹서버(11)를 통하지 않고 직접 WAS(12)에 사용자 단말들이 접속하여 제공되는 메뉴를 통해서 원하는 서비스를 수행하도록 구성될 수 도 있다.
이러한 WAS(12)는 DBMS(13)에 접속하기 위해서 기 설정된 수의 연결(connection) 채널을 구성한 후 필요한 경우 가용한 채널을 선택하여 사용자 단말들을 DBMS(13)에 연결하게 된다. 일반적으로 WAS(12)와 DBMS(13) 사이에는 호환성 확보가 어려워 WAS(12)에서 인증된 사용자 정보가 상기 DBMS(13)에 제공되지 않기 때문에 DBMS(13)에서는 상기 WAS(12)를 사용자로 파악할 뿐 구체적으로 어떠한 사용자가 데이터베이스를 이용했는지 확인할 수 없다.
이는 도시된 DBMS(12)에 대한 보안을 확보하기 위해 앞서 도 1을 통해 설명한 바와 같은 다양한 형태의 보안 솔루션들이 적용되는 경우라 하더라도 WAS(12)를 통해 SQL을 수행하는 경우 해당 수행 주체를 개별 사용자가 아닌 WAS로 판단할 수 밖에 없어 DBMS(12)를 부정하게 이용하더라도 이를 차단하거나 로그 정보 확인을 통해 사후 추적할 수 없게 된다.
즉, 불순한 의도를 가진 자가 사용자 위장을 통해 다양한 해킹을 시도할 수 있게 된다.
도 3은 WAS를 통해 수행되는 데이터베이스 이용 환경을 파악하여 수행 SQL의 사용자를 파악하기 위한 기존의 시스템 구성을 보인 것이다.
도시된 구성은 도 1에 설명한 일반적인 보안 솔루션과 같은 보안 모듈(24)이 WAS(22)와 DBMS(25) 사이에 구성되어 권한을 관리하며 로그 정보를 생성하여 로그 데이터베이스(26)에 기록하는 기본적인 보안 대책이 마련된 시스템에 WAS(22)를 통해 수행되는 서비스를 예측하여 그 정보를 상기 보안 모듈(24)에 제공하는 WAS 모니터링부(23)를 추가한 것이다.
일반적으로 WAS와 보안 모듈은 개별적으로 구성되기 때문에 보안 모듈에서 WAS의 내부 동작을 제어하거나 내부 동작에 대한 정보를 얻을 수 없다. 따라서, 도시된 WAS 모니터링부(23)를 WAS(22)의 입력과 출력을 감시하도록 구성한 후, SQL 수행이 출력단에서 검출되면 가장 근접한 시간에 조작을 실시한 사용자 단말(20)을 대응시켜 해당 사용자가 해당 SQL을 수행한 것으로 예측하고 그 정보를 상기 보안 모듈(24)에 제공하는 방식으로 수행 SQL의 수행자 정보를 확보한다.
하지만, 이러한 방식은 복수의 사용자 단말들이 동시에 접속하여 빈번한 서비스 요청을 실시하는 경우 대단히 부정확한 결과를 제공하게 되므로 신뢰성이 낮아 이를 통해 권한 관리를 수행하기도 어렵고 이러한 정보를 근거로 저장된 로그를 이용한 사후 분석 역시 신뢰성이 낮아 단순 참고 정보 수준에 불과하게 된다.
한편, 별도의 저장 공간을 구성하여 WAS에 접속하는 사용자에 대한 정보들을 모두 저장 및 그 내용을 토대로 인증하고 수행 로그들을 모두 저장하며, 인증 결과에 따라 별도의 인증 토큰을 발행하여 WAS 자체에서 DBMS 접속에 대한 권한을 관리하는 방식도 제안된 바 있으나, 기본적으로 WAS 어플리케이션과 실제 데이터베이스 와의 통신을 담당하는 JDBC는 정보를 직접 주고 받을 수 없기 때문에(직접 호출(call) 불가능) JDBC를 통해 수행되는 내용과 WAS 어플리케이션 사이의 관계를 확인할 수 없으므로 WAS 어플리케이션의 구성을 변경하고, JDBC 구성 또한 변경하여 인증 토큰을 이용하여 사용자 식별번호(ID)를 통한 실행 권한 관리 기능을 부가해야만 한다. 즉, 이러한 방식은 권한관리와 로그 생성 및 저장 기능을 통합한 WAS를 설계하는 것이므로 WAS 설계자만 적용 가능한 기술로 제한되고, 일반적인 보안 솔루션과의 호환성 등은 고려되지 않아 기존의 보안 솔루션을 적용한 일반적인 데이터베이스 시스템에는 적용이 어렵다.
결국, 보안 솔루션이 구성된 데이터베이스 네트워크 시스템에 구비된 WAS의 동작을 WAS 어플리케이션을 변형하지 않으면서 감시하여 서비스 수행에 따른 사용자 정보를 효과적으로 파악한 후 보안 솔루션에서 활용할 수 있도록 함으로써 범용성과 신뢰성 있는 권한 관리 및 로그 정보 저장이 가능하도록 하는 새로운 방식의 데이터베이스 접근 감시가 요구되고 있는 실정이다.
전술한 문제점을 개선하기 위한 본 발명 실시예들의 목적은 웹어플리케이션 서버(WAS)를 통한 데이터베이스 접근 시 실제 수행되는 서비스의 주체를 알 수 없고 WAS 어플리케이션을 변경할 수 없는 환경에서 WAS를 통해 수행되는 데이터베이스 접속 주체를 확인하기 위하여 WAS에 WAS 모니터링부를 구성하고, WAS 어플리케이션이 제공하는 사용자 정보와 실제 데이터베이스와 통신하는 JDBC의 수행 정보를 쓰레드 번호를 기반으로 대응시켜 데이터베이스 수행과 실제 사용자 정보를 수집할 수 있도록 한 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치 및 방법을 제공하는 것이다.
본 발명 실시예들의 다른 목적은 웹어플리케이션 서버(WAS)를 통해 데이터베이스에 접속하는 개별 사용자들에 대한 정확한 정보를 상기 데이터베이스 시스템에 관한 보안을 관리하는 보안 모듈에서 확인할 수 있도록 기 구성된 WAS에 후킹부와 WAS 모니터링부를 부가 구성하여 사용자별 서비스 이용에 따른 이벤트와 그에 따른 관련 정보들을 상기 보안 모듈에 전달하도록 함으로써 데이터베이스에 대해 수행되는 작업들에 대한 정확한 사용자 정보를 WAS 설계 변경 없이도 보안 모듈이 수집할 수 있도록 한 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치 및 방법을 제공하는 것이다.
본 발명 실시예들의 또 다른 목적은 데이터베이스 보안 모듈의 보안 대상이 아닌 WAS에 대한 사용자 접속과 각종 이벤트들에 대한 정보를 수집하여 상기 보안 모듈에 제공하도록 하여 상기 보안 모듈이 데이터베이스에 대한 모호한 접근을 실시하는 임의의 WAS에 대해서도 높은 보안성을 제공하도록 한 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치 및 방법을 제공하는 것이다.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치는 자바(JAVA) 기반 웹어플리케이션 서버(WAS)에 설치되고 WAS 기동시 자바가상머신(Java Virtual Machine)에 로드되어 데이터베이스에 대한 접근 정보를 수집하는 데이터베이스 접근 감시 장치로서, 기 설정된 클래스에 삽입되어 어플리케이션의 이벤트와 데이터베이스에 대한 접근 이벤트를 파악하여 이벤트 종류, 사용자 정보, 데이터베이스 접속 서비스 내용 중 적어도 하나 이상의 정보와 쓰레드 번호를 제공하는 후킹부와; 상기 WAS에 설치되어 WAS 기동시 상기 후킹부를 삽입하고, 상기 후킹부가 데이터베이스에 대한 접근 이벤트 발생시 제공하는 정보와 어플리케이션 이벤트 발생시 제공하는 정보를 포함되는 쓰레드 번호를 기준으로 대응시켜 데이터베이스 접근에 대한 정보를 수집하는 WAS 모니터링부를 포함하여 이루어진다.
상기 후킹부는 바이너리 코드 인젝션 방식으로 WAS 어플리케이션 클래스와 JDBC 드라이버를 이루는 클래스에 분산 설치될 수 있다.
상기 WAS 모니터링부는 JVM에 로딩되어 동작하는 하나 이상의 클래스일 수 있다.
상기 WAS 모니터링부는 상기 후킹부를 통해 수집되는 정보를 저장하는 에이전트들을 관리하는 에이전트 풀과; 쓰레드 번호와 할당 에이전트와의 대응 관계가 저장되는 대응표와; 어플리케이션 이벤트를 제공하는 후킹부를 통해 획득한 쓰레드 번호에 에이전트 풀에서 가용 에이전트를 할당하고 그 대응 정보를 상기 대응표에 저장하며, 상기 데이터베이스 접속 이벤트를 제공하는 후킹부를 통해 획득한 쓰레드 번호를 상기 대응표를 통해 확인하여 해당 에이전트를 대응시키는 관리부를 포함하여 이루어질 수 있다.
상기 에이전트는 사용자 IP, 포트 번호를 통해 결정되는 로그인 식별자와, 수행 어플리케이션 정보, 수행 시각, SQL 문장, SQL 수행 시각, 접속 데이터베이스 정보 중 적어도 하나 이상의 정보를 수집 및 저장하여 외부 보안 모듈에 전달할 수 있다.
또한, 본 발명의 다른 실시예에 따른 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치는 자바가상머신(JVM)에서 운영되는 WAS 어플리케이션과 데이터베이스와의 통신을 담당하는 JDBC를 포함하는 WAS의 데이터베이스 접근을 감시하는 장치로서, WAS 기동시 WAS 어플리케이션 클래스에 삽입되어 이벤트 발생 시 사용자 구별을 위한 세션 정보의 일부와 이벤트 수행을 위한 쓰레드 번호를 획득하는 어플리케이션 후킹부와; WAS 기동시 로드되는 JDBC 드라이버 클래스에 삽입되어 데이터베이스 접속 이벤트 발생 시 SQL 수행 정보와 상기 데이터베이스 접속 이벤트를 요청한 쓰레드 번호를 획득하는 JDBC 후킹부와; WAS 기동시 상기 JVM에 로드 되어 상기 어플리케이션 후킹부와 JDBC 후킹부를 바이너리 코드 인젝션 방식으로 해당 클래스에 삽입하고, 상기 어플리케이션 후킹부가 획득하여 제공하는 정보와 상기 JDBC 후킹부가 획득하여 제공하는 정보를 함께 제공하는 쓰레드 번호를 기준으로 대응시켜 SQL 수행을 실시하는 사용자의 세션 정보를 외부 보안 모듈에 전달하는 WAS 모니터링부를 포함하여 이루어질 수 있다.
또한, 본 발명의 다른 실시예에 따른 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치는 WAS 어플리케이션 동작을 후킹하여 쓰레드 번호와 해당 쓰레드에서 수행되는 로그인 세션 정보를 획득하는 제 1후킹부와; WAS에 구성되는 JDBC의 동작을 후킹하여 수행되는 SQL 정보와 상기 SQL 수행을 요청한 쓰레드 번호를 획득하는 제 2후킹부와; 상기 제 2후킹부가 제공하는 SQL 정보와 상기 제 1후킹부가 제공하는 로그인 세션 정보를 쓰레드 번호를 기준으로 대응시켜 외부 보안 모듈이 제공하는 WAS 모니터링부를 포함하여 이루어질 수 있다.
또한, 본 발명의 다른 실시예에 따른 데이터베이스 접근 감시 방법은 자바 기반 웹어플리케이션 서버(WAS)의 자바가상머신(JVM)에 로드되어 동작하는 WAS 모니터링부를 설치하는 설치 단계와; WAS 기동시 상기 WAS 모니터링부가 기 설정된 클래스에 어플리케이션 이벤트와 데이터베이스 접근 이벤트에 따라 이벤트 종류, 사용자 정보, 데이터베이스 접속 서비스 내용 중 적어도 하나 이상의 정보와 쓰레드 번호를 제공하는 후킹부를 삽입하는 초기화 단계와; 상기 WAS 모니터링부가 어플리케이션 이벤트 발생시 상기 후킹부가 제공한 정보와 상기 데이터베이스 접근 이벤트 발생시 상기 후킹부가 제공한 정보를 함께 제공되는 쓰레드 번호를 기준으로 대응시켜 데이터베이스 접근에 대한 정보를 수집하는 모니터링 단계를 포함하여 이루어진다.
상기 모니터링 단계는 상기 수집된 데이터베이스 접근에 대한 정보를 외부 보안 모듈에 전송하는 단계를 더 포함할 수 있다.
상기 모니터링 단계는 상기 후킹부가 제공하는 쓰레드 번호를 기준으로 상기 후킹부가 제공하는 정보를 수집하여 외부로 전달하는 에이전트를 할당한 후 상기 에이전트가 쓰레드 별 WAS 모니터링을 수행하도록 할 수 있다.
본 발명 실시예에 따른 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치 및 방법은 WAS 어플리케이션이 제공하는 사용자 정보와 실제 데이터베이스와 통신하는 JDBC의 수행 정보를 쓰레드 번호를 기반으로 대응시켜 데이터베이스 수행과 실제 사용자 정보를 정확하게 일치시켜 수집함으로써 WAS의 설계 변경 없이도 보안성을 강화할 수 있는 효과가 있다.
본 발명 실시예에 따른 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치 및 방법은 웹어플리케이션 서버(WAS)를 통해 데이터베이스에 접속하는 개별 사용자들에 대한 정확한 정보를 상기 데이터베이스 시스템에 관한 보안을 관리하는 보안 모듈에서 확인할 수 있도록 기 구성된 WAS에 후킹부와 WAS 모니터링부를 구성하여 사용자별 서비스 이용에 따른 이벤트와 그에 따른 관련 정보들을 상기 보안 모듈에 전달하도록 함으로써 데이터베이스에 대해 수행되는 작업들에 대한 정확한 사용자 정보를 임의의 WAS로부터 획득할 수 있도록 하여 데이터베이스에 대한 모호한 접근을 실시하는 임의의 WAS에 대해서도 높은 보안성을 제공할 수 있는 효과가 있다.
상기한 바와 같은 본 발명을 첨부된 도면들과 실시예들을 통해 상세히 설명하도록 한다.
도 4는 본 발명 일 실시예에 따른 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치가 구성된 데이터베이스 네트워크 시스템의 구성을 보인 것이다. 도시한 바와 같이 복수의 사용자 단말기(100)와, 상기 사용자 단말기(100)가 접속하는 웹서버(110)와, 상기 웹서버(110)를 통해 상기 복수의 사용자 단말기(100)와 연결되는 웹어플리케이션 서버(WAS)(120)와, 상기 WAS(120)와 제한된 커넥션을 통해 연결되는 DBMS(140)와, 상기 DBMS(140) 접근을 관리하는 보안 모듈(130) 및 상기 WAS(120) 내부에 구성되어 상기 보안 모듈(130)에 상기 DBMS(140)에 접속한 사용자 정보를 정확하게 제공하는 실행 감시부(125)로 이루어진다.
상기 실행 감시부(125)는 상기 WAS(120)에 추가적으로 구성되는 것이지만 WAS에서 실제 동작하는 WAS 어플리케이션의 설계를 변형하여 구성하는 것이 아니라 임의의 WAS 어플리케이션과는 별도로 추가적으로 설치되는 것이다.
도시된 구성에서, 상기 WAS(120)는 웹서버(110)를 통해서 사용자 단말기(100)와 연결되지만, 웹서버(110) 없이 직접 WAS(120)와 사용자 단말기(100)가 연결될 수도 있음에 주의한다.
도 5는 상기 WAS(120)의 구성 개념을 보인 것으로, 자바(JAVA) 기반 WAS(200)는 자바가상머신(Java Virtual Machine, 이하 JVM이라 칭함)(210)에 로드되는 WAS 어플리케이션 코드(220)로 구성된다. 이렇게 JVM에 로드되는 코드들은 컴 파일된 자바 프로그램으로서, xxx.class의 형태를 가지므로 클래스라 하며 상용 코드들로 실질적으로 API(Application Programming Interface) 기능을 수행하는 것들은 드라이버(클래스들로 구성)라한다. 드라이버는 대표적으로 자바 어플리케이션이 데이터베이스와 통신하기 위한 메세지를 처리하는 드라이버, 즉 자바 프로그램에서 SQL을 수행하도록 해 주는 것으로 JDBC가 있다. 이러한 JDBC 드라이버는 데이터베이스 접속 기능을 구비한 자바기반 WAS에는 거의 대부분 구성되어 있다.
본 발명의 실시예에 따른 WAS(230)는 특정한 기능을 수행하기 위해 구성된 WAS 어플리케이션 코드(220)를 재 설계하는 대신, WAS 어플리케이션 코드가 JVM(240)에 로드되는 경우 특정한 이벤트 발생을 검출하여 이벤트 정보 또는 세션 정보, 그리고 해당 이벤트를 수행하는 쓰레드의 번호 정보를 획득하는 후킹부(255)를 바이너리 코드 인젝션 방식으로 삽입하고, 후킹부(255)가 제공하는 정보들을 수집하여 수행되는 데이터베이스 접속에 대한 사용자 정보를 매칭시키는 WAS 모니터링부(260)를 설치한다.
상기 WAS 모니터링부(260) 역시 JVM(240)에 로드되어 동작하는 클래스로서, JVM(240)에 로드되어 기동되면 상기 JVM(240)에 로드되는 WAS 코드(250)(즉, 어플리케이션 클래스와 각종 드라이버 클래스) 중 기 설정된 클래스에 후킹부를 설치하게 된다.
이러한 자바 프로그램에서의 바이너리 코드 인젝션 방식은 이미 널리 알려져 있는 방식으로 구체적인 코드 삽입에 따른 후킹 방식에 대한 설명은 생략하도록 한다.
결국, 본 발명은 WAS 어플리케이션을 변형하여 본 발명을 위한 실행 감시 기능이 더 포함되도록 WAS 어플리케이션 코드를 재설계하는 것이 아니라 이미 만들어져 있는, 즉 컴파일된 클래스 상태의 WAS 어플리케이션에 특정 이벤트 발생시 특정 정보들을 WAS 모니터링부(260)에 제공하도록 하는 후킹부(255)를 삽입하는 방식이므로 어떠한 자바기반 WAS에도 WAS 어플리케이션의 재설계 없이 적용이 가능하다.
도 6은 본 발명의 실시예에 따른 WAS(300) 구성을 보인 것으로, 도시한 바와 같이 JVM에서 동작하는 어플리케이션(310), 데이터베이스(450)와 통신을 담당하여 SQL 수행이 가능하도록 하는 JDBC(320), 상기 어플리케이션(310)에 설치된 제 1후킹부(315)와 상기 JDBC(320)에 설치된 제 2후킹부(325) 및 상기 제 1및 제 2후킹부(325)가 제공하는 이벤트별 정보들을 통해서 수행되는 SQL 정보 및 그에 따른 사용자 정보를 외부 보안 모듈(400)에 제공하는 WAS 모니터링부(330)로 이루어진다.
상기 제 1후킹부(315)는 어플리케이션이 특정한 이벤트를 발생시킬 때 마다 상기 이벤트를 실행하는 쓰레드의 번호와 해당 이벤트에 관련된 정보를 상기 WAS 모니터링부(330)에 제공한다. 상기 어플리케이션에서 발생하는 이벤트로서는 사용자의 로그인, 특정 서비스의 실행 시작, 특정 서비스에 따른 SQL 수행, 특정 서비스의 종료, 로그 아웃 등을 포함하며, 이러한 이벤트는 선별적으로 선택될 수 있으나 적어도 SQL 수행 이벤트 발생 시 그에 따른 사용자 정보와 쓰레드 번호 정보는 WAS 모니터링부(330)에 전달해야한다. 상기 사용자 정보는 해당 WAS 접속 인증을 위한 사용자 ID가 아니라, 이러한 인증 과정을 통해 설정된 세션에 따라 사용자를 구별할 수 있는 정보를 의미한다. 즉, 사용자 단말의 IP, 포트 번호를 포함하며, 이를 통해서 설정되는 로그인 ID를 의미할 수도 있다. 일반적으로, 사용자 단말기의 IP, 포트, 도메인 정보, 서버 IP, 서버 포트 정보를 알면 통신 세션을 구별할 수 있으며, 이 중에서 사용자 IP와 포트를 알면 사용자를 구별할 수 있게 되므로 이를(혹은 그에 따라 생성되는 로그인 ID) 사용자 정보로서 제공한다.
상기 제 2후킹부(325)는 JDBC(325)가 데이터베이스(450)에 접근(즉, SQL 수행)하는 이벤트 발생 시 해당 데이터베이스 접근 정보(SQL 문장, SQL 수행 시간, 접속한 DB 정보 등)를 쓰레드 번호와 함께 상기 WAS 모니터링부(330)에 제공한다.
일반적으로 상기 JDBC(320)는 자바 프로그램에서 SQL 수행을 위한 API를 제공하는 것으로 어플리케이션(310)과 직접적으로 정보를 교환하지 않는다. 즉, 상기 JDBC(320)에서는 기 설정된 수의 데이터베이스 커넥션 중 가용한 커넥션을 선택하여 임의의 요청된 SQL을 수행하게 되므로 해당 SQL 수행을 어떤 사용자가 요청했는지 알 수 없다. 따라서, JDBC(320)은 어떠한 사용자가 요청한 SQL인지 모르는 상태에서 데이터베이스(450)에 접근하게 되므로 데이터베이스(450)나 상기 보안 모율(400)은 상기 JDBC(320)가 제공하는 정보를 통해서 사용자를 알 수 없게 되는 상황이 발생하게 된다.
그러나, 본 발명의 실시예에서는 어플리케이션과 JDBC 사이를 연결하는 쓰레드를 연결 고리로 하여 JDBC에서 수행되는 SQL에 대한 사용자 정보를 확인할 수 있도록 한다.
예를 들어, 쓰레드 번호 1000인 쓰레드가 특정 어플리케이션 수행을 위해 할당되면 해당 쓰레드는 해당 어플리케이션을 수행하다가, SQL 수행 부분이 있을 경 우 JDBC 수행 부분으로 이동하게 되는데, 이 경우에도 동일하게 쓰레드 번호 1000인 쓰레드가 해당 작업을 수행하게 된다.
결국, 어플리케이션(310)에서 SQL 수행을 요청하는 이벤트가 발생할 경우 해당 이벤트를 수행하는 쓰레드의 번호와 세션 정보를 확보하고, JDBC(320)에서 SQL 수행 내용과 해당 SQL 수행을 요청한 쓰레드 번호를 확보한 후 해당 쓰레드 번호를 이용하여 SQL 수행 내용과 세션 정보(즉, 사용자 정보)를 매칭시킬 수 있어 어떠한 사용자가 어떠한 SQL을 수행했는지 알 수 있게 된다.
도 7은 WAS 모니터링부(330)의 보다 상세한 구성을 보인 예로서, 도시한 바와 같이 외부 보안 모듈(400)과 정보를 교환하는 기능을 담당하는 에이전트를 구성하고, 이러한 에이전트들을 효율적으로 관리하기 위한 에이전트 풀(332)을 구성하며, 쓰레드 번호에 따라 에이전트를 할당한 대응표(331)를 구성한다. 그리고 어플리케이션의 후킹부(315)가 제공하는 쓰레드 번호에 대한 전용 에이전트를 에이전트 풀(332)에서 가용한 에이전트로 할당하여 그 정보를 상기 대응표(331)에 저장하고, JDBC 후킹부(325)가 제공하는 쓰레드 번호에 대응하는 에이전트를 상기 대응표(331)를 통해 확인하여 대응시키는 관리부(500)를 포함한다. 상기 관리부(500)는 쓰레드 번호에 따라 에이전트를 할당하거나 선택하는 디스패쳐(dispatcher)의 기능을 수행한다.
상기 에이전트(333)는 어플리케이션 후킹부(315)가 제공하는 사용자 정보와 상기 JDBC 후킹부(325)가 제공하는 데이터베이스 접근 정보(즉, SQL 수행 정보)를 수집하여 저장하며, 이를 상기 보안 모듈(400)에 메세지 형태로 제공하도록 하여 보안 모듈(400)이 WAS의 동작 상태를 정확하게 파악할 수 있게 된다.
한편, 상기 쓰레드 번호는 실질적으로 상당히 긴 문자열로 구성될 수 있으므로 속도 향상을 위해서 상기 관리부(500)가 이를 해쉬값으로 변경하여 이용할 수 있다.
예를 들어, 쓰레드 번호가 1000인 쓰레드가 어플리케이션 수행 중 SQL 수행 부분이 있을 경우 JDBC(320)로 이동하기 전에 어플리케이션 후킹부(315)를 통해 WAS 모니터링부(330)를 호출하여 정보를 전달함으로써 해당 쓰레드 번호에 할당된 에이전트에는 다음과 같은 정보가 저장될 수 있다. <1000, 사용자 IP, 사용자 포트, 사용자 ID, null, null, null>.
이후 JDBC(320)의 후킹부(325)가 WAS 모니터링부(330)를 호출하여 SQL 수행 정보를 제공하는 것으로 해당 쓰레드 번호에 할당된 에이전트는 다음과 같은 일련의 정보를 완성할 수 있게 된다. <1000, 사용자 IP, 사용자 포트, 사용자 ID, DB 서버 IP, DB 서버 포트, SQL 문장>
물론, 이러한 내용들 외에도 어플리케이션 종류, 어플리케이션 수행 시각, SQL 수행 시각 등에 관한 정보들도 수집될 수 있다.
도 8은 도 7의 구성을 이용하여 사용자가 WAS의 특정 서비스를 이용하는 경우의 예를 보인 것으로, 예를 들어, WAS가 제공하는 다양한 기능 메뉴 화면을 사용자가 이용하는 중에, '인사관리' 서비스를 선택할 경우 WAS가 그에 따른 정보를 데이터베이스로부터 획득하여 사용자에게 제공하게 된다. 이때의 WAS 실행감시 장치, 즉 후킹부(315, 325)의 동작 및 WAS 모니터링부(330)의 동작이 도시된 것이다.
도시된 바와 같이, WAS 어플리케이션(310)의 인사관리 어플리케이션(311)이 동작하면서 데이터베이스로부터 관련 데이터를 수집하는 SQL이 수행되며, 이러한 작업이 검출되면 WAS 어플리케이션의 후킹부(315)에서 WAS 모니터링부를 호출하여 해당 작업을 위해 할당된 쓰레드의 번호와 해당 어플리케이션을 수행한 사용자 정보 및 해당 작업 내용을 제공하게 된다. 도시된 예와 같이 사용자의 세션 정보의 일부인 사용자 IP와 포트 번호(그 외 필요한 경우 다른 세션 정보도 포함) 혹은 이를 통해 결정된 로그인 ID, 그리고 수행 어플리케이션 정보(인사관리 어플리케이션 식별자)와 수행 시각 정보 등을 제공한다.
상기 WAS 모니터링부의 관리부(500)는 상기 후킹부(315)가 제공하는 쓰레드 번호가 대응표(331)에 존재하는지 확인하고, 없을 경우 에이전트 풀(330)에서 가용한 에이전트(333)를 선택하여 대응시키고 그 정보를 상기 대응표(331)에 기록한다. 필요한 경우 쓰레드 번호는 해쉬값을 이용할 수 있다.
상기 할당된 에이전트(333)는 상기 후킹부(315)가 제공하는 사용자 정보와 수행 어플리케이션 정보 및 수행 시각 정보를 저장한다. 그리고, 필요한 경우 해당 정보를 외부 보안 모듈에 전달한다.
상기 인사관리 어플리케이션(311)의 작업을 위해 할당된 쓰레드는 JDBC(320)에 대한 SQL 수행도 일괄적으로 실시하게 되므로, 상기 인사관리에 관련된 데이터를 수집하는 SQL 수행을 처리하는 JDBC(320)에 구성된 후킹부(325)는 상기 SQL의 수행을 감지하여 수행되는 SQL에 관련된 정보(SQL 문장, SQL 수행 시각, 해당 SQL이 수행되는 데이터베이스의 IP, 데이터베이스 포트 등)와 쓰레드 번호를 함께 상 기 WAS 모니터링부의 관리부(500)에 제공한다.
즉, WAS에서 어플리케이션 부분과 JDBC 부분은 직접적인 호출 관계가 성립하지 않기 때문에, 쓰레드 번호를 매개로하여 WAS 어플리케이션의 동작 환경과 실제 데이터베이스 접속 내용을 일치시키도록 한다.
이를 위해서 상기 관리부(500)는 상기 JDBC 후킹부(325)에서 얻어진 쓰레드 번호를 이용하여 상기 대응표(331)를 검색하는 것으로 기 할당된 에이전트 정보를 확인할 수 있게 되며, 상기 관리부(500)는 상기 선택된 에이전트(333)에 상기 데이터베이스 접속 내용을 전달한다.
상기 선택된 에이전트(333)는 상기 JDBC 후킹부(325)에서 제공되는 SQL에 관련된 정보(SQL 문장, SQL 수행 시각, 데이터베이스의 IP, 데이터베이스 포트 등)를 저장한다. 이로서, 상기 쓰레드 번호를 기준으로 할당된 상기 에이전트(333)는 수행된 SQL 문장과, SQL 수행 시각 및 해당 SQL 수행을 실시한 어플리케이션 정보와 수행 시각, 연동 데이터베이스 정보(데이터베이스의 IP와 포트) 그리고 수행 사용자 식별 정보를 모두 알 수 있게 되며, 이를 보안 모듈에 메세지 형태로 전송할 수 있다. 여기서, 연동 데이터베이스 정보는 추후 보안 모듈에서 로그 통합시 활용될 수 있다.
물론, 상기 에이전트(333)는 모든 정보들이 수집된 이후 해당 쓰레드를 통해 얻어진 정보들을 한꺼번에 보안 모듈에 전달할 수도 있고, SQL 수행이 발생할 경우마다 보안 모듈에 전달할 수도 있으며, 모든 이벤트를 통해 얻어지는 정보가 있을 경우마다 보안 모듈에 전달할 수도 있는 등 그 전달 방식과 시점은 다양하게 결정 될 수 있다.
도 9는 본 발명의 실시예에 따른 동작 과정을 보인 순서도로서, 도시된 순서도는 구현의 한 예에 불과하며 보안 모듈에 제공하는 정보의 구체적인 구성이나 시점 등은 다양하게 변경될 수 있음에 주의한다.
도시된 순서도는 기본적으로 WAS에 WAS 실행감시 장치를 설치 및 초기화하는 단계(A)와, 사용자 로그인에 따라 식별 정보를 획득하는 단계(B)와, WAS 어플리케이션 실행을 통해 수행되는 SQL의 정보를 획득하는 단계(C)와, 사용자가 로그아웃할 경우 해당 정보를 획득하는 단계(D)를 포함한 예이다. 도시된 구성은 설명의 편의를 위해서 사용자의 로그인과 로그 아웃을 기준으로 순서도를 나열한 것으로, 실질적으로 WAS 실행 감시장치는 사용자들의 로그인과 로그 아웃을 기준으로 동작하는 것은 아니라는 것에 주의한다.
먼저, WAS에 WAS 실행을 감시하기 위한 모니터링부를 설치한다. 상기 모니터링부는 JVM에 로드되어 동작하는 클래스들로 구성될 수 있으며 WAS 기동시 JVM에 로드되어 WAS 어플리케이션 클래스나 JDBC 드라이버 클래스 등에 후킹부를 바이너리 코드 인젝션 방식으로 삽입한다.
이러한 설치 및 초기화 과정(A)이 완료되어 WAS가 동작하게 되면 상기 후킹부는 다양한 이벤트를 감지하여 해당 이벤트를 수행하는 쓰레드 번호와 관련 정보를 WAS 모니터링부에 전달하게 된다.
이러한 이벤트의 종류를 살펴보면, 우선 사용자 로그인 이벤트에 따른 사용자 식별 정보 획득 단계(B)를 포함할 수 있다. 즉 사용자가 WAS에 로그인하여 세션 이 설정되면 후킹부는 사용자 단말기의 로그인 IP, 포트 번호, 도메인(domain) 정보, 서버 IP, 서버 포트 등의 세션 정보를 수집할 수 있다. 후킹부가 이러한 정보들을 모니터링부에 전달하면, 해당 모니터링부는 보안 모듈과 통신하는 에이전트를 할당하여 해당 정보를 제공하는 것으로 보안 모듈에 상기 정보를 전달하여 특정한 사용자(세션 정보를 통해 식별되는 사용자)가 WAS에 접속하였음을 알릴 수 있게되고 필요한 경우 권한 관리를 수행할 수 있다. 한편, 필요한 경우 사용자 단말기 식별을 위한 사용자 IP, 포트 번호에 대응하는 로그인 ID를 설정하여 해당 정보를 사용자 정보로 대신 활용할 수 있다.
이러한 사용자 식별 정보 획득 단계(B)는 선택적으로 WAS 수행 감지 장치에 적용될 수 있으며 생략될 수도 있다.
다른 이벤트로, 서비스 수행 이벤트에 따른 SQL의 정보를 획득하는 단계(C)를 포함할 수 있다. 즉 사용자가 WAS에서 제공하는 서비스를 선택할 경우 후킹부가 검출하여 해당 서비스를 수행하기 위해 할당된 쓰레드 번호와 사용자 정보 및 해당 서비스를 수행하는 어플리케이션 정보를 모니터링부에 전달한다. 해당 모니터링부는 쓰레드 번호를 기준으로 에이전트를 할당 혹은 기 할당된 에이전트를 선택하여 상기 제공받은 사용자 정보 및 어플리케이션 정보 등을 해당 에이전트에 전달한다. 상기 제공받는 정보로는 로그인 ID(IP 정보, 포트 정보에 대응), 서비스 콜(사용 어플리케이션 정보), 사용자 정보, WAS 정보(WAS가 복수인 경우 식별을 위한 식별정보) 등을 포함할 수 있다. 상기 에이전트는 상기 수신 정보들을 상기 보안 모듈에 제공할 수 있다.
한편, 이러한 서비스를 통해서 SQL이 수행되면 JDBC에 삽입된 후킹부에서 수행 SQL에 관련된 정보를 모니터링부에 제공하며, 해당 SQL을 수행한 쓰레드 번호를 함께 제공한다. 이러한 정보를 수신한 모니터링부는 상기 쓰레드 번호를 기준으로 에이전트를 할당하거나 기 할당된 에이전트를 선택하여 상기 제공받은 SQL 문장이나 SQL 수행 시각 등의 데이터베이스 접속 정보를 상기 에이전트에 제공한다. 상기 에이전트는 동일한 쓰레드 번호에 의해서 수집된 사용자 정보가 기 존재하고 있으므로 보안 모듈에 수집된 데이터베이스 접속 정보(SQL 문장, SQL 수행 시각)와 사용자 정보를 함께 제공하여 정확한 수행자를 알 수 있도록 한다. 상기 에이전트가 제공해 줄 수 있는 정보로는 서비스 콜, DB 정보(복수의 DB를 이용할 경우), SQL 정보, 사용자 정보, WAS 정보(WAS가 복수인 경우 식별 정보)를 포함할 수 있다.
그리고, 이러한 서비스가 종료되는 경우 관련 정보를 쓰레드 번호와 함께 제공하면 모니터링부가 이를 대응 에이전트에 제공하여 관련 정보를 보안 모듈에 제공할 수 있다.
상기 SQL의 정보를 획득하는 단계(C)에서, 서비스 콜의 시작과 종료에 따른 이벤트에 따라 정보를 수집하여 이를 보안 모듈에 제공하는 과정은 선택적으로 포함되거나 생략될 수 있다.
또 다른 이벤트로서, 사용자 로그 아웃 이벤트에 따른 정보 획득 단계(D)를 포함할 수 있다. 즉 사용자가 WAS에 로그 아웃하여 세션 설정이 종료되면 후킹부는 종료되는 세션 정보를 수집할 수 있다. 후킹부가 이러한 정보들을 모니터링부에 전달하면, 해당 모니터링부는 보안 모듈과 통신하는 에이전트를 할당하여 해당 정보 를 제공하는 것으로 보안 모듈에 상기 정보를 전달하여 특정한 사용자(세션 정보를 통해 식별되는 사용자)가 WAS에 접속 종료하였음을 알릴 수 있게되고 필요한 경우 그에 관련된 처리들(기존에 할당되었던 로그인 ID의 해제, 해당 세션에 관련된 기존 설정들의 초기화 등)을 수행할 수 있다.
이러한 사용자 로그아웃 정보 획득 단계(D)는 선택적으로 WAS 수행 감지 장치에 적용될 수 있으며 생략될 수도 있다.
이상에서는 본 발명에 따른 바람직한 실시예들에 대하여 도시하고 또한 설명하였다. 그러나 본 발명은 상술한 실시예에 한정되지 아니하며, 특허 청구의 범위에서 첨부하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능할 것이다.
도 1은 보안이 고려된 데이터베이스 시스템의 구성도.
도 2는 웹어플리케이션 서버(WAS)가 적용된 데이터베이스 시스템의 구성도.
도 3은 WAS와 보안 모듈이 구성된 데이터베이스 시스템의 구성도.
도 4는 본 발명의 실시예에 따른 데이터베이스 시스템의 구성도.
도 5는 본 발명의 실시예에 따른 WAS 구성 개념도.
도 6은 본 발명의 실시예에 따른 WAS 실행 감시 장치의 구성도.
도 7은 본 발명의 실시예에 따른 WAS 모니터링부의 상세 구성도.
도 8은 본 발명의 실시예에 따른 WAS 실행 감시 장치의 동작 개념도.
도 9는 본 발명의 실시예에 따른 WAS 실행 감시 장치의 동작 순서도.
** 도면의 주요 부분에 대한 부호의 설명 **
300: WAS 310: 어플리케이션
320: JDBC 315, 325: 후킹부
330: WAS 모니터링부 331: 대응표
332: 에이전트 풀 333: 에이전트
500: 관리부

Claims (18)

  1. 자바(JAVA) 기반 웹어플리케이션 서버(WAS)에 설치되고 WAS 기동시 자바가상머신(Java Virtual Machine)에 로드되어 데이터베이스에 대한 접근 정보를 수집하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치로서,
    기 설정된 클래스에 삽입되어 어플리케이션의 이벤트와 데이터베이스에 대한 접근 이벤트를 파악하여 이벤트 종류, 사용자 정보, 데이터베이스 접속 서비스 내용 중 적어도 하나 이상의 정보와 쓰레드 번호를 제공하는 후킹부와;
    상기 WAS에 설치되어 WAS 기동시 상기 후킹부를 삽입하고, 상기 후킹부가 데이터베이스에 대한 접근 이벤트 발생시 제공하는 정보와 어플리케이션 이벤트 발생시 제공하는 정보를 포함되는 쓰레드 번호를 기준으로 대응시켜 데이터베이스 접근에 대한 정보를 수집하는 WAS 모니터링부를 포함하며,
    상기 후킹부는 바이너리 코드 인젝션 방식으로 WAS 어플리케이션 클래스와 JDBC 드라이버 클래스에 분산 설치되는 것을 특징으로 하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치.
  2. 삭제
  3. 청구항 1에 있어서, 상기 WAS 모니터링부는 JVM에 로딩되어 동작하는 하나 이상의 클래스인 것을 특징으로 하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치.
  4. 청구항 1에 있어서, 상기 후킹부는 어플리케이션 이벤트 발생시 세션 정보, 서비스 콜 정보, 수행 어플리케이션 정보, 수행 시각 정보 중 적어도 하나의 정보와 사용자 정보로서 사용자 IP와 포트 번호 및 해당 이벤트를 수행하는 어플리케이션에서 할당한 쓰레드 번호를 상기 WAS 모니터링부에 제공하는 것을 특징으로 하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치.
  5. 청구항 1에 있어서, 상기 후킹부는 데이터베이스에 대한 접근 이벤트 발생시 데이터베이스 접속 서비스 내용으로서 SQL 문장, SQL 수행 시각, 데이터베이스 정보 중 하나 이상의 정보와 상기 데이터베이스 접속을 수행하도록 한 어플리케이션의 쓰레드 번호를 함께 상기 WAS 모니터링부에 제공하는 것을 특징으로 하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치.
  6. 청구항 1에 있어서, 상기 WAS 모니터링부는
    상기 후킹부를 통해 수집되는 정보를 저장하는 에이전트들을 관리하는 에이전트 풀과;
    쓰레드 번호와 할당 에이전트와의 대응 관계가 저장되는 대응표와;
    어플리케이션 이벤트를 제공하는 후킹부를 통해 획득한 쓰레드 번호에 에이전트 풀에서 가용 에이전트를 할당하고 그 대응 정보를 상기 대응표에 저장하며, 상기 데이터베이스 접속 이벤트를 제공하는 후킹부를 통해 획득한 쓰레드 번호를 상기 대응표를 통해 확인하여 해당 에이전트를 대응시키는 관리부를 포함하는 것을 특징으로 하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치.
  7. 청구항 6에 있어서, 상기 에이전트는 사용자 IP, 포트 번호를 통해 결정되는 로그인 식별자와, 수행 어플리케이션 정보, 수행 시각, SQL 문장, SQL 수행 시각, 접속 데이터베이스 정보 중 적어도 하나 이상의 정보를 수집 및 저장하여 외부 보안 모듈에 전달하는 것을 특징으로 하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치.
  8. 청구항 1에 있어서, 상기 후킹부는 상기 어플리케이션 이벤트로 사용자의 로그인, 어플리케이션을 통한 서비스 선택, 서비스 이용에 따른 데이터베이스 접근, 서비스 이용 완료, 그리고 사용자의 로그 아웃 중 하나 이상을 검출하는 것을 특징으로 하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치.
  9. 자바가상머신(JVM)에서 운영되는 WAS 어플리케이션과 데이터베이스와의 통신을 담당하는 JDBC를 포함하는 WAS의 데이터베이스 접근을 감시하는 장치로서,
    WAS 기동시 WAS 어플리케이션 클래스에 삽입되어 이벤트 발생 시 사용자 구별을 위한 세션 정보의 일부와 이벤트 수행을 위한 쓰레드 번호를 획득하는 어플리케이션 후킹부와;
    WAS 기동시 로드되는 JDBC 드라이버 클래스에 삽입되어 데이터베이스 접속 이벤트 발생 시 SQL 수행 정보와 상기 데이터베이스 접속 이벤트를 요청한 쓰레드 번호를 획득하는 JDBC 후킹부와;
    WAS 기동시 상기 JVM에 로드 되어 상기 어플리케이션 후킹부와 JDBC 후킹부를 바이너리 코드 인젝션 방식으로 해당 클래스에 삽입하고, 상기 어플리케이션 후킹부가 획득하여 제공하는 정보와 상기 JDBC 후킹부가 획득하여 제공하는 정보를 함께 제공하는 쓰레드 번호를 기준으로 대응시켜 SQL 수행을 실시하는 사용자의 세션 정보를 외부 보안 모듈에 전달하는 WAS 모니터링부를 포함하는 것을 특징으로 하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치.
  10. WAS 어플리케이션 동작을 후킹하여 쓰레드 번호와 해당 쓰레드에서 수행되는 로그인 세션 정보를 획득하는 제 1후킹부와;
    WAS에 구성되는 JDBC의 동작을 후킹하여 수행되는 SQL 정보와 상기 SQL 수행을 요청한 쓰레드 번호를 획득하는 제 2후킹부와;
    상기 제 2후킹부가 제공하는 SQL 정보와 상기 제 1후킹부가 제공하는 로그인 세션 정보를 쓰레드 번호를 기준으로 대응시켜 외부 보안 모듈이 제공하는 WAS 모니터링부를 포함하는 것을 특징으로 하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치.
  11. 자바 기반 웹어플리케이션 서버(WAS)의 자바가상머신(JVM)에 로드되어 동작하는 WAS 모니터링부를 설치하는 설치 단계와;
    WAS 기동시 상기 WAS 모니터링부가 기 설정된 클래스에 어플리케이션 이벤트와 데이터베이스 접근 이벤트에 따라 이벤트 종류, 사용자 정보, 데이터베이스 접속 서비스 내용 중 적어도 하나 이상의 정보와 쓰레드 번호를 제공하는 후킹부를 삽입하는 초기화 단계와;
    상기 WAS 모니터링부가 어플리케이션 이벤트 발생시 상기 후킹부가 제공한 정보와 상기 데이터베이스 접근 이벤트 발생시 상기 후킹부가 제공한 정보를 함께 제공되는 쓰레드 번호를 기준으로 대응시켜 데이터베이스 접근에 대한 정보를 수집하는 모니터링 단계를 포함하며,
    상기 초기화 단계는 상기 후킹부를 바이너리 코드 인젝션 방식으로 WAS 어플리케이션 클래스와 JDBC 드라이버 클래스에 삽입하는 단계를 더 포함하는 것을 특징으로 하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 방법.
  12. 삭제
  13. 청구항 11에 있어서, 상기 모니터링 단계는 상기 수집된 데이터베이스 접근에 대한 정보를 외부 보안 모듈에 전송하는 단계를 더 포함하는 것을 특징으로 하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 방법.
  14. 청구항 11에 있어서, 상기 모니터링 단계는 상기 후킹부가 제공하는 쓰레드 번호를 기준으로 상기 후킹부가 제공하는 정보를 수집하여 외부로 전달하는 에이전트를 할당한 후 상기 에이전트가 쓰레드 별 WAS 모니터링을 수행하도록 하는 것을 특징으로 하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 방법.
  15. 청구항 14에 있어서, 상기 에이전트는 사용자 IP, 포트 번호를 통해 결정되는 로그인 식별자와, 수행 어플리케이션 정보, 수행 시각, SQL 문장, SQL 수행 시각, 접속 데이터베이스 정보 중 적어도 하나 이상의 정보를 수집 및 저장하여 외부 보안 모듈에 전달하는 것을 특징으로 하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 방법.
  16. 청구항 11에 있어서, 상기 모니터링 단계에서, 상기 후킹부는 상기 어플리케이션 이벤트로 사용자의 로그인, 어플리케이션을 통한 서비스 선택과 서비스 이용에 따른 데이터베이스 접근 및 서비스 이용 완료, 그리고 사용자의 로그 아웃을 검출하는 것을 특징으로 하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 방법.
  17. 청구항 11에 있어서, 상기 모니터링 단계에서, 상기 후킹부는 어플리케이션 이벤트 발생시 사용자 정보로서 사용자 IP와 포트 번호를 제공하고, 세션 정보, 서비스 콜 정보, 수행 어플리케이션 정보, 수행 시각 정보 중 적어도 하나의 정보를 해당 이벤트를 수행하는 어플리케이션에서 할당한 쓰레드 번호와 함께 상기 WAS 모니터링부에 제공하는 것을 특징으로 하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 방법.
  18. 청구항 11에 있어서, 상기 모니터링 단계에서, 상기 후킹부는 데이터베이스에 대한 접근 이벤트 발생시 데이터베이스 접속 서비스 내용으로서 SQL 문장, SQL 수행 시각, 데이터베이스 정보 중 하나 이상의 정보를 상기 데이터베이스 접속을 수행하도록 한 어플리케이션의 쓰레드 번호와 함께 상기 WAS 모니터링부에 제공하는 것을 특징으로 하는 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 방법.
KR1020090031672A 2009-04-13 2009-04-13 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치 및 방법 KR100926075B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090031672A KR100926075B1 (ko) 2009-04-13 2009-04-13 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090031672A KR100926075B1 (ko) 2009-04-13 2009-04-13 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치 및 방법

Publications (1)

Publication Number Publication Date
KR100926075B1 true KR100926075B1 (ko) 2009-11-11

Family

ID=41561488

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090031672A KR100926075B1 (ko) 2009-04-13 2009-04-13 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치 및 방법

Country Status (1)

Country Link
KR (1) KR100926075B1 (ko)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100945476B1 (ko) 2009-09-10 2010-03-05 주식회사 파수닷컴 가상화 기술을 이용한 디지털 저작권 관리 장치 및 방법
KR20120000546A (ko) * 2011-08-31 2012-01-02 주식회사 위즈디엔에스코리아 데이터베이스 서버의 조작이력 생성 시스템 및 방법
KR101140615B1 (ko) 2010-06-22 2012-05-02 주식회사 웨어밸리 확장 패킷을 이용한 데이터베이스 보안 관리 방법
KR101161648B1 (ko) * 2010-06-25 2012-07-02 주식회사 위즈디엔에스코리아 데이터베이스 서버의 조작이력 생성 시스템 및 방법
KR101453487B1 (ko) 2012-10-10 2014-10-21 주식회사 디지캡 온라인 서비스로 제공되는 저작 콘텐츠의 보호를 위한 콘텐츠 유통 로그 에이전트 및 운영방법
WO2016032233A3 (ko) * 2014-08-27 2016-04-14 주식회사 파수닷컴 데이터 관리 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체, 데이터 관리 방법을 실행하는 사용자 클라이언트, 보안 정책 서버
KR20180037632A (ko) * 2016-10-04 2018-04-13 주식회사 셀파소프트 Was 모니터링 시스템과 db 서버 모니터링 시스템의 연계 서비스를 제공하기 위한 시스템 및 방법
CN108573142A (zh) * 2017-03-10 2018-09-25 中移(杭州)信息技术有限公司 一种实现hook的方法及装置
US10404460B2 (en) 2014-08-27 2019-09-03 Fasoo. Com Co., Ltd Data management method, computer readable recording medium thereof, user client for executing data management method, and security policy server
CN111147291A (zh) * 2019-12-18 2020-05-12 深圳前海微众银行股份有限公司 一种服务维护方法及装置
KR102521784B1 (ko) * 2021-10-26 2023-04-17 주식회사 신시웨이 웹 어플리케이션 서버 기반 데이터베이스 접근을 관리하기 위한 접근 관리 장치 및 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050036010A (ko) * 2003-10-14 2005-04-20 (주)데이타헤븐 시스템 모니터링 방법 및 시스템 모니터링 시스템
KR20080098337A (ko) * 2008-09-08 2008-11-07 김용규 표준jdbc 확장을 통한 데이터베이스 접근권한 실명화 인증 및 이용내역 실명화 구현 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050036010A (ko) * 2003-10-14 2005-04-20 (주)데이타헤븐 시스템 모니터링 방법 및 시스템 모니터링 시스템
KR20080098337A (ko) * 2008-09-08 2008-11-07 김용규 표준jdbc 확장을 통한 데이터베이스 접근권한 실명화 인증 및 이용내역 실명화 구현 방법

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8955150B2 (en) 2009-09-10 2015-02-10 Fasoo.Com Co. Ltd. Apparatus and method for managing digital rights using virtualization technique
WO2011031093A3 (ko) * 2009-09-10 2011-06-03 주식회사 파수닷컴 가상화 기술을 이용한 디지털 저작권 관리 장치 및 방법
KR100945476B1 (ko) 2009-09-10 2010-03-05 주식회사 파수닷컴 가상화 기술을 이용한 디지털 저작권 관리 장치 및 방법
KR101140615B1 (ko) 2010-06-22 2012-05-02 주식회사 웨어밸리 확장 패킷을 이용한 데이터베이스 보안 관리 방법
KR101161648B1 (ko) * 2010-06-25 2012-07-02 주식회사 위즈디엔에스코리아 데이터베이스 서버의 조작이력 생성 시스템 및 방법
KR101649676B1 (ko) 2011-08-31 2016-08-19 김기배 데이터베이스 서버의 조작이력 생성 시스템 및 방법
KR20120000546A (ko) * 2011-08-31 2012-01-02 주식회사 위즈디엔에스코리아 데이터베이스 서버의 조작이력 생성 시스템 및 방법
KR101453487B1 (ko) 2012-10-10 2014-10-21 주식회사 디지캡 온라인 서비스로 제공되는 저작 콘텐츠의 보호를 위한 콘텐츠 유통 로그 에이전트 및 운영방법
WO2016032233A3 (ko) * 2014-08-27 2016-04-14 주식회사 파수닷컴 데이터 관리 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체, 데이터 관리 방법을 실행하는 사용자 클라이언트, 보안 정책 서버
US10404460B2 (en) 2014-08-27 2019-09-03 Fasoo. Com Co., Ltd Data management method, computer readable recording medium thereof, user client for executing data management method, and security policy server
KR20180037632A (ko) * 2016-10-04 2018-04-13 주식회사 셀파소프트 Was 모니터링 시스템과 db 서버 모니터링 시스템의 연계 서비스를 제공하기 위한 시스템 및 방법
CN108573142A (zh) * 2017-03-10 2018-09-25 中移(杭州)信息技术有限公司 一种实现hook的方法及装置
CN108573142B (zh) * 2017-03-10 2020-06-09 中移(杭州)信息技术有限公司 一种实现hook的方法及装置
CN111147291A (zh) * 2019-12-18 2020-05-12 深圳前海微众银行股份有限公司 一种服务维护方法及装置
CN111147291B (zh) * 2019-12-18 2024-02-06 深圳前海微众银行股份有限公司 一种服务维护方法及装置
KR102521784B1 (ko) * 2021-10-26 2023-04-17 주식회사 신시웨이 웹 어플리케이션 서버 기반 데이터베이스 접근을 관리하기 위한 접근 관리 장치 및 방법

Similar Documents

Publication Publication Date Title
KR100926075B1 (ko) 웹어플리케이션 서버를 통한 데이터베이스 접근 감시 장치 및 방법
US9560067B2 (en) Correlation based security risk identification
US8271632B2 (en) Remote access providing computer system and method for managing same
US7418702B2 (en) Concurrent web based multi-task support for control management system
EP3062479B1 (en) Security service customizing method and apparatus
US8832430B2 (en) Remote certificate management
CN109510849A (zh) 云存储的帐号鉴权方法和装置
CN111061685B (zh) 日志查询方法、装置、节点设备及存储介质
CN109033857A (zh) 一种访问数据的方法、装置、设备及可读存储介质
CN107315950B (zh) 一种云计算平台管理员权限最小化的自动化划分方法及访问控制方法
CN108966216B (zh) 一种应用于配电网的移动通信方法及系统
US11956228B2 (en) Method and apparatus for securely managing computer process access to network resources through delegated system credentials
EP2320622A1 (en) Report form normalization processing method, apparatus and system
CN111737232A (zh) 数据库管理方法、系统、装置、设备及计算机存储介质
CN111431735B (zh) 连接池的管理方法、设备、装置及存储介质
CN113342783A (zh) 数据迁移方法、装置、计算机设备及存储介质
CN110210191A (zh) 一种数据处理方法及相关装置
CN111935195B (zh) 分布式系统管理方法、装置、存储介质和分布式管理系统
US8601108B1 (en) Credential authentication and authorization in a server device
KR20080068512A (ko) 이벤트를 이용한 장치관리
KR102379098B1 (ko) 가상 드라이버를 통한 데이터베이스 로그인 정보 관리 시스템 및 그 제어방법
CN112446027B (zh) 一种配置核查方法、装置、电子设备和计算机存储介质
CN109150863B (zh) 桌面云的访问控制方法、装置和桌面云终端设备
US8844006B2 (en) Authentication of services on a partition
CN116453636A (zh) 医学临床试验远程监查方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121022

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131030

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151103

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20161026

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20171103

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20181024

Year of fee payment: 10