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 |