141014_데이터베이스보안_VPD(Virtual Private Database)
by 담배맛구마1. VPD의 정의 |
1) Virtual Private Database |
2. VPD 동작원리 |
Virtual Private Database inserts an additional WHERE clause to any SQL statement |
3. VPD 적용 전/후 |
i) VPD 적용 전 select * from customers; -- (O) 모든 고객의 리스트 조회가 가능하다. ii) VPD 적용 후 select * from customers; -- (X) 모든 고객의 리스트 조회가 불가능하다. select * from customers where account_mgr_id = 사원번호; -- (O) 자신이 관리하는 고객들만 조회가 가능하다. 즉, 자신이 해당 테이블을 조회할 권한이 있다고 하더라도 |
4. VPD를 사용함으로써 얻는 결과 |
- 테이블에 행 단위 접근 제어를 할 수 있다.(기존의 View 통해서도 가능하다.) - sys로 접근하면 VPD가 적용이 안된다. |
5. VPD예제(교재p22) |
1) VPD를 적용해서 아래 Select의 사용을 제어하겠다. select first_name, job_id, department_id, salary, commission_pct from employees; 2) VPD 적용를 적용하겠다. DBMS_RLS(DBMS Row Level Security) 패키지의 ADD_POLICY 프로시저를 사용해서 VPD를 적용할 수 있다. 여기서 자세한 내용을 볼 수 있다.(http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_rls.htm#ARPLS67721) i) 정책을 진술해줄 함수를 지정해주어야 한다. ADD_POLICY 프로시저의 파라미터에 필요하다.(policy_function) CREATE OR REPLACE FUNCTION check_dept ( p_schema varchar2, p_objname varchar2 ) return varchar2 IS v_sql varchar2(100) := 'department_id = 30' -- 조건절(WHERE)에 쓸 문자열 BEGIN return (v_sql); END; / ii) DBMS_RLS의 ADD_POLICY 함수를 호출한다. BEGIN object_schema => 'hr', -- 누구스키마 object_name => 'employees', -- 어떤 테이블? policy_name => 'limit_employees', --정책의 이름 policy_function => 'check_dept', -- 정책을 진술해 줄 함수의 이름 statement_types =>'select' -- 어떤 상황에서 정책을 적용할 것인가 ); END; / 3) VPD 정책 제거 BEGIN dbms_rls.drop_policy('hr', 'employees', 'LIMIT_EMPLOYEES'); END; ※) select * from v$vpd_policy; -- 적용된 VPD정책이 다보여 ※) Column단위로 정책 추가 BEGIN dbms_rls.add_policy ( object_schema => 'hr', -- 누구스키마 object_name => 'employees', -- 어떤 테이블? policy_name => 'limit_employees', --정책의 이름 policy_function => 'check_dept', -- 정책을 진술해 줄 함수의 이름 statement_types =>'select', -- 어떤 상황에서 정책을 적용할 것인가 sec_relevant_cols => 'salary, commission_pct', -- Masking할 Column 명 sec_relevant_cols_opt => dbms_rls.ALL_ROWS -- 기본 정보들은 다 보여주되 민감한 정보는 Masking ); END; / |
※ ADD_POLICY 프로시저에 대한 레퍼런스 캡쳐 뜸 |
(http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_rls.htm#ARPLS67721) |
'한아전(독학사)의추억' 카테고리의 다른 글
Fedora20에 APM(Apache/PHP/MySQL) 설치 및 연동 (2) | 2014.10.15 |
---|---|
141015_정보보호법_ISMS구축절차와 산출물 (0) | 2014.10.15 |
141014_네트워크I_수업내용정리 (0) | 2014.10.14 |
140903_정보보호법_거버넌스 (0) | 2014.09.03 |
140710_Reversing_For, While Disassemble (0) | 2014.07.10 |
블로그의 정보
정윤상이다.
담배맛구마