44
Version 변경일자 변경자(작성자) 주요내용 Author 유광복 Creation Date 2010-02-25 Last Updated Version Copyright(C) 2004 Goodus Inc. All Rights Reserved Oracle Database Vault

Database Vault 2010 03

Embed Size (px)

Citation preview

Page 1: Database Vault 2010 03

Version 변경일자 변경자(작성자) 주요내용

Author 유광복

Creation Date 2010-02-25

Last Updated

Version

Copyright(C) 2004 Goodus Inc.

All Rights Reserved

Oracle Database Vault

Page 2: Database Vault 2010 03

Database Vault

- - 2

Contents

1. Database Vault 란? ............................................................................................................... 4

1.1. 오라클 보안 제품 구성도 ............................................................................................ 5

2. Installing Database Vault (10g) ............................................................................................ 6

2.1. S/W download .......................................................................................................... 6

2.2. Installation Requirement ........................................................................................... 6

3. Starting Database Vault Admin(DVA) ................................................................................... 9

3.1. Em(DB Console) 을 통한 접속 .................................................................................. 9 3.2. Database Vault Role ........................................................................................... 10

3.2.1. DV_SECANALYST ................................................................................................... 11 3.2.2. DV_Admin ................................................................................................................. 11 3.2.3. DV_OWNER (Database Vault Owner : Mandatory) .................................................. 11 3.2.4. DV_ACCTMGR (Database Vault Account Manager : Optional) ............................... 11 3.2.5. DV_REALM_OWNER ............................................................................................... 11 3.2.6. DV_REALM_RESOURCE ........................................................................................ 11 3.2.7. DV_PUBLIC .............................................................................................................. 11

3.3. Database Vault Schema ...................................................................................... 11 3.3.1. DVSYS ...................................................................................................................... 11 3.3.2. DVF ........................................................................................................................... 11

4. Access Control Components .............................................................................................. 12

4.1. Realm (보안영역) ................................................................................................... 12 4.2. Command Rule (명령어 규칙) ................................................................................ 12 4.3. Factor (계수) .......................................................................................................... 12 4.4. Rule (규칙) .......................................................................................................... 12 4.5. Rule Set (규칙 집합) .............................................................................................. 13 4.6. 구동 방식 ................................................................................................................ 13 4.7. Database Vault 설치 후 Revoke 된 privilege ....................................................... 14

5. Example ............................................................................................................................. 15

5.1. Realm (보안영역) ................................................................................................... 15 5.1.1. Realm (보안영역) 조회 ............................................................................................. 15 5.1.2. Realm (보안영역) 생성 ............................................................................................. 16 5.1.3. Realm (보안영역) Object 지정 .................................................................................. 17 5.1.4. Realm (보안영역) Object 조회 ................................................................................ 20 5.1.5. Audit log 조회 어떤 위반사항이 발생하였는지 확인 가능 ........................ 20

5.2. Command rule (명령어 규칙) ............................................................................... 22 5.3. Factor (계수) .......................................................................................................... 30

6. 끝맺음 ................................................................................................................................ 42

7. Append .............................................................................................................................. 43

7.1. How to enable database vault using dvca for newly created database [ID 473610.1] ........................................................................................................................ 43 7.2. How to Disable / Enable Database Vault (Unix) ................................................ 44

Page 3: Database Vault 2010 03

Database Vault

- - 3

Page 4: Database Vault 2010 03

Database Vault

- - 4

1. Database Vault란?

오라클 Database vault 란 오라클에서 제공되는 접근제어 솔루션입니다. 은행의 안전 금고

와 유사한 개념의 혁신적 접근법을 통해 자동화, 투명성, 사전침입방지 및 탐지 등의 핵심적인

보안 요구사항을 만족합니다

과도한 권한이 있는 사용자의 애플리케이션 데이터 접근을 차단하고 임의적인 데이터베이스

변경을 제한하며 애플리케이션 데이터의 접근 방법, 시기 및 장소에 대한 통제 정책을 적용합

니다

예를 들어 SYS 권한을 가진 DBA 의 권한 남용으로 일반 데이터를 억세스하는 권한제어, 서

비스 중 시간대의 DDL 금지, 특정 IP Address 가진 시스템의 접근 제어 등 폭넓고 다양하게

접근 제어를 구축할 수 있는 솔루션입니다.

이 Vault 는 데이터베이스 커널에 위치하며 커널의 최상위에서 동작하게 되므로 우회접근을

통한 보안 위협의 문제도 해결할 수 있습니다.

.

Oracle Database Vault는 애플리케이션 및 민감한 데이터를 보호할 수 있도록 강력한 보안

통제를 제공합니다.

Page 5: Database Vault 2010 03

Database Vault

- - 5

1.1. 오라클 보안 제품 구성도

아래표는 오라클 제품으로 구현가능한 데이터 암호화, 비인가된 사용자 접근제어, 감사

및 모니터링 기능에 대한 설명입니다.

참고로 최근에 개인정보 중요성에 대한 인식이 높아짐과 동시에 사회적 관심이 높아짐에 따라

아래와 같이 간략한 정보통신망법을 언급하였습니다.

정보통신망법 시행(2010년 1월 29일)

“정보통신망을 이용한 서비스사업자들은 앞으로 고객의 주요 정보(주민등록번호, 카드 번호,

계좌번호)등을 의무적으로 암호화하여 저장하여야 한다. 1월 28일자로 유예기간이 종료됨으로

해당 사업자들은 개인정보를 안전하게 저장, 전송하는 암호화 기술을 이용한 보안조치를

반드시 취해야 한다.”

이에 해당하는 오라클 제품은 Oracle Advanced Security Option(암호화) 의 TDE, 접근제어의

Database Vault 로 구현이 가능합니다.

설명분류

사용자 SQL에 투명한 데이터 자동 암호화/복호화Transparent Data Encryption

행 단위 접근 제어 및 보안 등급 관리Oracle Label Security

단일 DB 안에서 업무별로 독립적인 보호 영역을 구축. 또한, DB의 어떤 명령에 대해서도 조건에 따라 실행 권한을 제어할 수있게 해주는 내부 통제 기능

Database Vault

여러 DB 또는 Auditing Tool에 분산되어 있는 Audit 정보 통합관리

Audit Vault

클라이언트와 데이터베이스 서버간의 모든 네트워크 통신패킷을 암호화

Network Encryption

Encryption

3rd Party 표준 인증 서비스와의 연동Strong AuthenticationAdvanced Security Option

DB 계정이 아닌 실 사용자 관리 기능Enterprise User Security

데이터 암호화 APIEncryption API

행 단위의 접근 제어Virtual Private Database

감사 기능. 효율적인 감사를 위한 Fine Grained Auditing 기능포함

Auditing

전통적인 DAC & RBAC권한 및 role

DB 계정 관리 및 암호 기반 인증계정 관리 및 인증Enterprise Edition

설명분류

사용자 SQL에 투명한 데이터 자동 암호화/복호화Transparent Data Encryption

행 단위 접근 제어 및 보안 등급 관리Oracle Label Security

단일 DB 안에서 업무별로 독립적인 보호 영역을 구축. 또한, DB의 어떤 명령에 대해서도 조건에 따라 실행 권한을 제어할 수있게 해주는 내부 통제 기능

Database Vault

여러 DB 또는 Auditing Tool에 분산되어 있는 Audit 정보 통합관리

Audit Vault

클라이언트와 데이터베이스 서버간의 모든 네트워크 통신패킷을 암호화

Network Encryption

Encryption

3rd Party 표준 인증 서비스와의 연동Strong AuthenticationAdvanced Security Option

DB 계정이 아닌 실 사용자 관리 기능Enterprise User Security

데이터 암호화 APIEncryption API

행 단위의 접근 제어Virtual Private Database

감사 기능. 효율적인 감사를 위한 Fine Grained Auditing 기능포함

Auditing

전통적인 DAC & RBAC권한 및 role

DB 계정 관리 및 암호 기반 인증계정 관리 및 인증Enterprise Edition

Page 6: Database Vault 2010 03

Database Vault

- - 6

2. Installing Database Vault (10g)

2.1. S/W download

- 10g : otn 싸이트에서 별도 옵션으로 download 받아 설치해야 함

- 11g : Database S/W 포함되어 추가 설치 없이 옵션 체크로만 설치 가능함

2.2. Installation Requirement

- 10.2.0.2 이상 - Oracle Label Security (OLS) 설치 되어야 함

SQL> select comp_id,status,version from dba_registry where comp_id='OLS'; COMP_ID STATUS VERSION ------------ ----------- ----------- OLS VALID 10.2.0.4.0

- DB Console(EM)은 optional(Web base 작업이 많으므로 설치하면 편리함) - /etc/oratab, /var/opt/oracle/oratab SID 등록 되어 있는지 확인

$ pwd

/data/source/vault/datavault

lkb1 $ ./runInstaller

** DB 를 수동으로 생성한 경우

/var/opt/oracle/oratab 파일에 sid 를 등록해

야 함

Page 7: Database Vault 2010 03

Database Vault

- - 7

** 존재하는 Database 를 선택함

sys / passwd 입력

** Database Vault Owner 입력(mandatory)

Database Vault account manager

(Optional)

** Vault Schema, DB Console 등을 구성함

Page 8: Database Vault 2010 03

Database Vault

- - 8

** Database Vault Summary

** GUI 로 설치 도중 에러가 발생하면 수동으로 DVCA 를 실행해 준다.

Lkb1 $ dvca -action option -oh /ora10/product/10.2 -owner_account dvo -owner_passwd ?????

-jdbc_str jdbc:oracle:oci:@ORA -sys_passwd manager -logfile ./dvca.log –nodecrypt DVCA started Executing task RESTART_SERVICES_PATCH MANAGE_INSTANCE stop isqlplus MANAGE_INSTANCE stop OC4J MANAGE_LISTENER start listener MANAGE_INSTANCE start RDBMS Executing task SQLPLUS_CATOLS Executing task RESTART_SERVICES_OLS MANAGE_INSTANCE stop isqlplus MANAGE_INSTANCE stop OC4J …….. Executing task INIT_OS_ROLES Executing task INIT_SQL92_SECURITY Executing task INIT_OS_AUTHENT_PREFIX Executing task INIT_REMOTE_LOGIN_PASSWORDFILE Executing task INIT_RECYCLEBIN Executing task RESTART_SERVICES MANAGE_INSTANCE stop isqlplus MANAGE_INSTANCE stop OC4J MANAGE_INSTANCE stop RDBMS MANAGE_LISTENER stop listener MANAGE_LISTENER start listener MANAGE_INSTANCE start RDBMS MANAGE_INSTANCE start OC4J

RAC 인경우 –action optionrac 로 입력함.

Page 9: Database Vault 2010 03

Database Vault

- - 9

3. Starting Database Vault Admin(DVA) 3.1. Em(DB Console) 을 통한 접속

lkb1 $ emctl start dbconsole Oracle Enterprise Manager 10g Database Control Release 10.2.0.4.0 Copyright (c) 1996, 2007 Oracle Corporation. All rights reserved. https://lkb1:1150/em/console/aboutApplication Starting Oracle Enterprise Manager 10g Database Control ........ started. ------------------------------------------------------------------ Logs are generated in directory /ora10/product/10.2/lkb1_ORA/sysman/log lkb1 $

Database Vault 환경을 조회 및 변경 작업을 하고자 할 경우 Command line 에서도 가능하지만 해당 API(pkg) 사용시 긴 문장 사용의 불편함과 결과를 보기 위한 컬럼 조정

이 불가피함으로 인해 Web Base GUI 를 권고합니다. DB Console 를 통하여 구성이 가능하며 Secure mode 로 설정하여야 합니다.

URL : https://lkb1:1150/dva (10g 화면)

URL : https://lkb1:1150/dva 11g 화면

Page 10: Database Vault 2010 03

Database Vault

- - 10

<< 로그인 후 화면 모습>>

3.2. Database Vault Role

Database Vault 설치시 아래 7 개의 role 이 생성되며 각각 부여된 role 따라 실행할 수 있는 Layer 가 달라진다.

Page 11: Database Vault 2010 03

Database Vault

- - 11

3.2.1. DV_SECANALYST

DVA (Database Vault Administrator) 내의 모니터링의 감사 레포트 기능 부여

3.2.2. DV_Admin

DV_SECANALYST + DVA 모든 기능 제어 가능

3.2.3. DV_OWNER (Database Vault Owner : Mandatory)

DV_ADMIN + 해당 권한을 other 에게 부여 가능하며 DV_ACCTMGR role 부여된 스키

마를 지정하지 않을 경우 해당 권한까지 부여받는다. Database vault 설치시 반드시

필요함

- DVA 접근 - Database Vault Security 수정 가능 - Security Component 변경 및 audit 수정 가능

3.2.4. DV_ACCTMGR (Database Vault Account Manager : Optional)

user 나 profile 생성, 변경은 이 role 을 가진 사용자만 가능함. 더 이상 sys 계정에서

사용자 생성 및 변경은 불가함

- User 생성 - User 패스워드 변경

3.2.5. DV_REALM_OWNER

REALM(보안 영역)의 owner 이며 해당 보안 영역에 포함된 객체애 대하여 create any,

alter any, drop any 권한을 갖는다. dv_owner, dv_admin 권한은 없음

3.2.6. DV_REALM_RESOURCE

Oracle “RESOURCE” ROLE 와 비슷하며 (create object) 보안 영역내에서 수행 가능함

3.2.7. DV_PUBLIC

database vault procedures 의 다수 수행 권한이 있음

3.3. Database Vault Schema

Database Vault 를 운영하기 위한 2 개의 Schema 가 생성된다.

3.3.1. DVSYS

아래의 권한 소유자이다 - Database Vault View

- Database Vault API

3.3.2. DVF

Factor definition 의 소유자이다

Page 12: Database Vault 2010 03

Database Vault

- - 12

4. Access Control Components 4.1. Realm (보안영역)

- SYSDBA 도접근이불가능한보안영역(Realm) 제공 - Select Any Table 권한을부여받은사용자도 접근 불가

4.2. Command Rule (명령어 규칙)

- 의심스러운 IP 를통한 CONNECT 불가예) 업무시간대에 DDL 문장수행금지설정

가능 - 모든 데이터베이스 관리 명령어에 대해, 룰을적용함으로써,불필요한 명령어 및

권한 남용을 미연에 방지

4.3. Factor (계수)

- 미리 정의된 다양한 Factor 를 이용하여 접근제어규칙을 생성 - 사용자 정의 Factor를 이용하여 다양한 접근 제어 규칙을 추가 할 수 있음

- User Factors (Name, Ahthentication type, session user, Proxy Enterprise Idnetity)

- Network Factors (Machine name, Client IP, Network Protocols)

- Databse Factors (Database IP, Database Instance, Database Hostname, Database Sid)

- Runtime Factors (Language, Date, Time)

4.4. Rule (규칙)

Rule 을 실제 표현하는 기술문입니다.

Ex) rule name : Local Access 표현식 : sys_context('userenv','ip_address')='61.250.123.81'

Page 13: Database Vault 2010 03

Database Vault

- - 13

4.5. Rule Set (규칙 집합)

4.4 에 나열된 Rule 들의 집합을 의미하며 1 개 이상의 Rule 을 포함할 수 있습니다. 각각의 Rule 들이 모두 참, 거짓 일 때 해당 조건을 허용합니다.

Ex) Rule Set name

: Internal DBA working hours

- Rule name: Working Hours 표현식 : TO_CHAR(SYSDATE,'HH24') BETWEEN '09' AND '18'

- Rule name : Week Day 표현식 : TO_CHAR(SYSDATE,'D') BETWEEN '2' AND '6'

- Rule name : Internal DBA 표현식 : DVF.F$SESSION_USER='SCOTT'

4.6. 구동 방식

보안 적용을 위한 정책은 Realm, 과 Command Rule 를 통해서 최종적으로 허락 여부

를 판단합니다. Realm 과 Command Rule 는 소그룹으로 Rule Set, Factor 등을 포함하

여 좀더 세부적인 조건을 추가하여 접근 제어를 설정할 수 있습니다.

Page 14: Database Vault 2010 03

Database Vault

- - 14

4.7. Database Vault 설치 후 Revoke 된 privilege

ROLE Revoke 된 privilege

DBA

  BECOME USER

  SELECT ANY TRANSACTION

  CREATE ANY JOB

  CREATE EXTERNAL JOB

  EXECUTE ANY PROGRAM

  EXECUTE ANY CLASS

  MANAGE SCHEDULER

  DEQUEUE ANY QUEUE

  ENQUEUE ANY QUEUE

  MANAGE ANY QUEUE

IMP_FULL_DATABASE

  BECOME USER

  MANAGE ANY QUEUE

EXECUTE_CATALOG_ROLE

  EXECUTE ON DBMS_LOGMNR

  EXECUTE ON DBMS_LOGMNR_D

  EXECUTE ON DBMS_LOGMNR_LOGREP_DICT

  EXECUTE ON DBMS_LOGMNR_SESSION

  EXECUTE ON DBMS_FILE_TRANSFER

PUBLIC EXECUTE ON UTL_FILE

SCHEDULAR_ADMIN CREATE ANY JOB

USER Revoke 된 privilege

SYS

  ALTER USER

  CREATE USER

  DROP USER

ALTER PROFILE

CREATE PROFILE

DROP PROFILE

SYSTEM

  ALTER USER

  CREATE USER

  DROP USER

ALTER PROFILE

CREATE PROFILE

DROP PROFILE

Page 15: Database Vault 2010 03

Database Vault

- - 15

5. Example 5.1. Realm (보안영역)

: SYS, SYSTEM 계정으로 부터의 application user 의 데이터 보호 일반적으로 SYS 계정에서 scott.emp 테이블 조회가 가능함.

SYS@ORA> select * from scott.emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- -------------------- ------------------ ---------- ------------ ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20

7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10

14 rows selected.

SYS@ORA>

5.1.1. Realm (보안영역) 조회

Page 16: Database Vault 2010 03

Database Vault

- - 16

DVO@ORA> select name , AUDIT_OPTIONS, ENABLED from dvsys.dba_dv_realm; NAME AUDIT_OPTIONS ENABL -------------------------------------------------- ------------- ----- Oracle Data Dictionary 1 Y Oracle Database Vault 1 Y Database Vault Account Management 1 Y Oracle Enterprise Manager 1 Y DVO@ORA>

5.1.2. Realm (보안영역) 생성

Scott 계정 특정 테이블을 보안영역으로 등록하고자 한다.

Realm 을 생성한다.

이름입력 “Protect Scott”

Page 17: Database Vault 2010 03

Database Vault

- - 17

“Protect Scott” 편집

DVO@ORA> BEGIN 2 DVSYS.DBMS_MACADM.CREATE_REALM( 3 realm_name => 'Protect Scott', 4 description => 'Protect Scott', 5 enabled => 'DBMS_MACUTL.G_YES', 6 audit_options => DBMS_MACUTL.G_REALM_AUDIT_FAIL); 7 END; 8 / PL/SQL procedure successfully completed. DVO@ORA> select name , AUDIT_OPTIONS, ENABLED from dvsys.dba_dv_realm; NAME AUDIT_OPTIONS ENABLED -------------------------------------------------- ------------- ---------- Oracle Data Dictionary 1 Y Oracle Database Vault 1 Y Database Vault Account Management 1 Y Oracle Enterprise Manager 1 Y Protect Scott 1 N DVO@ORA>

5.1.3. Realm (보안영역) Object 지정

“Protect Scott” 의 보안영역에 Scott.emp 테이블을 지정함

Page 18: Database Vault 2010 03

Database Vault

- - 18

Object 선택하기 위함

Page 19: Database Vault 2010 03

Database Vault

- - 19

API 방식으로 Realm 설정 DVO@ORA> Begin DVSYS.DBMS_MACADM.ADD_OBJECT_TO_REALM (realm_name => 'Protect Scott', object_owner => 'SCOTT', object_name => 'EMP', object_type => 'TABLE'); end; / PL/SQL procedure successfully completed. DVO@ORA> select * from dvsys.dba_dv_realm_object where realm_name='Protect Scott'; REALM_NAME OWNER OBJECT_NAME OBJECT_TYPE ------------------------------ --------------- ------------------------- --------------- Protect Scott SCOTT EMP TABLE DVO@ORA>

Page 20: Database Vault 2010 03

Database Vault

- - 20

5.1.4. Realm (보안영역) Object 조회

SYS 계정으로 scott.emp 테이블 access 불가하고 drop, truncate 로 불가함 DVO@ORA> conn /as sysdba Connected. SYS@ORA> select * from scott.emp; select * from scott.emp * ERROR at line 1: ORA-01031: insufficient privileges SYS@ORA> SCOTT@ORA> drop table emp; drop table emp * ERROR at line 1: ORA-00604: error occurred at recursive SQL level 1 ORA-47401: Realm violation for drop table on SCOTT.EMP ORA-06512: at "DVSYS.AUTHORIZE_EVENT", line 55 ORA-06512: at line 31 SCOTT@ORA> truncate table emp; truncate table emp * ERROR at line 1: ORA-00604: error occurred at recursive SQL level 1 ORA-47401: Realm violation for truncate table on SCOTT.EMP ORA-06512: at "DVSYS.AUTHORIZE_EVENT", line 55 ORA-06512: at line 31 SCOTT@ORA>

5.1.5. Audit log 조회 어떤 위반사항이 발생하였는지 확인 가능

Page 21: Database Vault 2010 03

Database Vault

- - 21

Page 22: Database Vault 2010 03

Database Vault

- - 22

5.2. Command rule (명령어 규칙)

: “Alter System ***** “ 명령어를 Local IP (즉 DB 서버에서만 수행이 가능하도록 설정한

다.) System 계정이라 할지라도 remote 에서 접속한 사용자는 수행이 불가하도록 설정

한다. lkb1 $ sqlplus system/manager@ora SQL*Plus: Release 10.2.0.4.0 - Production on Wed Feb 24 16:18:58 2010 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, Oracle Label Security, Data Mining, Oracle Database Vault and Real Application Testing options SYSTEM@ora> select sys_context('userenv','ip_address') from dual; 접속한 사용자의 IP Address 확인 SYS_CONTEXT('USERENV','IP_ADDRESS') ----------------------------------------------------------------------------------------------------------------------------------- 61.250.123.81 SYSTEM@ora> alter system switch logfile; System altered. SYSTEM@ora>

“규칙 집합” 선택

Page 23: Database Vault 2010 03

Database Vault

- - 23

“생성” 선택

“Enforce Local Address”

Rule Set 에 Rule 을 추가하기

위하여 편집선택

Page 24: Database Vault 2010 03

Database Vault

- - 24

Rule 을 생성함

Rule 표현식 지정 “61.250.99.81” 만 접속허용

Page 25: Database Vault 2010 03

Database Vault

- - 25

Page 26: Database Vault 2010 03

Database Vault

- - 26

“명령 규칙” 선택

“Alter system”명령을 정의

규칙집합 선택함

Page 27: Database Vault 2010 03

Database Vault

- - 27

API 로 작업 가능

1. Rule set 조회

DVO@ORA> select rule_set_name, enabled from dvsys.dba_dv_rule_set; RULE_SET_NAME EN ------------------------------ -- Enabled Y Disabled Y Can Maintain Accounts/Profiles Y Can Maintain Own Account Y Allow Sessions Y Can Grant VPD Administration Y Allow System Parameters Y Drop table Y 8 rows selected. DVO@ORA>

2. Rule set 생성

BEGIN DVSYS.DBMS_MACADM.CREATE_RULE_SET( rule_set_name => 'Enforce Local Address', description => 'Enforce Local Address', enabled => 'Y', eval_options => 2, audit_options => DBMS_MACUTL.G_RULESET_AUDIT_FAIL, fail_options => 2, fail_message => ' ', fail_code => 20461, handler_options => DBMS_MACUTL.G_RULESET_HANDLER_FAIL, handler => ' '); END; /

3. Rule Set 에 추가할 Rule 생성 BEGIN

Page 28: Database Vault 2010 03

Database Vault

- - 28

DVSYS.DBMS_MACADM.CREATE_RULE( rule_name => 'Local Access', rule_expr =>'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ''61.250.123.81'''); END; / 4. 생성된 Rule set 과 Rule 조회 select rs.rule_set_name, rs.enabled, rsr.rule_name, rsr.rule_expr from dvsys.dba_dv_rule_set rs, dvsys.dba_dv_rule_set_rule rsr where rs.rule_set_name=rsr.rule_set_name and rs.rule_set_name='Enforce Local Address'; RULE_SET_NAME EN RULE_NAME RULE_EXPR ------------------------------ -- ------------------------------ ------------------------------------------------------------ Enforce Local Address Y Local Access sys_context('userenv','ip_address')='61.250.123.81'

61.250.123.81 로 접속하는 IP 만 허용하고 그 외의 IP Address 불허함.

5. 명령 규칙 (Command Rule) 생성

BEGIN DVSYS.DBMS_MACADM.CREATE_COMMAND_RULE( command => 'ALTER SYSTEM', rule_set_name => 'Enforce Local Address', object_owner => '%', object_name => '%', enabled => 'DBMS_MACUTL.G_YES'); END; /

6. Command Rule 에 적용된 Rule set 조회 DVO@ORA> select * from dvsys.dba_dv_command_rule where command='ALTER SYSTEM'; COMMAND RULE_SET_NAME OBJECT_OWN OBJECT_NAM ENA PRIVILEGE_SCOPE ------------------------------ ------------------------------ ---------- ---------- --- --------------- ALTER SYSTEM Enforce Local Address % % Y DVO@ORA>

7. Test lkb1 $ sqlplus system/manager@ora SQL*Plus: Release 10.2.0.4.0 - Production on Wed Feb 24 17:19:05 2010 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, Oracle Label Security, Data Mining, Oracle Database Vault and Real Application Testing options SYSTEM@ora> select sys_context('userenv','ip_address') from dual; SYS_CONTEXT('USERENV','IP_ADDRESS') ----------------------------------------------------------------------------------------------------------------------------------- 61.250.123.81 SYSTEM@ora> alter system switch logfile; System altered. SYSTEM@ora>

Local IP Address 로 접속히 정상적으로 switch logfile 이 수행됨.

Page 29: Database Vault 2010 03

Database Vault

- - 29

lkb2 $ sqlplus system/manager@ora1 SQL*Plus: Release 11.1.0.7.0 - Production on Tue Feb 23 10:08:28 2010 Copyright (c) 1982, 2008, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, Oracle Label Security, Data Mining, Oracle Database Vault and Real Application Testing options 10:08:28 SYSTEM@ora1> select sys_context('userenv','ip_address') from dual; SYS_CONTEXT('USERENV','IP_ADDRESS') ------------------------------------------------------------------------------------------------------------------------ 61.250.123.82 Elapsed: 00:00:00.03 10:08:30 SYSTEM@ora1> alter system switch logfile; alter system switch logfile * ERROR at line 1: ORA-01031: insufficient privileges Elapsed: 00:00:04.78 10:08:39 SYSTEM@ora1>

Remote IP Address 로 접속시 권한 부족으로 switch logfile 이 수행안됨.

Page 30: Database Vault 2010 03

Database Vault

- - 30

5.3. Factor (계수)

: “Truncate table “ 명령어를 휴일, 업무시간외, Local 서버에서 접속한 session 에서만 가능하도록 설정한다. 미리 정의된 Domain, Client IP 등을 이용하여 접속 정보를 Check 하여 허용 여부를 판단함

계수 선택

Domain 선택 Network 대역을 선택하여 제한하고자 함

Page 31: Database Vault 2010 03

Database Vault

- - 31

계수의 Identifier 생성함

“허용하고자 하는 IP” ID

Page 32: Database Vault 2010 03

Database Vault

- - 32

“편집” 선택

“Client IP” 대역 선택

“생성” 선택

Page 33: Database Vault 2010 03

Database Vault

- - 33

접속 불가 id 생성

“편집” 선택

“신뢰하지 않음”

Page 34: Database Vault 2010 03

Database Vault

- - 34

“61.250.123.82” 이상 불가

“61.250.123.81” 이하 불가

“Rule Set” 정의

Page 35: Database Vault 2010 03

Database Vault

- - 35

“생성”

“DBA “ 작업 시간 설정

Ruleset 에 Rule 추가

Page 36: Database Vault 2010 03

Database Vault

- - 36

4 개의 “Rule” 생성

“Scott” 계정만 허용

Page 37: Database Vault 2010 03

Database Vault

- - 37

“61.250.99.81, 82” IP 만 허용

“주말 제외”

Page 38: Database Vault 2010 03

Database Vault

- - 38

“업무시간에만”

4 개 Rule 생성 “완료”

Page 39: Database Vault 2010 03

Database Vault

- - 39

TEST 1) 2. 21 (일) 오후 07 시 00 에 local 에서 Scott 계정으로 접속하여 작업 수행

=> Command Rule 위반으로 작업 수행 불가 lkb1 $ date 2010 년 2 월 21 일 일요일 오후 07 시 00 분 03 초 lkb1 $ sqlplus scott/tiger@ora SQL*Plus: Release 10.2.0.4.0 - Production on Sun Feb 21 19:00:06 2010 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, Oracle Label Security, Data Mining, Oracle Database Vault and Real Application Testing options SCOTT@ora> select dvf.f$domain from dual; F$DOMAIN ------------------------------------------------------------------------------------------------------------------------------------Highly Secured Internal Network SCOTT@ora> truncate table tb1; truncate table tb1 * ERROR at line 1: ORA-00604: error occurred at recursive SQL level 1 ORA-47400: Command Rule violation for truncate table on SCOTT.TB1 ORA-06512: at "DVSYS.AUTHORIZE_EVENT", line 55 ORA-06512: at line 31 SCOTT@ora> show user USER is "SCOTT" SCOTT@ora> quit date Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, Oracle Label Security, Data Mining, Oracle Database Vault

Page 40: Database Vault 2010 03

Database Vault

- - 40

and Real Application Testing options 2) 2. 25 (목) 오후 05 시 50 에 local 에서 scott 계정으로 접속하여 작업 수행

=> Command Rule 정상 수행. lkb1 $ date 2010 년 2 월 25 일 목요일 오후 05 시 50 분 05 초 lkb1 $ sqlplus scott/tiger@ora SQL*Plus: Release 10.2.0.4.0 - Production on Thu Feb 25 17:50:09 2010 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, Oracle Label Security, Data Mining, Oracle Database Vault and Real Application Testing options SCOTT@ora> select dvf.f$domain from dual; F$DOMAIN ------------------------------------------------------------------------------------------------------------------------------------Highly Secured Internal Network SCOTT@ora> !date 2010 년 2 월 25 일 목요일 오후 05 시 50 분 35 초 SCOTT@ora> truncate table tb1; Table truncated. SCOTT@ora> 3) 2. 25 (목) 오후 05 시 50 에 local 에서 System 계정으로 접속하여 작업 수행

=> Command Rule 위반으로 작업 수행 불가. SCOTT@ora> conn system/manager Connected. SYSTEM@ORA> create table t1 (a varchar2(10)); Table created. SYSTEM@ORA> truncate table t1; truncate table t1 * ERROR at line 1: ORA-00604: error occurred at recursive SQL level 1 ORA-47400: Command Rule violation for truncate table on SYSTEM.T1 ORA-06512: at "DVSYS.AUTHORIZE_EVENT", line 55 ORA-06512: at line 31 SYSTEM@ORA> 4) 2. 23 (화) 오후 03 시 50 에 remote 에서 scott 계정으로 접속하여 작업 수행

=> Command Rule 정상 수행.

Page 41: Database Vault 2010 03

Database Vault

- - 41

** 2 번 노드에서 수행 lkb2 $ ifconfig -a lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 61.250.123.82 netmask ffffff80 broadcast 61.250.123.127 groupname sc_ipmp0 qfe1: flags=1008843<UP,BROADCAST,RUNNING,MULTICAST,PRIVATE,IPv4> mtu 1500 index 4 inet 172.16.0.129 netmask ffffff80 broadcast 172.16.0.255 qfe2: flags=1008843<UP,BROADCAST,RUNNING,MULTICAST,PRIVATE,IPv4> mtu 1500 index 3 inet 172.16.1.1 netmask ffffff80 broadcast 172.16.1.127 clprivnet0: flags=1009843<UP,BROADCAST,RUNNING,MULTICAST,MULTI_BCAST,PRIVATE,IPv4> mtu 1500 index 5 inet 172.16.193.1 netmask ffffff00 broadcast 172.16.193.255 lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1 inet6 ::1/128 qfe1: flags=2008841<UP,RUNNING,MULTICAST,PRIVATE,IPv6> mtu 1500 index 4 inet6 fe80::a00:20ff:fef2:aeb1/10 qfe2: flags=2008841<UP,RUNNING,MULTICAST,PRIVATE,IPv6> mtu 1500 index 3 inet6 fe80::a00:20ff:fef2:aeb2/10 lkb2 $ lkb2 $ sqlplus scott/tiger@ora1 SQL*Plus: Release 11.1.0.7.0 - Production on Tue Feb 23 15:50:44 2010 Copyright (c) 1982, 2008, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, Oracle Label Security, Data Mining, Oracle Database Vault and Real Application Testing options 15:50:45 SCOTT@ora1> select dvf.f$domain from dual; F$DOMAIN ------------------------------------------------------------------------------------------------------------------------ Highly Secured Internal Network => 접속 허용함 Elapsed: 00:00:00.10 15:50:50 SCOTT@ora1> 15:50:51 SCOTT@ora1> !date 2010 년 2 월 23 일 화요일 오후 03 시 50 분 56 초 => 작업 허용시간 15:50:56 SCOTT@ora1> truncate table tb1; Table truncated. Elapsed: 00:00:00.09 15:51:00 SCOTT@ora1>

Page 42: Database Vault 2010 03

Database Vault

- - 42

6. 끝맺음

오라클 Database Vault 는 오라클 DBMS 내의 또 다른 방화벽 기능으로서 DB 관라지

의 막강한 권한을 제한하고(SYS, SYSTEM) 의 외부 침입자, 내부 관리자등의 접근을 제한할 수 있는 솔루션이다. 또한 중요 서비스 시간대에서 명령어 실행 제한, 의심스러운 사용자 데이터 접근을 사전에 차단함으로써 고객사 데이터를 안전하고 투명하게 보호할 수 있다.

Page 43: Database Vault 2010 03

Database Vault

- - 43

7. Append 7.1. How to enable database vault using dvca for newly created database [ID 473610.1]

DVCA loads the Database Vault schema objects into the new database, creates the

DV_OWNER and optional DV_ACCTMGR accounts, and deploys the Database Vault

Administrator application for the database

For 11g

$ dbca -silent -configureDatabase -SourceDB score -sysDBAUsername sys -sysDBAPassword oracle -addDBOption DV -dvUsername dvo -dvUserPassword Oracle1234#

Preparing to Configure Database 2% complete 5% complete 28% complete Adding Oracle Database Vault 45% complete 62% complete 85% complete Completing Database Configuration Oracle Enterprise Manager 11g Database Control Release 11.1.0.6.0 Copyright (c) 1996, 2007 Oracle Corporation. All rights reserved. EMHOME=/opt/11g/dv11g.idc.oracle.com_score 100% complete Look at the log file "/opt/cfgtoollogs/dbca/score/score.log" for further details.

For 10g

$ export ORACLE_SID=dvdb

$ dvca -action option -oh $ORACLE_HOME -s_path /tmp -logfile /tmp/log.out -owner_account dvo -owner_passwd Oracle1234# -jdbc_str jdbc:oracle:oci:@dvdb -sys_passwd sys -nodecrypt -silent

DVCA started Executing task RESTART_SERVICES_PATCH MANAGE_INSTANCE stop isqlplus MANAGE_INSTANCE stop OC4J MANAGE_LISTENER start listener MANAGE_LISTENER start listener result=/opt/10g/bin/dvca_start_listener.sh,1, MANAGE_LISTENER start listener log= LSNRCTL for Linux: Version 10.2.0.3.0 - Production on 10-JAN-2008 23:23:07 Copyright (c) 1991, 2006, Oracle. All rights reserved. ..... Executing task INIT_RECYCLEBIN Executing task RESTART_SERVICES MANAGE_INSTANCE stop isqlplus MANAGE_INSTANCE stop OC4J MANAGE_INSTANCE stop RDBMS MANAGE_LISTENER stop listener MANAGE_LISTENER start listener MANAGE_INSTANCE start RDBMS MANAGE_INSTANCE start OC4J

Page 44: Database Vault 2010 03

Database Vault

- - 44

SQL>select * from v$option where parameter like '%Vault%'; PARAMETER VALUE ----------------------------------

Oracle Database Vault TRUE

7.2. How to Disable / Enable Database Vault (Unix) For Disable DBMS shutdown $ cd $ORACLE_HOME/rdbms/lib $ make -f ins_rdbms.mk dv_off $ cd $ORACLE_HOME/bin $ relink oracle $ SQLPLUS / as sysdba SQL>startup $ dvca -action disable -service TARDA1 -sys_passwd test -owner_account -owner_passwd test123#_ -logfile ./dvca.log -nodecrypt –silent SQL> drop user DVF cascade; SQL> drop user DVSYS cascade; SQL> drop user <dv_owner_username> cascade; SQL> drop user <dv_account manager> cascade;

For Enable

$ cd ORACLE_HOME/rdbms/lib $ make -f ins_rdbms.mk dv_on $ cd $ORACLE_HOME/bin $ relink oracle $ SQLPLUS / as sysdba SQL>startup $ dvca -action option -oh D:\oracle\dbs102\product\10.2.0\db_1 -jdbc_str dbc:oracle:oci:@DBS102 -sys_passwd oracle -owner_account dvowner -owner_passwd oracle123# -logfile ./dvca.log -nodecrypt –silent