- 인쇄
- PDF
Oracle DB TDE 연동
- 인쇄
- PDF
Oracle TDE(Transparent Data Encryption)는 Oracle 데이터베이스 테이블 컬럼이나 응용 프로그램 테이블스페이스에 저장된 중요한 데이터를 암호화하는 솔루션입니다. Oracle TDE의 마스터 암호화 키를 네이버 클라우드 플랫폼 HSM에 보관하기 위해서 Oracle TDE와 HSM 연동하는 방법을 설명합니다.
Oracle TDE 연동은 Thales 공식 문서를 기반으로 작성되었습니다. 사용 가이드에서 안내하는 내용 외에 더 많은 내용을 살펴보려면 Oracle Transparent Data Encryption (TDE) Database 연동 가이드를 참고해 주십시오.
지원 환경
HSM 클라이언트와 Oracle TDE를 연동하기 위한 환경은 다음과 같습니다.
전제 조건
Oracle TDE 연동을 시작하기 전, 다음의 전제 조건을 준수해 주십시오.
- HSM 클라이언트 서버 인스턴스와 HSM 파티션 간에 연결 생성 완료
- HSM 클라이언트 서버는 VPC 상에 위치
- HSM 클라이언트 서버에 Oracle Database 서버가 설치 및 구동되고 있음
- HSM 전용 모드가 설정됨(HA 전용 모드 참고)
지원 운영체제
지원하는 운영체제를 확인해 주십시오.
Oracle Database | 운영체제 |
---|---|
Oracle Database 19C | Red Hat Enterprise Linux Windows Server 2019 Windows Server 2016 |
Oracle Database 18C | Red Hat Enterprise Linux Windows Server 2019 Windows Server 2016 AIX Solaris Sparc Solaris x86 |
Oracle Database 12C | Red Hat Enterprise Linux Windows Server 2016 Windows Server 2012 R2 AIX Solaris Sparc Solaris x86 Oracle Linux |
해당 문서의 내용은 Oracle Linux 7.6(64-bit)/ Naver Cloud Platform Finance, [STAND] 2vCPU, 8GB Mem 환경 기준입니다.
HSM-Oracle TDE 연동 설정
Oracle TDE 연동을 위해 HSM 클라이언트를 설정하고 마스터 암호화 키를 생성해 주십시오.
HSM 클라이언트 설정
Oracle TDE 연동을 위해 다음과 같이 HSM 클라이언트를 설정해 주십시오.
HSM PKCS#11 라이브러리를 다음의 디렉터리에 복사해 주십시오. Oracle 데이터베이스가 암호화 라이브러리에 접근할 수 있게 됩니다.
* Linux/Solaris/AIX: /opt/oracle/extapi/[32,64]/hsm/safenet/7.7.0/libCryptoki2_64.so
* Windows: %SYSTEMDRIVE%\oracle\extapi[32,64]\hsm\safenet\7.7.0\libCryptoki2_64.ext
마스터 암호화 키 생성
HSM 기반 암호화를 사용하려면 HSM 내부에 저장할 Oracle TDE 마스터 암호화 키가 필요합니다. 마스터 암호화 키는 HSM 내에 저장된 암호화 키를 사용하여 Oracle 데이터베이스 테이블 컬럼 또는 응용 프로그램 테이블스페이스를 암호화하거나 복호화하는 데 사용됩니다.
소프트웨어나 HSM 기반 wallet은 아직 생성하지 않은 것으로 가정합니다.
- Oracle 데이터베이스에 Hardware Keystore를 설정해 주십시오.
- {$ORACLE_BASE}/admin/db_unique_name 폴더에 wallet 폴더를 생성해야 합니다.
mkdir $ORACLE_BASE/admin/db_unique_name/wallet
- sysdba 사용자로 Oracle 데이터베이스에 로그인해 주십시오.
sqlplus / as sysdba
- WALLET_ROOT 인자를 설정해 주십시오.
wallet_root
값 마지막에 '/'가 없도록 주의해 주십시오.
alter system set wallet_root='/ora01/app/oracle/admin/ORA19C/wallet' scope=spfile;
- 데이터베이스를 종료한 후 다시 시작해 주십시오.
shutdown immediate; startup;
- TDE_CONFIGURATION 인자를 설정해 주십시오.
alter system set TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=HSM" SCOPE=both;
- 키 관리 권한을 SYSTEM 사용자(혹은 사용을 원하는 사용자)에게 부여해 주십시오.
SQL> GRANT ADMINISTER KEY MANAGEMENT TO SYSTEM; SQL> commit;
- system으로 데이터베이스를 연결해 주십시오.
SQL> connect system/<password>
- Hardware Keystore를 열어 주십시오.
- 암호화 관리자(Cryptro Officer) 권한이 필요합니다.
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY <hsm_partition_password>;
- 마스터 암호화 키를 Hardware Keystore에 생성해 주십시오.
- 암호화 관리자(Cryptro Officer) 권한이 필요합니다.
SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY <hsm_partition_password>;
- cmu list 명령어로 생성된 암호화 키를 확인해 주십시오.
- 암호화 관리자(Cryptro Officer) 권한이 필요합니다.
/usr/safenet/lunaclient/bin/cmu list
HSM-Oracle TDE 연동 확인
마스터 암호화 키가 Oracle 데이터베이스를 암호화하는지 확인하여 네이버 클라우드 플랫폼 HSM과 Oracle TDE 간 연동이 정상적으로 설정되었는지 확인해야 합니다. 확인하는 방법은 다음과 같습니다.
CUSTOMER 테이블을 생성해 주십시오.
SQL> CREATE TABLE CUSTOMERS (ID NUMBER(5), NAME VARCHAR(42), CREDIT_LIMIT NUMBER(10));
테이블에 내용을 작성해 주십시오.
SQL> INSERT INTO CUSTOMERS VALUES (001, 'George Bailey', 10000); SQL> INSERT INTO CUSTOMERS VALUES (002, 'Denial Vettory', 20000); SQL> INSERT INTO CUSTOMERS VALUES (003, 'MS Dhoni', 30000); SQL> INSERT INTO CUSTOMERS VALUES (004, 'Shahid Afridi', 40000);
CUSTOMER 테이블의 CREDIT_LIMIT 컬럼을 암호화해 주십시오.
SQL> ALTER TABLE CUSTOMERS MODIFY (CREDIT_LIMIT ENCRYPT);
CREDIT_LIMIT 컬럼에 SELECT 명령을 수행하여 해당 컬럼의 값이 일반 텍스트로 반환되는지 확인해 주십시오.
- 이때 TDE는 자동으로 암호를 해독합니다.
SQL> SELECT CREDIT_LIMIT FROM CUSTOMERS;
데이터베이스에 암호화된 열을 선택해 주십시오.
SQL> SELECT * FROM DBA_ENCRYPTED_COLUMNS;
Hardware Keystore에 대한 정보를 확인해 주십시오.
SQL> SELECT * FROM V$ENCRYPTION_WALLET;
암호화된 테이블스페이스를 생성해 주십시오.
SQL> CREATE TABLESPACE SECURESPACE DATAFILE '/ora01/app/oracle/oradata/ORA19C/SECURE01.DBF' SIZE 150M ENCRYPTION DEFAULT STORAGE (ENCRYPT);
생성한 테이블스페이스에 EMPLOYEE 테이블을 생성해 주십시오.
SQL> CREATE TABLE EMPLOYEE (ID NUMBER(5),NAME VARCHAR(42),SALARY NUMBER(10)) TABLESPACE SECURESPACE;
EMPLOYEE 테이블에 내용을 작성해 주십시오.
SQL> INSERT INTO EMPLOYEE VALUES (001,'JOHN SMITH',15000); SQL> INSERT INTO EMPLOYEE VALUES (002,'SCOTT TIGER',25000); SQL> INSERT INTO EMPLOYEE VALUES (003,'DIANA HAYDEN',35000);
테이블에 작성한 내용을 조회해 주십시오.
SQL> SELECT * FROM EMPLOYEE;
Hardware Keystore를 종료해 주십시오.
- 암호화 관리자(Cryptro Officer) 권한이 필요합니다.
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY <hsm_partition_password>;
다시 EMPLOYEE 테이블의 내용을 조회해 주십시오.
- '전자 지갑이 열려 있지 않습니다.'라는 오류가 발생한 경우 작업이 올바르게 수행된 것입니다.
SQL> SELECT * FROM EMPLOYEE;
Hardware Keystore를 실행해 주십시오.
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY <hsm_partition_password>;
EMPLOYEE 테이블의 내용이 정상적으로 조회되는지 확인해 주십시오.
- 정상적으로 조회되면 Oracle TDE와 HSM 간에 연동이 정상적으로 설정된 것입니다.
SQL> SELECT * FROM EMPLOYEE;