본문 바로가기

빅데이터과정/RAC

#43_140812_RAC_전자지갑

728x90

# 전자지갑



 

RAC 환경에서 전자지갑

테이블의 특정 data를 못보게 할 때 사용

 


 

 

전자지갑 테스트


 

>> cd /u01/app/oracle/product/10.2.0/db_1/network/admin( cd $ORACLE_HOME/network/admin) 으로 이동해서 sqlnet.ora 파일에   아래의 내용을 추가한다

 

$ vi sqlnet.ora

 

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

cd $ORACLE_HOME/network/admin

 

NAMES.DIRECTORY_PATH= (TNSNAMES)

ENCRYPTION_WALLET_LOCATION= (SOURCE=(METHOD=FILE)(METHOD_DATA=

   (DIRECTORY=/u01/app/oracle/product/10.2.0/db_1)))

directory로 지정된 경로에 전자지갑 생성

 

 

 

>> 전자지갑 생성

 

SQL#1> alter system set encryption key

     identified by oracle1234;

 

 

 

>> scott 유저에게 전자지갑을 사용해서 암호화 할 컬럼 지정

 

SQL#1> connect scott/tiger

SQL#1> create table emp809 as

     select * from emp;

SQL#1> alter table emp809 modify sal encrypt;

 

 

 

>> sys유저로 접속해서 전자지갑을 닫는다

 

SQL#1> connect /as sysdba

SQL#1> alter system set encryption wallet close;

 

 

 

>> scott 유저로 접속해서 emp809 테이블의 sal을 조회한다

 

SQL#1> connect scott/tiger

SQL#1> select ename,sal from emp809;

ERROR at line 1:

ORA-28365: wallet is not open

위처럼 전자지갑 암호화로 열수 없다는 에러가 출력된다

다른 instance에서도 암호화로 조회가 불가능하다

 

 

 

>> sys에서 다시 전지지갑을 푼다

 

SQL#1> connect /as sysdba

SQL#1> alter system set encryption wallet open

    identified by oracle1234;

 

# 2번 session

 

SQL#2> select ename, sal from emp809;

select ename, sal from emp809

ERROR at line 1:

ORA-28365: wallet is not open

1번 session에서 wallet을 풀었지만 2번 session에서는 여전히 조회가 불가능하다

그 이유는 전자지갑을 가진 1번 session만이 전자지갑을 가지고 있고 2번 session은 가지고 있지 않기 때문이다.

결국 이 전자지갑을 풀 수 있는 전자지갑 열쇠를 가진 session 만이 조회가 가능하다

그래서 전자지갑을 1번 instance에서 복사해서 2번 instance에 복사해야 한다

 

 

 

>> 전자지갑을 2번 instance에 복사

$ cd /u01/app/oracle/product/10.2.0/db_1

$ scp ewallet.p12 rac2:/u01/app/oracle/product/10.2.0/db_1

$ hostname : 호스트 명을 알 수 있다( : rac2)

scp 명령어는 원격으로 해당된 host의 경로에 원하는 파일을 복사한다

 

 


>> 2번 instance에서 전자지갑의 위치를 알려주기 위해 아래의 경로로 가서 sqlnet.ora에 내용을 추가해준다

$ cd $ORACLE_HOME/network/admin

 

$ vi sqlnet.ora

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

cd $ORACLE_HOME/network/admin

 

NAMES.DIRECTORY_PATH= (TNSNAMES)

ENCRYPTION_WALLET_LOCATION= (SOURCE=(METHOD=FILE)(METHOD_DATA=

   (DIRECTORY=/u01/app/oracle/product/10.2.0/db_1)))

directory로 지정된 경로에 전자지갑 생성

 


 

>> sys로 접속해서 전자지갑을 연다

 

# 2번 session

 

SQL#2> connect /as sysdba

SQL#2> alter system set encryption wallet open

    identified by oracle1234;

SQL#2> connect scott/tiger

SQL#2> select ename, sal from emp809;

ENAME             SAL

---------- ----------

KING             5000

BLAKE            2850

CLARK            2450

JONES            2975

MARTIN           1250

ALLEN            1600

……………………………………….

sys 계정에서 전자지갑을 열고 scott에서 조회해보면 sal 컬럼의 암호화를 풀 수 있고 조회할 수 있다

 



>> 다시 sal decrypt

 

SQL> alter table emp809

     modify sal decrypt;

 

 

 

'빅데이터과정 > RAC' 카테고리의 다른 글

#44_140813_RAC_TUNING  (0) 2014.08.13
#44_140813_RAC_DATAFILE 복구  (0) 2014.08.13
#43_140812_RAC_INSTANCE STOP START  (0) 2014.08.12
#43_140812_RAC_UNDO TABLESPACE  (0) 2014.08.12
#43_140812_RAC_REDO LOG FILE  (0) 2014.08.12