이 글에서는 Oracle® 데이터베이스의 고급 보안(Advanced Security) 옵션을 활용해 투명한 데이터 암호화(TDE, Transparent Data Encryption)로 민감한 데이터를 안전하게 보호하는 방법의 핵심을 다룹니다. TDE를 사용하면 데이터베이스 컬럼을 암호화하고 암호화 키를 체계적으로 관리할 수 있습니다.
소개
TDE는 운영체제 파일에 저장된 민감한 데이터베이스 데이터를 암호화하는 기능입니다. 또한 데이터베이스 외부에 위치한 보안 모듈에서 암호화 키를 안전하게 저장하고 관리할 수 있게 해줍니다.
암호화된 데이터는 해당 데이터에 접근 권한이 있는 데이터베이스 사용자에게는 투명하게 복호화되어 제공됩니다. TDE는 암호화 키를 데이터베이스 외부의 보안 모듈에 저장합니다.
TDE를 사용해야 하는 이유
만약 공격자가 데이터베이스 백업 테이프를 훔쳐 자신의 서버에 복원한다면, 회사의 가장 민감한 데이터에 접근할 수 있게 됩니다. 이는 용납할 수 없는 위험입니다. 대부분의 기업 규정과 가이드라인은 데이터베이스 데이터 보호를 컴플라이언스(규정 준수) 요건으로 간주합니다. 그렇다면 이러한 취약점으로부터 데이터베이스를 어떻게 보호할 수 있을까요?
한 가지 해결책은 데이터베이스 내 민감한 데이터를 암호화하고, 암호화 키를 별도의 위치에 저장하는 것입니다. 키가 없다면 도난당한 데이터는 아무런 가치가 없습니다.
TDE의 작동 방식
TDE는 키 기반 접근 제어 시스템입니다. 암호화된 데이터가 유출되더라도 인가된 복호화 없이는 무용지물이며, 테이블에 접근 권한이 있는 사용자에게는 복호화가 자동으로 수행됩니다.
암호화된 컬럼을 포함하는 테이블의 경우, 이 암호화 키를 컬럼 암호화 키(column encryption key)라고 합니다. 각 테이블의 컬럼 암호화 키는 데이터베이스 서버의 마스터 키로 암호화됩니다. 마스터 암호화 키는 데이터베이스 외부의 Oracle Wallet에 저장됩니다.
암호화된 테이블 키는 데이터 딕셔너리에 저장됩니다. 사용자가 암호화로 정의된 컬럼에 데이터를 입력하면 Oracle은 다음 작업을 수행합니다:
- Wallet에서 마스터 키를 가져옵니다.
- 데이터 딕셔너리에서 해당 테이블의 암호화 키를 복호화합니다.
- 입력값에 해당 암호화 키를 적용합니다.
- 암호화된 데이터를 데이터베이스에 저장합니다.
이미지 출처: https://docs.oracle.com/database/121/ASOAG/img/GUID-5FD3A3BB-441C-4C42-A520-1248974627B0-default.png
TDE는 다음과 같은 데이터베이스 파일의 데이터를 암호화합니다:
- 데이터파일(datafile)
- 리두 로그 및 아카이브 로그 파일
- 메모리
- 백업 파일
Oracle Wallet 관리
이 섹션에서는 Wallet을 생성하고, 열고, 닫는 방법을 설명합니다.
Wallet 생성
TDE를 처음 활성화할 때는 마스터 키가 저장될 Wallet을 먼저 생성해야 합니다.
기본적으로 Wallet은 $ORACLE_BASE/admin/$ORACLE_SID/wallet 경로에 생성되지만, sqlnet.ora 파일에 다음 내용을 지정하여 다른 위치를 설정할 수 있습니다:
ENCRYPTION_WALLET_LOCATION = (SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY =D:\oracle\product\Wallet)))
그런 다음 다음 명령어를 실행하여 Wallet을 생성합니다:
ALTER SYSTEM SET ENCRYPTION KEY [certificate_ID] IDENTIFIED BY password;
- password(Wallet 비밀번호)는 대소문자를 구분합니다. 비밀번호 문자열은 큰따옴표(" ")로 묶어야 합니다.
- certificate_ID는 Oracle Wallet에 저장된 인증서의 고유 식별자를 포함하는 선택적 문자열입니다. Wallet이 열려 있는 상태에서 V$WALLET 고정 뷰를 조회하면 certificate_ID를 확인할 수 있습니다.
Wallet 열기와 닫기
Wallet을 생성하고 비밀번호를 설정한 후에는, 데이터베이스를 시작할 때마다 SYS, SYSTEM, 또는 SYSDBA 계정을 사용하여 Wallet을 명시적으로 열어야 합니다.
예를 들어 다음 명령어를 실행합니다:
alter system set encryption wallet open identified by "oracle12345";
중요: 데이터베이스에서 어떤 작업이든 수행하려면 반드시 Wallet을 열어 두어야 합니다.
다음 예제는 데이터베이스는 구동 중이지만 Wallet이 닫혀 있는 경우의 상황을 보여줍니다:
alter system set encryption wallet close;
이제 Wallet이 닫혀 있기 때문에 암호화된 컬럼에서 데이터를 조회하려고 하면 다음 오류 메시지가 표시됩니다:
암호화된 컬럼에서 데이터를 조회하려면 다음 명령어로 Wallet을 열어야 합니다:
alter system set encryption wallet open identified by "oracle12345";
이제 Wallet이 열려 있으므로 암호화된 컬럼에서 정상적으로 데이터를 조회할 수 있습니다.
암호화된 컬럼을 포함하는 테이블 생성
다음 명령어를 사용하여 암호화된 컬럼을 포함하는 테이블을 생성합니다:
CREATE TABLE test2 (id number,name varchar2(20),s_s_num number ENCRYPT);
비기본 알고리즘과 NO SALT 옵션을 사용한 테이블 생성
SALT는 데이터가 암호화되기 전에 추가되는 임의의 문자열로, 데이터를 더욱 안전하게 만들고 해킹을 더 어렵게 만듭니다. 기본적으로 TDE는 평문을 암호화하기 전에 SALT를 추가합니다.
SALT 옵션으로 암호화된 컬럼에는 인덱스를 생성할 수 없습니다. 암호화된 컬럼에 인덱스를 추가하려면 다음 예제와 같이 NO SALT 옵션을 사용해야 합니다:
CREATE TABLE test3 (id number,name varchar2(20),s_s_num number ENCRYPT NO SALT,Ph_no number ENCRYPT USING '3DES168');
여기서 S_S_NUM 컬럼은 NO SALT 옵션으로 암호화되었고, PH_NO 컬럼은 기본 SALT 옵션으로 생성되었습니다.
다음 예제는 PH_NO 컬럼이 기본적으로 SALT 옵션으로 생성되었기 때문에 해당 컬럼에 인덱스를 생성할 수 없음을 보여줍니다.
기존 테이블의 컬럼 암호화
다음 명령어는 기존 테이블의 컬럼을 암호화합니다:
ALTER TABLE test1 ADD (ssn VARCHAR2(11) ENCRYPT);
컬럼의 암호화 비활성화
다음 명령어는 컬럼의 암호화를 비활성화합니다:
ALTER TABLE test1 MODIFY (ssn DECRYPT);
TDE 사용 시 제약 사항
TDE를 사용할 때는 다음 제약 사항에 유의해야 합니다:
- 암호화된 컬럼에는 B-tree 이외의 인덱스를 생성할 수 없습니다.
- 외부 대형 객체(BFILE)에는 암호화를 적용할 수 없습니다.
- Wallet이 닫혀 있으면 import 또는 export 작업을 수행할 수 없습니다.
Wallet이 닫혀 있어 발생하는 오류
Wallet이 열려 있어 성공한 경우
결론
무단 접근이나 백도어로부터 민감한 데이터를 보호해야 한다면 TDE 보안 옵션을 사용하는 것이 좋습니다. 이 기능을 활용하면 별도의 코딩이나 복잡한 키 관리 없이도 즉시 데이터 암호화와 컴플라이언스 요건 충족이 가능하므로, 더 전략적인 업무에 집중할 수 있습니다.
피드백 탭을 통해 의견을 남기거나 질문을 남겨 주세요.
전문가의 관리, 운영 및 구성으로 환경 최적화
Rackspace의 Application services (RAS) 전문가들은 폭넓은 애플리케이션 포트폴리오 전반에 걸쳐 다음과 같은 전문 및 관리형 서비스를 제공합니다:
- e커머스 및 디지털 경험 플랫폼
- 엔터프라이즈 리소스 플래닝(ERP)
- 비즈니스 인텔리전스
- Salesforce 고객 관계 관리(CRM)
- 데이터베이스
- 이메일 호스팅 및 생산성
저희가 제공하는 것:
- 편향 없는 전문성: 현대화 여정을 단순화하고 안내하며, 즉각적인 가치를 창출하는 역량에 집중합니다.
- Fanatical Experience™: '프로세스 우선, 기술은 그다음(Process first. Technology second.®)' 접근 방식과 전담 기술 지원을 결합하여 종합적인 솔루션을 제공합니다.
- 타의 추종을 불허하는 포트폴리오: 광범위한 클라우드 경험을 바탕으로 적합한 클라우드에 적합한 기술을 선택하고 배포할 수 있도록 돕습니다.
- 민첩한 제공: 고객의 여정 단계에 맞춰 함께하며, 저희의 성공을 고객의 성공과 일치시킵니다.
지금 바로 채팅으로 시작해 보세요.