141103_데이터베이스보안_TDE(Transparent Data Encryption)
by 담배맛구마0. TDE(Transparent Data Encrypteion) 특징
1. 데이터베이스 레벨에서 자동으로 암복호화 방식을 수행한다.
2. 디스크에서 쓰는 과정에서 암호화하고, 사용자가 읽기를 시도할 때 복호화 한다.
1. Column Level암호화
MASTER Key가 TDE Table의 Key들을 암호화/복호화하고
TDE Table Key들이 Table의 Column을 암호화/복호화 한다.
1) Create Master Key
전자지갑(Software Wallet)이나 HSM(Hardware Security Module) 방식으로 구현한다.
1-1) 전자지갑 만들기
Oracle을 설치한 경로에
<%설치경로%>\app\<%계정명%>\product\11.2.0\dbhome_1\NETWORK\ADMIN에 가면
sqlnet.ora라는 File이 있다.
이 파일이 전자지갑 생성에 대한 설정파일인 것 같다.
이 파일에다가 전자 지갑의 생성 위치를
<%설치경로%>\app\<%계정명%>\admin\orcl\ 으로 지정해주자.
다음과 같이 sqlnet.ora에 추가해준다.
ENCRYPTION_WALLET_LOCATION=
(SOURCE=
(METHOD=FILE)
(METHOD_DATA=
(DIRECTORY=<%설치경로%>\app\<%계정명%>\admin\orcl)
)
)
그리고 SYS로 접속해서 전자 지갑을 추가해준다.
sqlplus.exe sys as sysdba
ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY ORATDE;
2) Aplly
그리고 HR의 employees 테이블의 salary column을 암호화 해주자
현재 시스템에 암호화된 Column 리스트가 있는 DBA_ENCRYPTED_COLUMNS를 조회해보자.
3) Q
3-1) 암호화 알고리즘에는 무엇이 있는가?
em으로 들어가서 보면 AES 128/192/256과 3DES 168을 지원한다.
3-2) 인덱스 사용 여부 - SALT vs NO_SALT
※) 전자지갑 OPEN 하기
인스턴스를 다시 시작하다보면 전자 지갑상태가 CLOSED가 되는 경우가 있다.
alter system set wallet open identified by <% 전자지갑 PW(난 ORATDE)%>;
2. Tablespace Level 암호화
0) Tablespace ???
1) 특징
- 민감한 Column 데이터가 많은 경우에 사용한다.
- 기존에 사용중인 Tablespace를 암호화할 수 없다.
-- 기존에 사용중에 암호화를 할 수 있게된다면 한쪽에선 암호화하고 한쪽에선 입력하는 현상이 벌어지기에..
2) 방법
2-1) 암호화된 테이블 스페이스를 생성한다.
CREATE TABLESPACE "ENCRYPTED_TS" DATAFILE '<%Oracle 설치경로%>\ORADATA\ORCL\encrypted_ts01' SIZE 100M DEFAULT STORAGE(ENCRYPT) ENCRYPTION USING 'AES192';
2-2) 주요 Table을 2-1)에서 생성한 Tablespace로 이전한다.
예를들어. hr 소유 부서(departments) 테이블을 암호화된 테이블스페이스로 이전한다.
alter table hr.departments MOVE TABLESPACE encrypted_ts;
2-3) 이전한 테이블을 조회 혹은 조작한다.
테이블에 설정된 제약조건과 인덱스 여부를 확인한다.
3) Q
3-1) 인덱스가 생성된 Column에 암호화를 적용할 수 있는가?
sqlplus system HR 소유 부서(DEPARTMENTS) 부서이름(DEPARTMENT_NAME) 칼럼에 인덱스를 생성하자. CREATE INDEX hr.dept_name_ix ON hr.departments (department_name); 이 칼럼에 암호화를 적용해
ALTER TABLE hr.departments MODIFY ( department_name ENCRYPT);
ORA-28338: 열은 salt를 사용하여 동시에 인덱스화 및 암호화될 수 없습니다.
그래서
ALTER TABLE hr.departments MODIFY ( department_name ENCRYPT NO SALT);
3-2) 특정 사용자 소유의 테이블 전체를 암호화 Tablespace로 이전할 수 있는가?
i) Enterprise Manager를 이용하는 방법.
ii) 구글링해서 찾은 방법(데이터 사전을 이용)
SELECT 'ALTER TABLE "'||owner||'"."'||table_name||'" MOVE TABLESPACE encrypted_ts;'
AS COMMAND
FROM DBA_TABLES
WHERE OWNER = 'OE';
출력된 내용들을 긁어서 실행해주면 된다.
3-3) 암호화 테이블을 암호화된 상태로 다른 Oracle 데이터베이스에 이전(Migration)
Migration
Oracle 10g/11g스키마 ------------------->Oracle 12g스키마
방법 - Data Pump Utility
목표 - Data Pump를 이용해서 암호화된 데이터를 암호화된 상태로 Dump File을 생성한다.
실습
i) 암호화된 테이블을 선택한다.(oe.customers)
ii) Oracle Data Pump 기능을 이용해서 암호화된 테이블 Dump File에 담아둔다.
이 때 생성되는 Dump File은 암호화 된다.
C:\> expdp help=y
사전작업
ii-1) Directory Object 생성
sqlplus system
sql> CREATE DIRECTORY dmpdir as 'D:\app\......\admin\orcl\dpdump';
ii-2) OE에 Directory를 읽고 쓰고할 권한을 준다.
sqlplus system
sql> GRANT WRITE,READ ON DIRECTORY dmpdir TO oe;
iii) Export Data Pump 실행
C:\> expdp userid=oe directory=dmpdir dumpfile=cust.dmp tables=customers
ORA-39173 암호화된 데이터가 덤프 파일 집합에 암호화되지 않은 상태로 저장되었습니다.
iv) Export Data Pump 실행 2
C:\>expdp userid=oe directory=dmpdir dumpfile=cust_c.dmp tables=customers encryption_password=password
이렇게 encryption_password 옵션을 추가해준다.
v) Import Data Pump 실행해서 Import한다.
impdp에서도 encryption_password 옵션이 있는데 iv)에서와 동일한 값을 써주면된다.
※ 우선은 기존에 만들어져있던 oe의 customers를 삭제해주어야한다.
C:\>impdp userid=oe directory=dmpdir dumpfile=cust_c.dmp tables=customers encryption_password=password
'한아전(독학사)의추억' 카테고리의 다른 글
Cisco Packet Tracer Routing 설정하기 (0) | 2014.11.04 |
---|---|
Secui.Wall 사용기 - 엄청 옛날 버전 (0) | 2014.11.03 |
VMware를 Hyper-V로 이동(VMware to Hyeper-V) : V2V를 사용한다!(성공이긴한데 실패?) (0) | 2014.10.23 |
VMware Workstation이랑 Hyper-V를 같이 사용 (0) | 2014.10.23 |
141022_정보보호법_ISMS구축절차와 산출물_내용추가 (0) | 2014.10.22 |
블로그의 정보
정윤상이다.
담배맛구마