Akashic Records

Oracle 접근제어 방안 - 암호화 본문

Database Learning Guide

Oracle 접근제어 방안 - 암호화

Andrew's Akashic Records 2023. 3. 13. 16:12
728x90

오라클 데이터베이스 암호화를 위한 가이드는 다음과 같습니다.

 

1. 데이터베이스 암호화를 위한 필요성

데이터베이스에 저장된 데이터는 중요한 정보일 수 있습니다. 이러한 데이터가 외부에 노출될 경우, 정보 유출 등의 심각한 문제를 일으킬 수 있습니다. 따라서 데이터베이스에서 데이터를 암호화하여 보호하는 것이 중요합니다.

 

2. 데이터베이스 암호화 방법

 

2.1. TDE(Transparent Data Encryption)

TDE는 데이터베이스 레벨에서 데이터를 암호화하는 방법입니다. TDE는 데이터를 저장하는 데이터 파일을 암호화하거나, 전송되는 데이터를 암호화하여 데이터를 보호합니다.

 

2.2. DBMS_CRYPTO 패키지

DBMS_CRYPTO 패키지는 데이터베이스에서 데이터를 암호화하는 함수를 제공합니다. 이를 이용해 암호화된 데이터를 생성하고, 복호화할 수 있습니다.

 

2.3. ASO(Advanced Security Option)

ASO는 데이터베이스의 암호화 기능을 확장하는 옵션입니다. ASO를 사용하면 데이터베이스의 보안성을 높일 수 있습니다.

 

3. 암호화 키 관리

암호화된 데이터를 저장할 때는 반드시 암호화 키를 관리해야 합니다. 암호화 키를 안전하게 보관하고, 암호화 키가 노출되지 않도록 관리해야 합니다.

 

4. 데이터베이스 암호화 구현 가이드

 

4.1. TDE 구현 가이드

TDE(Transparent Data Encryption)는 오라클 데이터베이스의 암호화 기능 중 하나로, 데이터 파일 또는 전송되는 데이터를 암호화하여 데이터를 보호합니다. 이를 구현하기 위해 다음과 같은 단계를 따를 수 있습니다.

 

- 암호화할 테이블 스페이스를 선택합니다.

- 마스터 키를 생성합니다.

ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "master_password";

- 마스터 키로 암호화된 키 저장소를 만듭니다.

CREATE TABLESPACE tde_keystore DATAFILE 'tde_keystore.dbf' SIZE 10M AUTOEXTEND ON;

- 암호화할 테이블 스페이스에 대한 키를 생성합니다.

ALTER TABLESPACE users ENCRYPTION ONLINE USING 'AES256' DEFAULT STORAGE(KEYSTORE 'tde_keystore' IDENTIFIED BY "keystore_password");

- 키로 암호화된 테이블 스페이스를 만듭니다.

CREATE TABLESPACE users_encrypted DATAFILE 'users_encrypted.dbf' SIZE 100M AUTOEXTEND ON ENCRYPTION USING 'AES256' DEFAULT STORAGE(KEYSTORE 'tde_keystore' IDENTIFIED BY "keystore_password");

위 코드에서 'AES256'는 암호화 알고리즘을 나타내며, 'tde_keystore'와 'keystore_password'는 암호화된 데이터를 저장할 키 저장소와 암호화 키를 나타냅니다.

 

이렇게 TDE를 사용하면 데이터베이스 레벨에서 데이터를 암호화할 수 있어서 데이터 보호를 강화할 수 있습니다.

 

4.2. DBMS_CRYPTO 패키지 구현 가이드

DBMS_CRYPTO는 오라클 데이터베이스에서 제공하는 암호화 패키지로, 다양한 암호화 알고리즘을 제공합니다. 이를 이용하여 데이터를 암호화하거나 복호화할 수 있습니다.

 

예를 들어, 다음과 같은 단계를 따르면 데이터를 암호화할 수 있습니다.

- DBMS_CRYPTO 패키지를 불러옵니다.

DECLARE
  l_key_bytes RAW(32) := utl_raw.cast_to_raw('MySecretKey');
  l_src_str VARCHAR2(32767) := 'Hello, World!';
  l_encrypted RAW(32767);
  l_decrypted VARCHAR2(32767);
BEGIN
  l_encrypted := dbms_crypto.encrypt(utl_raw.cast_to_raw(l_src_str), dbms_crypto.aes256_cbc_hmac_sha256, l_key_bytes);
  dbms_output.put_line('Encrypted: ' || utl_raw.cast_to_varchar2(l_encrypted));
END;

- 데이터를 암호화할 키와 암호화 알고리즘을 선택합니다.

  l_key_bytes RAW(32) := utl_raw.cast_to_raw('MySecretKey');
  l_src_str VARCHAR2(32767) := 'Hello, World!';
  l_encrypted RAW(32767);
  l_decrypted VARCHAR2(32767);

- 데이터를 암호화합니다.

  l_encrypted := dbms_crypto.encrypt(utl_raw.cast_to_raw(l_src_str), dbms_crypto.aes256_cbc_hmac_sha256, l_key_bytes);

위 예제에서는 AES256 CBC 모드와 HMAC SHA256 알고리즘을 사용하여 데이터를 암호화하였습니다.

암호화된 데이터를 복호화하려면 다음과 같은 코드를 사용합니다.

l_decrypted := utl_raw.cast_to_varchar2(dbms_crypto.decrypt(l_encrypted, dbms_crypto.aes256_cbc_hmac_sha256, l_key_bytes));
dbms_output.put_line('Decrypted: ' || l_decrypted);

위 예제에서는 암호화된 데이터를 선택한 암호화 알고리즘과 암호화된 키를 이용하여 복호화하였습니다.

 

DBMS_CRYPTO를 이용하면 오라클 데이터베이스에서 데이터를 간편하게 암호화하고 복호화할 수 있습니다.

 

4.3. ASO 구현 가이드

ASO(Advanced Security Option)는 오라클 데이터베이스의 암호화 기능 중 하나로, 테이블 스페이스의 암호화 및 데이터 전송 보안 등을 지원합니다. ASO를 사용하기 위해서는 라이센스 구매 및 설치가 필요합니다.

ASO를 사용하여 데이터를 암호화하려면 다음과 같은 단계를 따를 수 있습니다.

- 암호화할 테이블 스페이스를 선택합니다.

CREATE TABLESPACE users_encrypted DATAFILE 'users_encrypted.dbf' SIZE 100M AUTOEXTEND ON;

- 암호화 키를 생성합니다.

BEGIN
    DBMS_CRYPTO.ENGINE_VERSION(2.0);
    DBMS_CRYPTO.PROVIDER_VERSION(11.2.0.3);
    DBMS_CRYPTO.init(KEY_LENGTH => 256, ENCRYPT_TYPE => DBMS_CRYPTO.AES_CBC_PKCS5);
    DBMS_CRYPTO.randombytes(LENGTH => 32, RETURN => g_key);
END;

위 코드에서는 AES CBC 알고리즘을 사용하여 길이가 256비트인 암호화 키를 생성합니다.

- 암호화할 테이블 스페이스를 암호화 설정합니다.

ALTER TABLESPACE users ENCRYPTION ONLINE USING 'AES256' DEFAULT STORAGE(KEYSTORE 'tde_keystore' IDENTIFIED BY "keystore_password");

위 코드에서 'AES256'은 암호화 알고리즘을 나타내며, 'tde_keystore'와 'keystore_password'는 암호화된 데이터를 저장할 키 저장소와 암호화 키를 나타냅니다.

- 키로 암호화된 테이블 스페이스를 생성합니다.

CREATE TABLESPACE users_encrypted DATAFILE 'users_encrypted.dbf' SIZE 100M AUTOEXTEND ON ENCRYPTION USING 'AES256' DEFAULT STORAGE(KEYSTORE 'tde_keystore' IDENTIFIED BY "keystore_password");

위 코드에서는 암호화된 키로 테이블 스페이스를 암호화하여 생성합니다.

이렇게 ASO를 사용하여 데이터를 암호화하면 데이터의 보안성을 향상시킬 수 있습니다.

 

5. 암호화된 데이터 사용

데이터베이스에서 암호화된 데이터를 사용할 때는 다음과 같은 절차를 따르면 됩니다.

  • 암호화된 데이터를 복호화할 수 있는 권한을 가진 계정으로 로그인합니다.
  • 암호화된 데이터를 복호화하여 사용합니다.

6. 암호화 키 백업 및 복구

암호화된 데이터를 복원하려면 암호화 키를 백업하고, 암호화 키를 이용하여 데이터를 복호화해야 합니다. 암호화 키는 안전한 장소에 보관해야 하며, 암호화 키가 노출되지 않도록 주의해야 합니다.

 

7. 결론

오라클 데이터베이스에서 데이터 암호화는 데이터베이스 보안을 유지하기 위한 중요한 요소입니다. 데이터베이스에서 중요한 데이터를 다룰 경우, 데이터 암호화를 적용하여 데이터 유출 등의 문제를 방지할 수 있습니다. 따라서 데이터베이스에서 데이터 암호화를 적용하고, 암호화 키를 안전하게 관리하는 것이 중요합니다.


728x90
Comments