데이터베이스/Database

[At-Rest 암호화] 저장된 데이터 보호하기

Dachaes 2025. 5. 6. 15:33
728x90
반응형
728x90

데이터베이스 암호화 : At-Rest 방식

기업이 보유한 데이터가 점점 더 민감하고 중요해지면서, 데이터베이스 수준에서의 암호화는 선택이 아닌 필수가 되었습니다. 특히 개인정보보호법, GDPR, HIPAA 등 다양한 규제에 대응하려면 저장된 데이터를 안전하게 보호할 수 있는 기술적 조치가 요구됩니다. 데이터베이스 암호화는 단순히 암호 알고리즘을 적용하는 것 이상의 고려가 필요합니다. 성능, 운영, 키 관리, 복구 시나리오 등 다양한 요소가 영향을 미치기 때문입니다.
이 글에서는 Transparent Data Encryption(TDE), API 기반 애플리케이션 암호화, 플러그인 기반 암호화, 하이브리드 암호화 방식 등 주요 기법을 비교하고, 어떤 상황에서 어떤 방식을 선택해야 하는지 구체적으로 설명합니다.

 


1.  데이터베이스 암호화란?

데이터베이스 암호화(Database Encryption)는 DB에 저장된 데이터를 암호화하여 비인가 접근으로부터 정보를 보호하는 기술입니다. 보통 다음 두 종류로 나뉩니다.

  • 정적 데이터 암호화(At-Rest) : 저장된 데이터를 암호화 (예: TDE)
  • 전송 중 데이터 암호화(In-Transit) : 네트워크 전송 중 데이터를 암호화 (예: TLS/SSL)

이 글에서는 At-Rest 암호화를 중심으로 설명합니다.

 


2.  At-Rest 암호화 (정적 데이터 암호화)

디스크에 저장되어 있는 데이터를 암호화하는 방식입니다. 주로 DB 파일, 테이블, 컬럼, 백업 파일 등에 적용되며, 하드디스크나 SSD에 물리적으로 기록되는 데이터를 암호화합니다.

적용 구간 예시

  • 데이터 파일 (DBMS의 테이블스페이스, 인덱스 파일 등)
  • DB 백업 파일
  • 로그 파일 (예: binlog, transaction log)
  • 스냅샷 등 스토리지 계층 데이터

대표적인 기술 : TDE(Transparent Data Encryption), 파일 시스템 암호화(LUKS 등)

 


3.  주요 At-Rest 암호화 방식들

a.  TDE (Transparent Data Encryption)

TDE는 데이터 파일 자체를 암호화하는 방식으로, 응용 프로그램이나 SQL 쿼리에는 변화를 주지 않아도 되는 방식입니다. 데이터 파일이 디스크에 기록될 때 자동으로 암호화되고, 메모리에서 읽을 때는 자동 복호화됩니다.

  • 운영 부담 적음 : 코드 수정 없이 적용 가능합니다.
  • 주요 DBMS 지원 : Oracle, SQL Server, PostgreSQL, MySQL 등에서 지원합니다.
  • 성능 영향 있음 : I/O 성능에 일정 부분 영향이 있습니다.

예시 - Oracle TDE 설정 (간단 버전)

-- 마스터 키 생성
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "password";
ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY "password" WITH BACKUP;

-- 테이블스페이스 암호화
CREATE TABLESPACE secure_ts ENCRYPTION 'AES256' DEFAULT STORAGE(ENCRYPT);

b.  API 기반 애플리케이션 암호화

애플리케이션 레벨에서 데이터를 수동으로 암호화하고, DB에는 암호화된 값을 저장하는 방식입니다. 암/복호화 로직이 API 또는 미들웨어 레이어에 포함됩니다.

  • 정교한 제어 가능 : 필드 단위 암호화, 특정 열만 선택이 가능합니다.
  • 비용 높은 개발 작업 : 애플리케이션 코드에 변경이 필요합니다.
  • 키 관리 어려움 : 키 분실 시 복구 불가능합니다.

예시 - Java에서 AES 암호화

SecretKey key = new SecretKeySpec(secretKeyBytes, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encrypted = cipher.doFinal(plainText.getBytes());

c.  플러그인 기반 암호화 (Plugin-based Encryption)

DBMS의 확장 기능이나 보안 솔루션에서 제공하는 플러그인을 이용해 암호화를 처리하는 방식입니다. 예를 들어 MySQL의 Encryption Plugin 또는 MariaDB의 file_key_management 플러그인이 있습니다.

  • DB 자체 기능을 활용하되 확장성이 존재합니다.
  • 엔터프라이즈 제품에서는 감사 로그, 키 회전 기능 포함됩니다.
  • 설정 복잡도는 제품에 따라 다릅니다.

예시 - MariaDB 플러그인 기반 암호화

[mysqld]
plugin_load_add = file_key_management
file_key_management_filename = /etc/mysql/encryption_keys.txt
encrypt_binlog = 1

d.  하이브리드 암호화 방식

TDE와 API 암호화를 조합하거나, DB-level 암호화와 Storage-level 암호화를 병행하는 방식입니다. 민감도에 따라 계층적으로 암호화 정책을 다르게 적용합니다.

  • TDE : 전체 테이블 암호화를 지원합니다. (기본 보안 제공)
  • API 암호화 : 주민등록번호, 비밀번호 등 민감 정보만 별도로 이중 암호화할 수 있습니다.
  • 스토리지 암호화 : 운영체제 또는 스토리지 수준에서 암호화 처리 가능합니다. (예: LUKS, eCryptfs)

장점

  • 보안 수준 극대화
  • 데이터 노출 리스크 최소화

단점

  • 복잡한 키 관리, 성능 저하 가능성

 


4.  암호화 방식 비교

방식 암호화 계층 장점 단점
TDE DB 엔진 코드 수정 없음, 빠른 적용 필드 단위 제어 불가, 성능 저하
API 애플리케이션 세밀한 제어, 일부 필드만 암호화 가능 개발 비용 증가, 키 관리 필요
Plugin DB 확장 유연한 설정 가능 설정 복잡, DBMS 종속
Hybrid 다중 계층 보안 강화 아키텍처 복잡성 증가

 


5.  At-Rest 암호화 적용 시 고려할 요소

  • 성능 : 대량의 데이터 처리 시 암호화로 인한 I/O 병목이 발생 할 수 있습니다.
  • 키 관리 : 키 분실은 곧 데이터 손실이므로 KMS(AWS KMS, HashiCorp Vault 등) 도입을 고려하는 것이 좋습니다.
  • 복구 전략 : 백업된 데이터도 암호화 상태 유지 여부 확인이 가능합니다.
  • 감사(Audit) : 누가 어떤 데이터를 접근했는지 추적할 수 있어야 합니다.

 


6.  마무리

  • 데이터베이스 암호화는 보안과 규정 준수를 위한 핵심 기술입니다.
  • TDE는 적용이 쉬운 반면 필드 단위 제어가 어렵고, API 암호화는 정밀한 제어가 가능한 대신 구현 부담이 큽니다.
  • 플러그인 방식은 제품 확장성을 제공하며, 하이브리드 방식은 최고 수준의 보안을 위한 전략입니다.
  • 성능, 키 관리, 법적 요건, 개발 비용 등을 종합적으로 고려해 최적의 암호화 전략을 수립해야 합니다.

함께 보면 좋은 자료

블로그 글 :

 

[데이터베이스 암호화] In-Transit 암호화 방식 완전 정리

데이터베이스 암호화 : In-Transit 방식 기업 환경에서 데이터는 단순히 저장되어 있을 뿐만 아니라, 지속적으로 이동(전송)하며 사용됩니다. 특히 클라이언트와 데이터베이스 서버 간, 혹은 마이

dachaes-devlogs.tistory.com

 


반응형
728x90
반응형