중요데이터암호화와 특권사용자통제를위한 베스트프랙티스 한국오라클 DB Security Solution Specialist 노형준
Agenda Big Picture of Oracle DB Security Advanced Security Option Database Vault Summary 2
Big Picture of Oracle DB Security 3
Database Security 사전예방 모니터링 / 감지 관리보안 Encryption Redaction & Masking Privileged User Controls Activity Monitoring Database Firewall Auditing and Reporting Sensitive Data & Database Discovery Configuration & Vulnerability Scan Patch Automation 4
DB Security Big Picture Oracle Audit Vault Audit consolidation Oracle Database Firewall Applications Network SQL Monitoring and Blocking Encrypted Database Encrypted Backups Procureme Auditing Authorization Authentication Encrypted Traffic Redaction Oracle Transparent Advaced Security Data Encryption Option ( Transparent Data Encryption ) Oracle Database Vault Unauthorized DBA Activity Multi-factor Authorization DB Consolidation Security Oracle Label Security Data Masking Oracle Masking 5
Advanced Security Option 6
Database Security 사전예방 모니터링 / 감지 관리보안 Encryption Redaction & Masking Privileged User Controls Activity Monitoring Database Firewall Auditing and Reporting Sensitive Data & Database Discovery Configuration & Vulnerability Scan Patch Automation 7
안전행정부개인정보보호법 : 기술적보호조치 개인정보의안전성확보조치기준고시및해설서.hwp ( p38 ) 8
Oracle 암호화알고리즘 미국국립표준기술연구소 ( NIST ) 규정 FIPS-Compliant 알고리즘사용 - AES : Federal Information Processing Standard (FIPS) 197 - TDES : Federal Information Processing Standard (FIPS) 46-3 Oracle ASO : Global 표준 AES (128, 192, 256), Triple DES 168 알고리즘지원 AES, 3DES 활용 Oracle 보안 Solution 은미국연방정부정보처리표준 FIPS 140-1 인증보유 Algorithm Key Size Name AES (Advanced Encryption Standard) AES (Advanced Encryption Standard) AES (Advanced Encryption Standard) Three DES (Data Encryption Standard) 128 bits AES128 192 bits(default) AES192 256 bits AES256 168 bits 3DES168 9
Advanced Security Option Transparent Data Encryption Encrypted Data Disk Backups Exports Applications Managed Keys Off-Site Facilities Columns or Tablespaces 암호화 안전한암호화 Key 관리 Database files on disk and on backups 보호 DB 에 Write 시암호화, Read 시복호화 적용에따른 Application 변경없음, 낮은부하 Application 변화, 성능변화낮은최적의 DB 암호화솔루션 10
SGA 1 1 2 DBWR 1 2 Advanced Security Option Column, Tablespace 암호화 2 10g 3 3 3 4 4 4 Server Process 3 4 암호화복호화 4 3 Column 암호화 SQL Result 3 4 3 SGA 4 3 3 Server Process 3 4 1 4 4 11g 복호화 1 DBWR 1 2 2 2 암호화 Tablespace 암호화 SQL No 어플리케이션소스수정 1 3 2 4 일반테이블스페이스 일반블록암호화대상블록특정칼럼만암호화된블록전체암호화된블록 2 1 3 4 일반테이블스페이스암호화된테이블스페이스 SQL + Encrypt/Decrypt Function + DB Kernel 에서암 / 복호화가수행되어안정적인성능을보장 암 / 복호화의자동수행을통해관리항목증가를최소화 어플리케이션에투명하게 ( 소스수정없이 ) 적용 11
Advanced Security Option 안전한 Key 관리 마스터암호화키 ( 암호화 ) Column 암호화키 ( 암호화 ) Tablespace 암호화키 ( 암호화 ) 접근암호입력 별도보안관리자에의해 전자지갑관리 전자지갑 (File or HSM) 암호화키에의해데이터자동암호화 보다안전하게암호화데이터를관리하기위해 3 중의암호화키관리구조를채택 HSM (Hardware Security Module) 을통해성능및암호화키에대한높은안전성을제공 12
Advanced Security Option File 포함전구간암호화 SQL Layer Buffer Cache SSN = 987-65-.. expdp. Encrypted Export file @#4f9kq90 b23490bv@ #$9vj943)IB 4390#90w3 b0aqer9 P[ 32 Credit Card # 주민등록번호주소전화번호 Oracle Database data blocks *M$b@^s%&d7 undo blocks temp blocks redo logs flashback logs 디스크에저장되는데이터뿐만아니라 undo block, temp block, redo log, flashback log 에대한암호화를지원 데이터백업을위해일반적으로많이사용되는 RMAN 및 EXP/IMP 시암호화지원 13
Advanced Security Option 쉬운운영관리 데이터에대한암호화수행을위해추가적인관리항목이발생하거나새로운기술을습득하여야하는관리자의업무부하를최소화할수있는방안을제공합니다. 기존 Oracle 관리기술을그대로사용 암 / 복호화 - Column 암호화 CREATE TABLE employee ( first_name VARCHAR2(128), last_name VARCHAR2(128), emp_id NUMBER, salary NUMBER(6) ENCRYPT using 'AES256' ); create unique index idx_card_id on secure_info(card_id); ^#^*> &$! ALTER TABLE employee MODIFY (salary DECRYPT); - Tablespace 암호화 CREATE TABLESPACE securespace DATAFILE /home/user/oradata/secure01.dbf SIZE 150M ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT); [GUI 관리툴 (EM) 에서암 / 복호화관리 ] 14
Advanced Security Option 성능저하최소 신규시스템적용및기존시스템에암호화솔루션을적용할모든경우에도성능저하현상을최소화합니다. 52% Oracle TDE 적용전후 CPU 사용현황 ( 암호화적용후 CPU 평균사용량 2% 증가 ) Oracle TDE 적용전후 TPM 변화량 구분평균 TPM 비율 TPM 측정 41% 43% 10g 11433 100% 11g 11448 100.1% 11g ( 암호화 ) 11184 97.82% 11g Version Up 암호화적용 11g 암호화시 10g 대비 TPM 이 97.82% ( 약 2.18% 정도의감소발생 ) 15
Advanced Security Option 신속한초기 Data 암호화 암호화솔루션도입으로인해기존데이터를암호화할때다운타임을최소화할수있도록 On-line 상에서이를수행하거나가장빠르게수행할수있는방안을제공 Change Materialized View [ Online Redefinition] [ 가장빠른암호화 ] CTAS/I TAS [ SOURCE] [ TARGET] Network Replication 1. 서비스를유지하면서암호화를수행할수있는 On-line Redefinition 기능을제공 2. 동일 DB 내에서 Parallel CTAS 를통해가장빠른암호화수행가능 3. 새로운장비도입과같은물리적으로분리되어있는환경에서 Oracle Replication 솔루션을통해서비스를유지하면서암호화수행 16
Tablespace 암호화 ( AES128 ) 1. 암호화 Key 및 Wallet 생성 -- sqlnet.ora : wallet 생성위치명시 ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METH OD_DATA=(DIRECTORY=/oracle/app/oracle/product/11.2.0/dbs))) -- Master key 생성 SQL> alter system set encryption key identified by "oracle123!"; 2. 암호화 Tablespace 생성 -- 보통 Tablespace CREATE TABLESPACE "POC_TABLESPACE" DATAFILE '/oracle/data/korea/poc_table.dbf' SIZE 400M LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; -- 암호화 Tablespace CREATE TABLESPACE "POC_TABLESPACE_ENC" DATAFILE '/oracle/data/korea/poc_table_enc.dbf' SIZE 400M LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ENCRYPTION USING 'AES128' DEFAULT STORAGE(ENCRYPT); 3. 암호화확인 SQL> select tablespace_name, encrypted from dba_tablespaces where tablespace_name like 'POC%' order by 2; TABLESPACE_NAME ENC ------------------------------ --- POC_TABLESPACE NO POC_TABLESPACE_ENC YES POC_INDEX_ENC YES 4. 암호화 Table 생성 create table customers ( ~~~) Tablespace POC_TABLESPACE_ENC ; create table orders ( ~~~) Tablespace POC_TABLESPACE_ENC ; Alter table emp move tablespace POC_TABLESPACE_ENC ; EXEC DBMS_REDEFINITION.START_REDEF_TABLE( POC', EMP', EMP_TEMP'); 17
Column 암호화 ( AES128 ) Column 암호화적용 create table customers ( customer_id number(10) encrypt using 'AES128' 'NOMAC' NO SALT, customer_name varchar2(20) encrypt using 'AES128' 'NOMAC' NO SALT, birth_year varchar2(2), birth_month varchar2(2), birth_day varchar2(2), security_id varchar2(14), card_company_id varchar2(4), credit_card_id varchar2(20) encrypt using 'AES128' 'NOMAC' NO SALT, phone1 varchar2(15) encrypt using 'AES128' 'NOMAC' NO SALT, phone2 varchar2(15) encrypt using 'AES128' 'NOMAC' NO SALT, zip varchar2(10), address01 varchar2(256) encrypt using 'AES128' 'NOMAC' NO SALT, address02 varchar2(256) encrypt using 'AES128' 'NOMAC' NO SALT ); Column 암호화적용 create table orders ( order_id number(10), order_date varchar2(6), product_name varchar2(128), order_price number(10), order_num number(10), customer_id number(10) encrypt using 'AES128' 'NOMAC' NO SALT, security_id varchar2(14) encrypt using 'AES128' 'NOMAC' NO SALT, credit_card_id varchar2(20) encrypt using 'AES128' 'NOMAC' NO SALT, phone varchar2(15) encrypt using 'AES128' 'NOMAC' NO SALT, zip varchar2(10), address01 varchar2(256) encrypt using 'AES128' 'NOMAC' NO SALT, address02 varchar2(256) encrypt using 'AES128' 'NOMAC' NO SALT ); 18
Advanced Security Option Downtime 없는 DB 암호화 Online Redefinition 을이용한무중단암호화 [ Downtime 최소화 ] 실시간트랜잭션 Transform( 암호화 ) *M$b@^s%&d7 암호화에따른영향도최소화 Online 상태에서서비스무중단암호화가능 DML 변경이력수집 Transform ( 암호화 ) 암호화테이블 *M$b@^s%&d7 Replication Solution 인 Materialized View 기능을이용해 Online Redefinition 수행 관련 Objects (procedure, function, package) 의 Status 변경간단 19
Advanced Security Option Downtime 없는 DB 암호화 Online Redefinition 작업 STEP 1) 대상 Table 과동일한암호화된 Tablespace 에임시테이블생성. 2) Redefinition 시작 SQL>exec dbms_redefinition.start_redef_table(uname => username', orig_table=> source_table', int_table=> temp_table'); 3) DML Sync 하기위한임시 Table 선언및 Sync sql>exec dbms_redefinition.sync_interim_table( username', soruce_table', temp_table'); 4) Redefinition 종료 ( 임시 Table 에처리된 DML 반영및원본, 임시 Table 변경 ) sql>exec dbms_redefinition.finish_redef_table( username', source_table', temp_table'); 5) Index and Constraints 조치 (Option) 6) 관련 Objects compile (Procedure, Function, Package) 20
Advanced Security Option 약간의 Downtime DB 암호화 Parallel & Fastest CTAS ( Create 암호 Table As Select ) or ITAS ( Insert 암호 Table As Select ) 활용 [ Downtime 최소화 ] PQ 1 Parallel processor PQ 2 Parallel processor PQ 3 Parallel processor [ Parallel 최대활용하여 Downtime 최소화 ] CTAS or ITAS 문장을이용한가장빠른암호화방식 System Resource 를최대사용하는방식으로 DB Downtime 최소화 Data 재구성효과발생 Index 구성도 Parallel 사용 21
Advanced Security Option 약간의 Downtime DB 암호화 CTAS/ITAS 작업 STEP 1) Source Table 과동일한암호화된임시테이블생성. 1-1) CTAS 의경우 sql>create /*+ parallel append */ encrypt_table as select * from source_table; sql>create /*+ parallel append */ encrypt_table tablespace encrypt_tablespace as select * from source_table; 1-2) ITAS 의경우 sql>insert /*+ parallel append */ into encrypt_table select * from source_table; 2) Rename Original Table sql> alter table rename source_table to temp_source_table; sql> alter table rename encrypt_table to source_table; 3) Create Index and constraints 22
Data Redaction 민감한 Application Data 변조처리 Advanced Security Option 조회허용 User 조회불가 User Policy Credit Card # 5105-1051-0510-5100 5454-5454-5454-5454 5500-0000-0000-0004 Application User name, IP address, application context, and other factors 에따라운영 Data 변조 Display 가능 Application 에투명하게적용 최소부하로운영서버 Data 변조기능지원 DB 내부우회경로원천차단 개인정보보유운영시스템적용조회 Level 분리하여운영 23
Full Data Redaction 기능변환기능 Stored Data 10/09/1992 Redacted Display 01/01/2001 Partial 987-65-4328 XXX-XX-4328 RegExp first.last@example.com [hidden]@example.com Random 5105105105105100 5500000000000004 24
Data Redaction 장점 Application 투명성 사용되는모든 Column data types 지원 Table, View, Materialized view Redacting 가능 Data type 유지및추가로정의가능 Database cursor sharing 유지가능 Database query plan 동일 Cache, buffers, storage 내 Data 를변경하지않음 Backup & restore, upgrade & patch, export/import, replication 과같은운영 operation 에변동없음 25
Data Redaction 장점관리편의성 Oracle Enterprise Manager or Command-line API 통해운영가능 Common PCI and PII data 에대한 Redaction format library 제공 Database 중심의중앙집중적인정책관리 즉각적인정책반영, 현재 Active sessions 까지가능 Database kernel 내동작, 별도설치필요없음 26
Application Screen Before Redacting 27
Application Screens After Redacting DBMS_REDACT.ADD_POLICY( object_schema => 'CALLCENTER', object_name => 'CUSTOMERS' column_name => 'SSN'... 28
Data Redaction in Oracle Enterprise Manager 정책관리 29
Data Redaction ( Partial ) 1.Redaction Policy 삭제 -- Drop Redaction Policy BEGIN DBMS_REDACT.drop_policy(object_schema => RED',object_name => 'EMP_RED',policy_name => 'Employee Redaction Test' ); END; / 2.Redaction Policy 생성 BEGIN DBMS_REDACT.add_policy(object_schema => 'RED',object_name => 'EMP_RED',policy_name => 'Employee Redaction Test',expression => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') NOT IN ( ''RED'' ) OR SYS_CONTEXT(''USERENV'',''SESSION_USER'') IS NULL',column_name => 'JUMIN',function_type => DBMS_REDACT.PARTIAL,function_parameters => 'VVVVVVVFVVVVVVV,VVVVVVV- VVVVVVV,*,8,14'); END; / 3.Redaction 대상 Table 조회 select * from red.emp_red ; EMPNO ENAME JOB JUMIN ---------- ---------- --------- -------------------- 7369 SMITH CLERK 7369736-******* 7499 ALLEN SALESMAN 7499749-******* 7521 WARD SALESMAN 7521752-******* 7566 JONES MANAGER 7566756-******* 7654 MARTIN SALESMAN 7654765-******* 7698 BLAKE MANAGER 7698769-******* 7782 CLARK MANAGER 7782778-******* 4. 일반 Table 조회 select * from red.emp_no_red; EMPNO ENAME JOB JUMIN ---------- ---------- --------- ------------------------------ 7369 SMITH CLERK 7369736-7369736 7499 ALLEN SALESMAN 7499749-7499749 7521 WARD SALESMAN 7521752-7521752 7566 JONES MANAGER 7566756-7566756 7654 MARTIN SALESMAN 7654765-7654765 7698 BLAKE MANAGER 7698769-7698769 7782 CLARK MANAGER 7782778-7782778 30
Data Redaction ( Partial ) 1.Redaction 대상 Table 조회 oracle@[korea1]:/home/oracle # sqlplus app/app 2.Redaction 대상 Table 우회유출시도 oracle@[korea1]:/home/oracle # sqlplus app/app SQL> select * from red.emp_red ; EMPNO ENAME JOB JUMIN ---------- ---------- --------- -------------------- 7369 SMITH CLERK 7369736-******* 7499 ALLEN SALESMAN 7499749-******* 7521 WARD SALESMAN 7521752-******* 7566 JONES MANAGER 7566756-******* 7654 MARTIN SALESMAN 7654765-******* 7698 BLAKE MANAGER 7698769-******* 7782 CLARK MANAGER 7782778-******* SQL >create table emp_red_breach 2 as select * from red.emp_red; as select * from red.emp_red * ERROR at line 2: ORA-28081: Insufficient privileges - the command references a redacted object. 31
Database Vault 32
Database Security 사전예방 모니터링 / 감지 관리보안 Encryption Redaction & Masking Privileged User Controls Activity Monitoring Database Firewall Auditing and Reporting Sensitive Data & Database Discovery Configuration & Vulnerability Scan Patch Automation 33
DBA Database Administrator DBA should manage Database, Not Data 34
Database Users and Security 관리 Tuning Recovery Managing DBAs Create Security Policies to protect data Senior DBA Security Admin Accounts Admin Junior DBA Create and manage Database Users Backup Patch Install Application user Separation Of Duties 35
접근통제의중요성허용된사용자에대해서도안전한접근제어필요 비인가된 IP 주소 재무담당자 비인가된 DB 접속프로그램 정당한권한을가진사용자도인가된환경으로부터접근인지를항시점검 사용자의실수혹은고의로수행될수있는악의적행위 ( 명령어 ) 를차단가능 DB 서버내부에서의접근및우회접근시도에대한사전차단이필수 36
Oracle Database Vault 내부관리자, 사용자통제 Application Procurement HR Finance select * from finance.customers Application DBA DBA 누가, 어디서, 언제, 어떻게 Data 에접근하는지를 Rules, Factors 로통제 관리자 Application Data 접근에대한통제 Application 변경없음, Enterprise Data Governance 강화 임의적인 DB 변경관리통제 37
Oracle Database Vault 데이터베이스내확실한권한분리및통제 데이터베이스내슈퍼유저인 DBA 권한을가진사용자도보호영역의데이터에는접근불가능 보안관리자가접근을허용한유저만이보호영역의데이터에접근가능 성능저하없이기존 Application 에쉽게적용가능 DBA HR DBA select * from HR.emp HR HR HR 데이터보호영역 예 ) 슈퍼유저 (DBA 권한보유사용자 ) 도인사데이터나재무데이터에는접근불허 재무 DBA Fin Fin 재무데이터보호영역 더이상모든데이터에접근권한을가진유저는존재하지않음 38
Oracle Database Vault 다양한조건에의한접근및실행제어 Database Vault 에서제공하는주요조건 사용자명사용자 IP 프로그램명접근시간 예 : 주중 ( 월 ~ 금 ) 09:00 ~ 18:00 사이에는 HR 스키마에대한 Alter,Drop Table 작업을하지못한다. 월요일 14:25 분 HR.CUSTOMERS 에대한 Alter,Drop Table HR DBA 월요일 19:01 분 HR.CUSTOMERS 에대한 Alter,Drop Table HR 스키마 39
Oracle Database Vault 상세접근제어보고서자동생성 다양한접근제어보고서를실시간으로확인 보호영역접근이력보고서 허가되지않은명령어실행차단이력보고서 40
Kernel 방식접근제어 Oracle Database Vault 1 모든우회접근차단가능 (DBA 를통한무제한적인데이터접근도차단가능 ) 접근제어대상테이블에대한 View, Synonym, PL/SQL, Dynamic SQL 등의우회수단으로유출을시도해도모두차단 우회적인데이터유출시도차단 무제한적인데이터접근차단 View Synonym PL/SQL Dynamic SQL 중요데이터 DBA Database Vault - 보안영역 (Realm) 41
Kernel 방식접근제어 Oracle Database Vault 2 로컬접근통제가가능 Database Vault는 Kernel 내부에서접근제어메커니즘이동작하기때문에로컬접근도모두통제외부접근제어솔루션은직접접근통제불가 Telnet 접속후로컬접근 H/W 장비콘솔을통해로컬접근 SQL * Net BEQ 중요데이터 외부접근제어솔루션의로컬접근대비모듈은감사기능정도만수행 42
Kernel 방식접근제어 Oracle Database Vault 3 별도의서버가불필요 ( 동일데이터베이스 Kernel 내부에추가설치되는방식으로추가비용발생없음 ) 외부접근제어솔루션의경우에는보안서버용하드웨어가별도로필요하기때문에추가적인비용발생 Database Vault Oracle Database OS 관리, 설정 웹을통한원격접속 ( 보안정책설정 ) 43
A 사 : DB Vault 사례 AP 우회침투를통한 Data 유출방지방안 WAS / AP 서버 Internet 정형화된접근 Oracle ASO : TDE 외부접속자 외부망 정형쿼리 비정형쿼리 정형화된접근 Oracle DB Vault Client 접근제어 DB 서버 내부사용자 내부망 DB 접근통제보안이슈 보안대책 악의적인외부 / 내부사용자가 DB 서버에접속할때 DB 보안서버를경유하지않고 AP 서버를통한우회접근통해중요정보유출가능 Server 접근제어 : TCP*Wrapper 사용 IP 접근차단 ( 허용 IP 만접속가능 ) DB 접근제어 : SQL*NET.ora ( TCP.INVITED_NODES 허용 IP 만접속가능 ) DB Vault : SQL*Plus 차단 ( only DBA IP, sys or system 접속가능 ) ASO ( TDE ) : DB Tablespace 암호화적용으로대량 Data 유출방지 44 44
Summary 45
Database Security 사전예방 모니터링 / 감지 관리보안 Encryption Redaction & Masking Privileged User Controls Activity Monitoring Database Firewall Auditing and Reporting Sensitive Data & Database Discovery Configuration & Vulnerability Scan Patch Automation 46
Oracle DB Security Composition ASO AVDF DB Vault Data Masking Label Security 47
Oracle DB Security Summary 영역 Option / Product 요약 DB 암호화 ASO (TDE) - Column 단위 (10g), Table Space 단위암호화지원 (11g 이후 ) - 기본이지만, 가장중요 - 최상의성능, 어플리케이션무변화 Masking ASO (Redaction) - Display Masking - TDE 보완 Data Masking - 중요데이타의변조후개발, 테스트에이용 ( 데이타정합성유지 ) 접근제어 감사 / 모니터링 Database Vault Label Security AVDF - SoD (Separation of Duty) - DBA 제어 : DBA 는 Database 관리자이나, Data 관리자는아님 - 행단위접근제어 - Data 의통합이 Data 접근의통합은아님 - White List / Black List 를통한 SQL 모니터및통제 - 유사시에대비 : 방어에는실패했어도사후추적은가능해야함 48