Database/Mysql

[Real MySQL] 7-1. 데이터 암호화: MySQL 서버

noahkim_ 2025. 3. 9. 06:51

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다.


1. MySQL 서버의 데이터 암호화

TDE

  • 스토리지 엔진의 I/O 레이어와 디스크 사이에서 암호화/복호화 수행
  • 즉, 데이터 파일이 디스크에 저장될 떄 암호화되고 읽을 떄 복호화됨
  • MySQL 서버에서는 테이블의 데이터가 암호화되있는지 여부를 파악할 필요 없음

 

2단계 키 관리

master key
  • 데이터베이스 전체의 키를 관리하는 최상위 키 (데이터를 암호화는 것이 아니라, tablespace key를 암호화)
  • 파일에 의해 관리되므로 보안상 주기적으로 변경해야 함
  • 키 변경) ALTER INSTANCE ROTATE INNODB MASTER KEY;

 

tablespace key (private key)
  • 각 테이블마다 개별적으로 존재하는 키
  • 마스터 키에 의해 암호화됨
  • 내부적으로 노출되지 않으므로 보안상 취약점이 되지 않음

 

키링 플러그인
  • 안전한 암호화 키 관리 목적을 위해 사용함
    • 마스터 키와 테이블 스페이스 키 저장 및 관리
    • 암호화된 테이블 스페이스 키는 데이터 파일 헤더에 저장됨
  • keyring_file: 로컬 파일에 마스터 키 저장

 

성능

  • TDE 방식이므로, 디스크에서 읽을 떄만 복호화가 수행됨
  • 버퍼 풀에 적재되지 않은 페이지를 읽어올 경우, 복호화 과정으로 인해 쿼리 처리 시간이 지연됨

 

AES 알고리즘
  • 암호화에 사용되는 알고리즘
  • 암호화 결과가 평문의 결과와 동일한 크기의 암호문을 반환함
  • 즉, 암호화된다 해서 메모리 사용 효율이 떨어지지 않음

 

복제

  • 암호화 시, 레플리카 서버의 마스터 키와 테이블 스페이스 키 값이 소스 서버와 다름

 

마스터 키는 복제되지 않음
  • 마스터 키 자체가 레플리카로 복제되지 않음
  • 각 노드는 자체적인 마스터 키를 사용해야 함

 

암호화된 데이터의 파일 내용이 다름
  • 암호화되기 전의 값이 동일하더라도, 실제 암호화된 데이터가 저장된 데이터 파일의 내용은 완전히 달라짐
  • 사용하는 키가 다름