통합 감사
실사용자, WAS 세션, SQL, 오브젝트를 한 감사 이벤트로 묶습니다.
PLATE 03
지정한 대상만, 칼럼은 FGA
공통 계정 뒤에서 사람이 사라집니다
웹 사용자는 WAS에서 인증되지만, 커넥션 풀을 지난 데이터베이스 세션은 APP_USER 같은 공통 계정만 봅니다. 사고가 나면 감사 로그의 시각과 WAS 로그를 손으로 맞춰 사람을 추정하게 됩니다.
한 이벤트에 붙이는 것
WAS 인증이 끝나면 실사용자와 WAS 세션 식별자를 데이터베이스 세션에 바인딩합니다. 감사 기록은 그 컨텍스트와 SQL, 오브젝트, 칼럼을 한 건으로 남깁니다.
- 감사 대상은 미리 지정한 오브젝트와 칼럼입니다. 모든 SQL을 따로 걷어 정규식으로 판별하지 않습니다.
- Oracle에서 Unified Audit가 칼럼을 다루지 못하는 구간은
DBMS_FGA정책으로 보완하고, 정책을 만든 이력을 남깁니다. - WAS를 통한 접속과 직접 접속을 같은 사용자, 같은 오브젝트로 찾습니다.
- 승인 없이 실행된 SQL을 감사 기록 옆에서 볼 수 있습니다.
Oracle 감사 로그와 Gate 메타데이터는 함께 검색할 수 있게 모아 둡니다. 실사용자, WAS 세션, DB 세션, SQL은 한 이벤트로 Syslog 또는 표준 API를 통해 SIEM에 넘길 수 있습니다.
기존 접근통제, 계정관리, 감사, 로그 관리를 걷어내지 않습니다. AUDIGATE는 그 기록에 실사용자와 승인 시각을 잇는 층입니다.
기존 DAM·JIT와 다른 점
PNP·WV·SW는 국내 DB 접근제어 제품군의 약칭입니다. 표는 패킷·문장 분석형 DAM과 계정 대여형 JIT의 일반적인 한계를 적습니다. 특정 제품의 모든 옵션을 단정하지는 않습니다.
| 항목 | 기존 DAM (PNP·WV·SW) | AUDIGATE | 비고 |
|---|---|---|---|
| View, Synonym, DB Link, Stored Program을 통한 접근 감사 | 패킷이나 SQL 문장에 드러난 이름만 봅니다. 뷰·동의어·DB Link·프로시저 안에서 실제로 닿은 객체는 문장 밖으로 나오지 않으면 빠집니다. | 데이터베이스가 이름을 해석한 뒤의 객체와 칼럼을 감사합니다. 동의어·뷰·PL/SQL을 거친 접근도 지정한 대상이면 남습니다. | 계정이나 비밀번호를 시간만큼 빌려 주는 JIT는 해석된 객체를 감사하지 않습니다. |
| 칼럼 단위 감사 | SQL 텍스트에서 칼럼 이름을 추정합니다. SELECT * 이거나 뷰 뒤의 칼럼은 이력에 남지 않는 경우가 많습니다. | 미리 지정한 칼럼을 DBMS_FGA로 감사합니다. Oracle Unified Audit가 칼럼을 다루지 못하는 구간을 이 정책으로 보완합니다. | JIT에는 칼럼 감사 축이 없습니다. |
| 칼럼 가공 감지. substr(주민번호, 7) | 문장에 함수와 칼럼 문자가 같이 있을 때만 패턴으로 추정합니다. 뷰나 프로시저 안이면 놓칩니다. | 칼럼을 함수로 감싸도 그 칼럼을 읽으면 지정 칼럼 감사에 남습니다. | JIT는 SQL 식 자체를 보지 않습니다. |
| 칼럼 단위 사용 이력 로깅과 차단 | 문장 패턴으로 막고 남깁니다. 어떤 칼럼을 읽었는지는 SQL 원문에 의존합니다. | 지정 칼럼 접근은 감사 이력으로 남고, 승인되지 않은 세션의 SQL은 Dynamic Role이 없으면 데이터베이스가 거부합니다. | JIT는 로그인할 수 있는 시간만 닫습니다. 칼럼 이력과 세션 안 차단은 없습니다. |
| 세션별 개별 권한 통제 | 계정과 IP 기준입니다. 권한은 계정에 남아 있고, 세션마다 다른 Role을 올리지 않습니다. | apply_my_roles로 그 세션에만 Dynamic Role이 켜집니다. AUTH-KEY는 다른 세션에서 쓸 수 없습니다. | JIT는 공유 계정을 시간만큼 여는 경우가 많아, 세션 하나와 칼럼 감사가 한 건으로 묶이지 않습니다. |
| 저장 방식 | 지나간 SQL을 전체 로깅합니다. 중요 칼럼이 아닌 문장까지 쌓입니다. | 주요 테이블과 칼럼만 100% 로깅합니다. 지정하지 않은 SQL을 전부 쌓지 않습니다. | JIT는 SQL 본문 저장이 아니라 접속·승인 이력이 중심입니다. |
| 벤더 NNE, TLS | 불가. 패킷이 벤더 NNE나 TLS로 암호화되면 SQL을 볼 수 없습니다. | 가능. 암호 구간 안이 아니라 데이터베이스 세션에서 지정 테이블·칼럼을 남깁니다. | JIT도 암호문 안의 SQL은 보지 못합니다. |