Oracle®은 보안을 위해 Oracle 12C에 TDE(투명한 데이터 암호화) 기능을 도입하여 사용자가 민감한 데이터에 대해 테이블스페이스 및 열 수준 암호화를 활성화할 수 있도록 했습니다.
소개
데이터를 암호화한 후에는 승인된 사용자 또는 응용 프로그램만 데이터에 액세스할 수 있습니다. Oracle은 도구와 프로세스를 사용하여 데이터베이스를 인증, 권한 부여 및 감사하지만 데이터를 저장하는 OS 데이터 파일은 사용하지 않습니다.
Oracle Database Advanced Security Guide(ASOAG)에 따르면 "TDE는 데이터 파일에 저장된 민감한 데이터를 암호화합니다. 무단 복호화를 방지하기 위해 TDE는 키 저장소라고 하는 데이터베이스 외부의 보안 모듈에 암호화 키를 저장합니다.”
필수 TDE 권한
TDE를 구성하려면 사용자에게 SYSKM
권한을 부여합니다. 관리 권한. 그런 다음 ASOAG는 "사용자가 암호를 사용하여 SYSKM으로 데이터베이스에 연결할 수 있도록 암호 파일을 생성할 것을 권장합니다. ... TDE 열 또는 테이블스페이스 암호화를 구성하려면 SYSKM ... 권한이 필요하지 않습니다." 그러나 ASOAG는 테이블 열과 테이블스페이스를 암호화하기 위해 다음과 같은 "권한이 필요합니다.
- 테이블 만들기
- 테이블 변경
- 테이블스페이스 생성
- ALTER TABLESPACE(온라인 및 오프라인 테이블스페이스 암호화용)
- ALTER DATABASE(빠른 오프라인 테이블스페이스 암호화용)”
이러한 권한 외에도 enableTDE를 위해 항상 열려 있어야 하는 지갑을 만들어야 합니다. 지갑은 키 저장소라고도 합니다. 12c에서.
두 가지 유형의 TDE
다음 섹션에서는 두 가지 유형의 TDE에 대해 설명합니다.
1. 투명한 데이터 암호화 열 암호화
이것은 테이블에 저장된 신용 카드, 주민등록번호 등과 같은 기밀 데이터를 보호합니다. ASOAG에 따르면 "2계층 키 기반 아키텍처를 사용하여 민감한 열을 투명하게 암호화하고 해독합니다. TDE 마스터 암호화 키는 Oracle 소프트웨어 또는 하드웨어 키 저장소가 될 수 있는 외부 보안 모듈에 저장됩니다. 이 TDE 마스터 암호화 키는 TDE 테이블 키를 암호화 및 복호화하고 차례로 테이블 열의 데이터를 암호화 및 복호화합니다.”
이미지 출처:https://docs.oracle.com/database/121/ASOAG/introduction-to-transparent-data-encryption.htm#ASOAG10137
2. 투명한 데이터 암호화 테이블스페이스 암호화
암호화된 테이블스페이스에 생성된 모든 객체는 자동으로 암호화된다. 전체 테이블 또는 여러 열을 암호화하는 데 도움이 됩니다. ASOAG는 다음과 같이 덧붙입니다. “TDE 테이블스페이스 암호화는 2계층 키 기반 아키텍처를 사용하여 테이블스페이스를 투명하게 암호화(및 해독)합니다. TDE 마스터 암호화 키는 외부 보안 모듈(소프트웨어 또는 하드웨어 키 저장소)에 저장됩니다. 이 TDE 마스터 암호화 키는 TDE 테이블스페이스 암호화 키를 암호화하는 데 사용되며, 이는 차례로 테이블스페이스의 데이터를 암호화 및 해독하는 데 사용됩니다.”
이미지 출처:https://docs.oracle.com/database/121/ASOAG/introduction-to-transparent-data-encryption.htm#ASOAG10137
TDE의 목적
ASOAG는 TDE를 사용해야 하는 다음과 같은 이유를 언급합니다.
- 누군가 저장 매체나 데이터 파일을 훔쳐도 민감한 데이터를 보호합니다.
- 보안 관련 규정 준수 문제를 해결하는 데 도움이 됩니다.
- 애플리케이션 데이터를 해독하기 위해 추가 보조 또는 보기를 생성합니다. 애플리케이션을 거의 또는 전혀 변경하지 않고 데이터베이스 사용자 및 애플리케이션에 대한 테이블 데이터를 투명하게 해독합니다.
- DB 및 애플리케이션 사용자는 액세스하는 데이터가 암호화되어 있다는 사실을 알 필요가 없습니다.
- 온라인 재정의를 사용하거나 오프라인 모드에서 암호화하여 다운타임 없이 데이터를 암호화할 수 있습니다.
- 암호화된 데이터를 처리하기 위해 애플리케이션을 변경할 필요가 없습니다. 데이터베이스는 데이터를 암호화 및 복호화합니다.
- Oracle Database는 TDE 마스터 암호화 키 및 키 저장소 관리 작업을 자동화합니다.
TDE 구성
TDE 및 지갑을 구성하려면 다음 단계를 수행하십시오.
-
지갑 또는 키 저장소 위치 생성:
mkdir -p /u01/oracle/wallet
-
sqlnet.ora에서 지갑 또는 키 저장소 위치 업데이트 :
cat $ORACLE_HOME/network/admin/sqlnet.ora # sqlnet.ora Network Configuration File: /home/oracle/app/oracle/product/12.1.0/dbhome_1/network/admin/sqlnet.ora # Generated by Oracle configuration tools. NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) ENCRYPTION_WALLET_LOCATION = (SOURCE =(METHOD = FILE)(METHOD_DATA = (DIRECTORY = /u01/oracle/wallet)))
-
키 저장소 생성:
SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/u01/oracle/wallet/' IDENTIFIED BY Oraclewallet#123 ; keystore altered. SQL> host ls /u01/oracle/wallet/ Oraclewallet.P12
-
키 저장소 열기:
SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY Oraclewallet#123; keystore altered.
-
키 활성화:
SQL> SET LINESIZE 100 SELECT con_id, key_id FROM v$encryption_keys;SQL> no rows selected SQL> ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY Oraclewallet#123 WITH BACKUP; keystore altered. SQL> SET LINESIZE 100 SELECT con_id, key_id FROM v$encryption_keys;SQL> CON_ID KEY_ID ---------- ------------------------------------------------------------------------------ 0 HTDRKP*%GRLOHNRWMrX2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAA SQL> SET LINESIZE 200 COLUMN wrl_parameter FORMAT A50 SELECT * FROM v$encryption_wallet; SQL> SQL> WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR FULLY_BAC CON_ID -------------------- -------------------------------------------------- ------------------------------ -------------------- --------- --------- ---------- FILE /u01/oracle/wallet/ OPEN PASSWORD SINGLE NO 0
-
암호화된 테이블스페이스 생성:
SQL> CREATE TABLESPACE ENCRYPTION_TEST datafile '/u01/oracle/app/oracle/oradata/db/encrytest.dbf' size 2G ENCRYPTION USING 'AES256' DEFAULT STORAGE(ENCRYPT); 2 3 4 Tablespace created. SQL> create table ENCRYPTION_EMP( empno Number(3), Name varchar(10) ) tablespace ENCRYPTION_TEST; 2 3 4 Table created. SQL> select tablespace_name,encrypted from dba_tablespaces where tablespace_name='ENCRYPTION_TEST'; TABLESPACE_NAME ENC ------------------------------ --- ENCRYPTION_TEST YES
-
암호화된 열이 있는 테이블 만들기:
SQL> CREATE TABLE employee ( first_name VARCHAR2(128), last_name VARCHAR2(128), empID NUMBER, salary NUMBER(6) ENCRYPT ); 2 3 4 5 6 Table created. SQL> select owner,table_name,column_name,encryption_alg from dba_encrypted_columns where table_name='EMPLOYEE'; OWNER TABLE_NAME COLUMN_NAME ENCRYPTION_A ---------- ------------ ------------ ----- RAJ EMPLOYEE SALARY AES 192 bits key
-
자동 로그인 활성화:
SQL> SELECT * FROM v$encryption_wallet; WRL_TYPE WRL_PARAMETER STATUS WALLET_TYPE WALLET_OR FULLY_BAC CON_ID ---------- ------------------- ------------ --------------- ------------- ------------- ---------- FILE /u01/oracle/wallet/ OPEN PASSWORD SINGLE NO 0
여기 wallet_type PASSWORD
입니다. . 데이터베이스를 다시 시작할 때마다 키나 지갑을 명시적으로 열어야 합니다. 이를 방지하기 위해 데이터베이스가 다시 시작될 때 자동으로 지갑을 여는 자동 로그인을 활성화할 수 있습니다.
결론
TDE를 사용하면 매우 민감한 데이터를 보호할 수 있습니다. 데이터 파일이나 미디어 저장소를 도난당하더라도 사용자가 암호를 해독할 수 있는 키가 있어야 데이터를 사용할 수 있습니다.
데이터베이스 서비스에 대해 자세히 알아보십시오.
피드백 탭을 사용하여 의견을 작성하거나 질문하십시오. 저희와 대화를 시작할 수도 있습니다.