Skip to main content

# 데이터 암호화

데이터 파일(테이블 스페이스) 리두 로그, 언두 로그, 바이너리 로그 등에 대한 암호화 기능을 지원한다.

데이터베이스 수준에서는 테이블 단위로 암호화를 적용한다.

7.1 MySQL 서버의 데이터 암호화

  • 데이터베이스 서버와 디스크 사이에서 데이터를 읽고 쓰는 지점에서 암호화 또는 복호화를 수행한다. 즉, MySQL서버의 I/O레이어에서만 데이터의 암호화 및 복호화 과정이 실행된다.
  • 따라서 MySQL 엔진에서와 사용자 입장에서는 암호화 기능의 활성화 여부에 따른 차이가 없으며 이러한 암호화 방식을 가리켜 TDE(Transparent Data Encryption)이라고 한다.

7.1.1 2단계 키 관리

  • TDE에서 암호화 키는 키링(KeyRing) 플러그인에 의해 관리된다.
  • 2단계 키 관리 방식을 사용한다.
  • 마스터 키와 테이블스페이스 키가 존재하며, 마스터 키는 외부에서 사용되며, 마스터 키를 이용해 테이블스페이스키를 암호화해서 각 테이블의 데이터 파일 헤더에 저장한다. 테이블스페이스키는 외부로 노출되지 않기 때문에 안전하며, 마스터키는 외부에 노출되기 때문에 주기적으로 변경해야하며, 마스터 키가 변경되면 그에 따른 테이블스페이스키도 모두 변경된다.

7.1.2 암호화와 성능

  • 한번 읽은 페이지는 복호화되어 버퍼 풀에 적재되며 이러한 경우에는 암호화되지 않은 테이블과 동일한 성능을 보일 것이다. 하지만 버퍼 풀에 존재하지 않는 데이터 페이지를 읽어야 하는 경우에는 복호화 시간동안 쿼리 처리가 지연될 것이다.
  • 저장할 때도 암호화되는 시간이 추가로 걸리지만 백그라운드 스레드가 수행하기 때문에 실제 사용자 쿼리가 지연되는 것은 아니다.

7.1.3 암호화와 복제

  • 마스터키와 테이블스페이스키는 복제되지 않기 때문에 암호화 되기전의 값이 동일하더라고 원본과 레플리카의 암호화된 데이터 파일의 내용은 완전히 달라진다.