

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 를 사용한 Oracle 데이터베이스 투명 데이터 암호화(TDE) AWS CloudHSM
<a name="oracle-tde"></a>

TDE(Transparent Data Encryption)는 데이터베이스 파일을 암호화하는 데 사용됩니다. TDE를 사용하면 데이터베이스 소프트웨어는 데이터를 디스크에 저장하기 전에 암호화합니다. 데이터베이스의 테이블 열 또는 테이블스페이스의 데이터는 테이블 키 또는 테이블스페이스 키로 암호화됩니다. Oracle Database 소프트웨어의 일부 버전은 TDE를 제공합니다. Oracle TDE에서, 이 키는 TDE 마스터 암호화 키로 암호화됩니다. AWS CloudHSM 클러스터의 HSMs에 TDE 마스터 암호화 키를 저장하여 보안을 강화할 수 있습니다.

![\[AWS CloudHSM에 Oracle TDE 마스터 암호화 키를 저장합니다.\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/images/tde-master-key-in-hsm.png)


이 솔루션에서는 Amazon EC2 인스턴스에 설치된 Oracle Database를 사용합니다. Oracle Database는 [PKCS \$111용AWS CloudHSM 소프트웨어 라이브러리](pkcs11-library.md)와 통합되어 클러스터의 HSM에 TDE 마스터 키를 저장합니다.

**중요**  
 Amazon EC2 인스턴스에 Oracle Database를 설치하는 것이 좋습니다.

Oracle TDE를 AWS CloudHSM과 통합하려면 다음 단계를 완료하십시오.

**Topics**
+ [1단계. 사전 조건 설정](#oracle-tde-prerequisites)
+ [2단계: Oracle 데이터베이스 구성 업데이트](#oracle-tde-configure-database-and-generate-master-key)
+ [3단계: Oracle TDE 마스터 암호화 키 생성](#oracle-tde-generate-master-key)

## 1단계. 사전 조건 설정
<a name="oracle-tde-prerequisites"></a>

Oracle TDE와의 통합을 수행하려면 다음이 AWS CloudHSM필요합니다.
+ 하나 이상의 HSM이 있는 활성 AWS CloudHSM 클러스터입니다.
+ 다음 소프트웨어가 설치된 Amazon Linux 운영 체제를 실행하는 Amazon EC2 인스턴스:
  +  AWS CloudHSM 클라이언트 및 명령줄 도구입니다.
  + PKCS \$111용 AWS CloudHSM 소프트웨어 라이브러리입니다.
  + Oracle Database.는 Oracle TDE 통합을 AWS CloudHSM 지원합니다. Client SDK 5.6 이상은 Oracle Database 19c용 Oracle TDE를 지원합니다. Client SDK 3은 Oracle Database 버전 11g 및 12c용 Oracle TDE를 지원합니다.
+ 클러스터의 HSM에서 TDE 마스터 암호화 키를 소유하고 관리할 CU(Cryptographic User)입니다.

다음 단계를 완료하여 사전 조건을 모두 설정합니다.

**와의 Oracle TDE 통합을 위한 사전 조건을 설정하려면 AWS CloudHSM**

1. [시작하기](getting-started.md)의 단계를 수행하세요. 이렇게 하면 HSM이 하나 있는 활성 클러스터가 생깁니다. 또한 Amazon Linux 운영 체제를 실행하는 Amazon EC2 인스턴스도 있습니다. AWS CloudHSM 클라이언트 및 명령줄 도구도 설치 및 구성됩니다.

1. (선택 사항) 클러스터에 HSM을 더 추가합니다. 자세한 내용은 [AWS CloudHSM 클러스터에 HSM 추가](add-hsm.md) 단원을 참조하십시오.

1. Amazon EC2 클라이언트 인스턴스에 연결하고 다음을 수행합니다.

   1. [PKCS \$111용 AWS CloudHSM 소프트웨어 라이브러리를 설치합니다](pkcs11-library-install.md).

   1. Oracle Database를 설치합니다. 자세한 내용은 [Oracle Database 설명서](https://docs.oracle.com/en/database/)를 참조하십시오. Client SDK 5.6 이상은 Oracle Database 19c용 Oracle TDE를 지원합니다. Client SDK 3은 Oracle Database 버전 11g 및 12c용 Oracle TDE를 지원합니다.

   1. cloudhsm\$1mgmt\$1util 명령줄 도구를 사용하여 클러스터에서 CU(Cryptographic User)를 생성합니다. CU 생성에 대한 자세한 내용은 [CMU를 사용하여 HSM 사용자를 관리 방법](create-users-cmu.md) 및 [HSM 사용자](manage-hsm-users.md) 항목을 참조하십시오. 

## 2단계: Oracle 데이터베이스 구성 업데이트
<a name="oracle-tde-configure-database-and-generate-master-key"></a>

클러스터의 HSM을 *외부 보안 모듈*로 사용하도록 Oracle 데이터베이스 구성을 업데이트하려면 다음 단계를 수행합니다. 외부 보안 모듈에 대한 자세한 내용은 *오라클 데이터베이스 고급 보안 가이드*의 [투명한 데이터 암호화 소개](https://docs.oracle.com/database/122/ASOAG/introduction-to-transparent-data-encryption.htm)를 참조하십시오.

**Oracle 구성을 업데이트하려면**

1. Amazon EC2 클라이언트 인스턴스에 연결합니다. 이 인스턴스는 Oracle 데이터베이스를 설치한 인스턴스입니다.

1. `sqlnet.ora` 파일의 백업 사본을 생성합니다. 이 파일의 위치는 Oracle 문서를 참조하십시오.

1. 텍스트 편집기를 사용하여 `sqlnet.ora` 파일을 편집합니다. 다음 행을 추가합니다. 파일에서 기존 행이 `encryption_wallet_location`으로 시작할 경우 기존 행을 다음과 같이 바꿉니다.

   ```
   encryption_wallet_location=(source=(method=hsm))
   ```

   파일을 저장합니다.

1. 다음 명령을 실행하여 Oracle Database가 AWS CloudHSM PKCS \$111 소프트웨어 라이브러리의 라이브러리 파일을 찾을 것으로 예상되는 디렉터리를 생성합니다.

   ```
   sudo mkdir -p /opt/oracle/extapi/64/hsm
   ```

1. 다음 명령을 실행하여 PKCS \$111 파일용 AWS CloudHSM 소프트웨어 라이브러리를 이전 단계에서 생성한 디렉터리에 복사합니다.

   ```
   sudo cp /opt/cloudhsm/lib/libcloudhsm_pkcs11.so /opt/oracle/extapi/64/hsm/
   ```
**참고**  
`/opt/oracle/extapi/64/hsm` 디렉터리는 라이브러리 파일을 하나만 포함해야 합니다. 해당 디렉터리에 있는 다른 파일을 제거합니다.

1. 다음 명령을 실행하여 `/opt/oracle` 디렉터리와 그 안에 포함된 모든 항목의 소유권을 변경합니다.

   ```
   sudo chown -R oracle:dba /opt/oracle
   ```

1. Oracle 데이터베이스를 시작합니다.

## 3단계: Oracle TDE 마스터 암호화 키 생성
<a name="oracle-tde-generate-master-key"></a>

클러스터의 HSM에서 Oracle TDE 마스터 키를 생성하려면 다음 절차의 단계를 수행합니다.

**마스터 키를 생성하려면**

1.  명령을 사용하여 Oracle SQL\$1Plus를 엽니다. 메시지가 표시되면 Oracle 데이터베이스를 설치할 때 설정한 시스템 암호를 입력합니다.

   ```
   sqlplus / as sysdba
   ```
**참고**  
Client SDK 3의 경우 마스터 키를 생성할 때마다 `CLOUDHSM_IGNORE_CKA_MODIFIABLE_FALSE` 환경 변수를 설정해야 합니다. 이 변수는 마스터 키 생성에만 필요합니다. 자세한 내용은 [타사 애플리케이션 통합에 대해 알려진 문제](ki-third-party.md)에서 "문제: Oracle은 마스터 키 생성 중에 PCKS \$111 속성 `CKA_MODIFIABLE`을 설정하지만 HSM은 이를 지원하지 않습니다"를 참조하십시오.

1. 다음 예제와 같이 마스터 암호화 키를 생성하는 SQL 문을 실행합니다. Oracle 데이터베이스의 버전에 해당하는 문을 사용하십시오. *<CU user name>*을 CU(Cryptographic User)의 사용자 이름으로 바꿉니다. *<password>*를 CU 암호로 바꿉니다.
**중요**  
다음 명령은 한 번만 실행하십시오. 명령이 실행될 때마다 새 마스터 암호화 키가 생성됩니다.
   + Oracle 데이터베이스 버전 11의 경우, 다음 SQL 문을 실행합니다.

     ```
     SQL> alter system set encryption key identified by "<CU user name>:<password>";
     ```
   + Oracle 데이터베이스 12버전 및 19c버전의 경우 다음 SQL문을 실행합니다. 

     ```
     SQL> administer key management set key identified by "<CU user name>:<password>";
     ```

   응답이 `System altered` 또는 `keystore altered`일 경우 Oracle TDE의 마스터 키가 성공적으로 생성 및 설정된 것입니다.

1. (선택 사항) 다음 명령을 실행하여 *Oracle wallet*의 상태를 확인합니다.

   ```
   SQL> select * from v$encryption_wallet;
   ```

   Oracle wallet이 열리지 않은 경우 다음 명령 중 하나를 실행하여 엽니다. *<CU user name>*을 CU(Cryptographic User)의 이름으로 바꿉니다. *<password>*를 CU 암호로 바꿉니다.
   + Oracle 11의 경우, 다음 명령을 실행하여 Oracle Wallet을 엽니다.

     ```
     SQL> alter system set encryption wallet open identified by "<CU user name>:<password>";
     ```

     수동으로 Oracle wallet을 닫으려면 다음 명령을 실행합니다.

     ```
     SQL> alter system set encryption wallet close identified by "<CU user name>:<password>";
     ```
   + Oracle 12 및 Oracle 19c의 경우 지갑을 열기 위해 다음 명령을 실행합니다. 

     ```
     SQL> administer key management set keystore open identified by "<CU user name>:<password>";
     ```

     수동으로 Oracle wallet을 닫으려면 다음 명령을 실행합니다.

     ```
     SQL> administer key management set keystore close identified by "<CU user name>:<password>";
     ```