본문 바로가기

DBMS

Oracle DB Vault

반응형

DataBase Vault는 SQL 작업을 강력하게 통제할 수 있는 접근 제어 솔루션이며,

데이터베이스 내부에서 동작하는 방화벽과 같다.

 

 

Database Vault는 누가, 언제, 어디서, 어떻게 연결을 시도하는 지 분석해 제어할 수 있다.

또한 허가되지 않은 사용자의 데이터베이스 접근을 차단할 수 있으며, 특정 SQL 문장이

수행되지 않도록 할 수 있다.

 

이러한 작업들을 수행하기 위해

영역(Realm), 명령 규칙(Command Rule), 규칙 집합(Rule Sets), 계 수(Factor) 등을 제공한다.

 

 

영역(Realm)은 특정 데이터베이스 객체에 접근 가능한 사용자를 미리 등록하여

여기에 지정되지 않은 사용자를 접근할 수 없도록 통제할 수 있다.

보안영역에서 SYSDBA ROLE을 가진 사용자도 접근 가능한 사용자로 등록되지 않으면

접근할 수 없다.

 

규칙 집합(Rule Sets)에는 영역에 접근할 때 만족해야 하는 조건을 정의해 놓을 수 있다.

규칙은 SQL 문장의 WHERE절 이하에 기술하는 문법으로 작성하면 된다.

예를 들면 계수하는 기능을 이 용하여 접속 IP나 사용자 이름과 같은 외부 환경 변수의 값을

읽어와 조건을 구성할 수 있다.

 

명령 규칙(Command Rule)은 특정 SQL 문장이 지정된 규칙 집합 조건을 만족할 때 실행되도록 설정할 수 있다. 예를 들면 DROP 명령어 실행으로 중요 데이터가 손실되는 사고를 막을 수 있다.

 

(출처 - 오라클 데이터베이스 보안. 김규백 지음)

 


> REALM CONF

HR의 EMPLOYEES 테이블을 Relam으로 구성하여 OE만 접근가능하도록 설정하는 SQL문

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
-- https://docs.oracle.com/cd/E11882_01/server.112/e23090/apis_dbms_macadm.htm#DVADM70430
 
-- 영역 생성
BEGIN
 DBMS_MACADM.CREATE_REALM (
 realm_name => 'My First Realm',
 description => NULL,
 enabled => DBMS_MACUTL.G_YES, -- 영역 검사 활성화
audit_options => DBMS_MACUTL.G_REALM_AUDIT_FAIL 
-- 권한이없는 사용자가 영역으로 보호되는 객체를 수정하려고하는 경우 감사 레코드를 생성한다.
 );
END;
 
-- 영역 조회
SELECT * FROM DVSYS.DBA_DV_REALM;
 
-- 영역에 객체를 추가
BEGIN
 DBMS_MACADM.ADD_OBJECT_TO_REALM(
 realm_name => 'My First Realm',
 object_owner => 'HR'
 object_name => 'EMPLOYEES'
 object_type => 'TABLE'
 ); 
 END;
 
-- 영역에 추가된 객체 조회
SELECT * FROM DVSYS.DBA_DV_REALM_OBJECT
 WHERE REALM_NAME = 'My First Realm';
 
-- 인증 설정된 사용자만 접근 가능 
BEGIN
 DBMS_MACADM.ADD_AUTH_TO_REALM(
 realm_name => 'My First Realm',
 grantee => 'OE'); -- 소유자 , 참여자 권한을 부여하는 사용자 또는 역할 이름.
END;
 
-- 인증 설정된 사용자 조회
SELECT * FROM DVSYS.DBA_DV_REALM_AUTH;
cs

 

Gui에서 확인 결과 MyFirst Realm이 추가됨.

 

 

만약 영역에 접근 등록이 안된 사용자가 접근을 시도 할 경우

 

더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
-- Rull set 
BEGIN
    DBMS_MACADM.CREATE_RULE_SET (
          rule_set_name => 'Is IP Address',
          description => '등록된 IP만 접근할 수 있습니다',
          enabled => DBMS_MACUTL.G_YES,
          eval_options => DBMS_MACUTL.G_RULESET_EVAL_ANY,
          audit_options => DBMS_MACUTL.G_RULESET_AUDIT_FAIL,
          fail_options => DBMS_MACUTL.G_RULESET_FAIL_SHOW,
          fail_message => '등록된 IP가 아닙니다',
          fail_code => 20100
          handler_options => DBMS_MACUTL.G_RULESET_HANDLER_OFF,
          handler => NULL,
          is_static => FALSE);
END;
 
SELECT * FROM DVSYS.DBA_DV_RULE_SET;
-- 규칙 만들기
BEGIN
    DBMS_MACADM.CREATE_RULE (
          rule_name => 'IP Address'
          rule_expr => q'$DVF.F$Client_IP = '192.168.0.15'$');  --IP 등록
END;
 
-- DVF.F$계수이름
SELECT DVF.F$Client_IP FROM DUAL;
 
-- 규칙 집합에 대한 규칙 추가
 
BEGIN
    DBMS_MACADM.ADD_RULE_TO_RULE_SET (
          rule_set_name => 'Is IP Address',
          rule_name => 'IP Address'
          rule_order => 1,
          enabled => DBMS_MACUTL.G_YES);
END;
cs

 

 

관련문서 : https://docs.oracle.com/cd/E11882_01/server.112/e23090/apis_dbms_macadm.htm#DVADM70472

 

 

 

반응형

'DBMS' 카테고리의 다른 글

MySQL 실행 쿼리 확인하기  (0) 2020.12.02
postgresql 설치  (0) 2020.07.02
Database Vault 환경 구성  (0) 2017.11.16
DB 데이터 인덱스(index)  (0) 2017.11.07
Oracle Enterprise Manager 데이터 마스킹 정의  (0) 2017.11.02