Computer >> 컴퓨터 >  >> 프로그램 작성 >> 데이터 베이스

투명한 데이터 암호화

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를 사용해야 하는 다음과 같은 이유를 언급합니다.

  1. 누군가 저장 매체나 데이터 파일을 훔쳐도 민감한 데이터를 보호합니다.
  2. 보안 관련 규정 준수 문제를 해결하는 데 도움이 됩니다.
  3. 애플리케이션 데이터를 해독하기 위해 추가 보조 또는 보기를 생성합니다. 애플리케이션을 거의 또는 전혀 변경하지 않고 데이터베이스 사용자 및 애플리케이션에 대한 테이블 데이터를 투명하게 해독합니다.
  4. DB 및 애플리케이션 사용자는 액세스하는 데이터가 암호화되어 있다는 사실을 알 필요가 없습니다.
  5. 온라인 재정의를 사용하거나 오프라인 모드에서 암호화하여 다운타임 없이 데이터를 암호화할 수 있습니다.
  6. 암호화된 데이터를 처리하기 위해 애플리케이션을 변경할 필요가 없습니다. 데이터베이스는 데이터를 암호화 및 복호화합니다.
  7. Oracle Database는 TDE 마스터 암호화 키 및 키 저장소 관리 작업을 자동화합니다.

TDE 구성

TDE 및 지갑을 구성하려면 다음 단계를 수행하십시오.

  1. 지갑 또는 키 저장소 위치 생성:

     mkdir -p /u01/oracle/wallet
    
  2. 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)))
    
  3. 키 저장소 생성:

     SQL> ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/u01/oracle/wallet/' IDENTIFIED BY Oraclewallet#123 ;
     keystore altered.
     SQL> host ls /u01/oracle/wallet/
     Oraclewallet.P12
    
  4. 키 저장소 열기:

    SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY Oraclewallet#123;
    keystore altered.
    
  5. 키 활성화:

     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
    
  6. 암호화된 테이블스페이스 생성:

     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
    
  7. 암호화된 열이 있는 테이블 만들기:

     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
    
  8. 자동 로그인 활성화:

     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를 사용하면 매우 민감한 데이터를 보호할 수 있습니다. 데이터 파일이나 미디어 저장소를 도난당하더라도 사용자가 암호를 해독할 수 있는 키가 있어야 데이터를 사용할 수 있습니다.

데이터베이스 서비스에 대해 자세히 알아보십시오.

피드백 탭을 사용하여 의견을 작성하거나 질문하십시오. 저희와 대화를 시작할 수도 있습니다.