소스 데이터베이스의 데이터 암호화

TDE(투명한 데이터 암호화)Oracle Database의 유휴 데이터를 투명하게 암호화합니다. 응용 프로그램이 SQL을 사용하여 데이터에 액세스하는 방법에 영향을 주지 않고 운영 체제에서 파일에 저장된 데이터베이스 데이터에 액세스하려는 인증되지 않은 시도를 정지합니다. TDE는 Oracle Database와 완전히 통합되며 RMAN(전체 데이터베이스 백업), 데이터 펌프 익스포트, 전체 애플리케이션 테이블스페이스 또는 특정 중요한 열을 암호화할 수 있습니다. 암호화된 데이터는 테이블스페이스 저장 영역 파일, 임시 테이블스페이스, 실행 취소 테이블스페이스 또는 리두 로그와 같은 기타 파일에 있는지 여부에 관계없이 데이터베이스에서 암호화된 상태로 유지됩니다.

TDE가 소스 데이터베이스에서 사용으로 설정되었는지 여부 확인

TDE(투명한 데이터 암호화) 가 소스 데이터베이스에서 사용으로 설정되지 않은 경우 데이터베이스를 OCI(Oracle Cloud Infrastructure) 로 이전하거나 재해 복구 중 데이터가 암호화되지 않습니다. 암호화되지 않은 데이터를 수동으로 암호화해야 합니다. OCI에서는 새 데이터가 자동으로 암호화됩니다.

  1. 테이블스페이스가 암호화되었는지 확인합니다.
    SQL> select tablespace_name, encrypted from dba_tablespaces;

    테이블스페이스가 암호화되지 않은 경우 다음과 같이 출력됩니다:

    TABLESPACE_NAME 	       		ENC
    ------------------------------ ---
    SYSTEM                          NO
    SYSAUX                          NO
    UNDOTBS1                        NO
    TEMP                            NO
    USERS			      NO
  2. 파일 시스템에서 연관된 데이터베이스 데이터 파일(. dbf) 을 찾습니다.
    SQL> select TABLESPACE_NAME, FILE_NAME from dba_data_files;

    다음과 유사한 출력이 표시됩니다:

    TABLESPACE_NAME
    ------------------------------
    FILE_NAME
    
    SYSTEM
    /opt/oracle/oradata/ORCLCDB/system01.dbf
    
    SYSAUX
    /opt/oracle/oradata/ORCLCDB/sysaux01.dbf
    
    UNDOTBS1
    /opt/oracle/oradata/ORCLCDB/undotbs01.dbf
    
    USERS
    /opt/oracle/oradata/ORCLCDB/users01.dbf

소스 데이터베이스에서 TDE 암호화 사용

TDE(투명한 데이터 암호화) 를 사용하면 테이블 및 테이블스페이스에 저장된 중요한 데이터를 암호화할 수 있습니다. 암호화된 데이터는 데이터에 액세스할 수 있는 데이터베이스 사용자 또는 응용 프로그램에 대해 투명하게 해독됩니다.

  1. 소스 데이터베이스의 $ORACLE_BASE 디렉토리로 이동합니다.
    bash-4.2$ pwd
    /opt/oracle/admin/ORCLCDB
  2. wallet 라는 디렉토리를 생성합니다.
    $ mkdir wallet
  3. 영숫자 혼합을 사용하는 보안 비밀번호와 함께 전자 지갑을 생성합니다.
    이 단계에서는 전자 지갑을 생성하고 엽니다. 데이터베이스가 열린 후에는 전자 지갑이 명시적으로 닫히거나 데이터베이스가 종료될 때까지 전자 지갑이 열린 상태로 남아 있습니다. 그러면 전자 지갑이 자동으로 닫힙니다.
    SQL> alter system set encryption key identified by "wallet_password";
  4. 데이터베이스가 재시작된 후 닫힌 전자 지갑을 다시 엽니다.
    SQL> alter system set wallet open identified by "wallet_password";
  5. 테이블스페이스를 암호화합니다.
    다음 코드는 AES-128 암호화를 사용합니다.
    alter tablespace system encryption online using 'aes128' encrypt file_name_convert=('/opt/oracle/oradata/ORCLCDB/system01.dbf','/opt/oracle/oradata/ORCLCDB/system01_enc.dbf');
    
    alter tablespace sysaux encryption online using 'aes128' encrypt file_name_convert=('/opt/oracle/oradata/ORCLCDB/sysaux01.dbf','/opt/oracle/oradata/ORCLCDB/sysaux01_enc.dbf');
    
    alter tablespace undotbs1 encryption online using 'aes128' encrypt file_name_convert=('/opt/oracle/oradata/ORCLCDB/undotbs01.dbf','/opt/oracle/oradata/ORCLCDB/undotbs01_enc.dbf');
    
    alter tablespace users encryption online using 'aes128' encrypt file_name_convert=('/opt/oracle/oradata/ORCLCDB/users01.dbf','/opt/oracle/oradata/ORCLCDB/users01_enc.dbf');
    
  6. 테이블스페이스가 암호화되었는지 확인하십시오.
    SQL> select tablespace_name, encrypted from dba_tablespaces;

    다음과 유사한 출력이 표시됩니다:

    TABLESPACE_NAME 	       ENC
    ------------------------------ ---
    SYSTEM			    YES
    SYSAUX			    YES
    UNDOTBS1                       YES
    TEMP			      NO
    USERS			     YES
  7. 파일 시스템의 연관된 데이터베이스 데이터 파일(. dbf) 이 암호화되었는지 확인합니다.
    SQL> select TABLESPACE_NAME, FILE_NAME from dba_data_files;

    다음과 유사한 출력이 표시됩니다:

    TABLESPACE_NAME
    ------------------------------
    FILE_NAME
    
    SYSTEM
    /opt/oracle/oradata/ORCLCDB/system01_enc.dbf
    
    SYSAUX
    /opt/oracle/oradata/ORCLCDB/sysaux01_enc.dbf
    
    UNDOTBS1
    /opt/oracle/oradata/ORCLCDB/undotbs01_enc.dbf
    
    USERS
    /opt/oracle/oradata/ORCLCDB/users01_enc.dbf