Transparent Data Encryption

데이터 암호화

책너두 6기 19일차

백은빈, 이성욱의 Real MySQL8.0 1권 p.195 ~ p.204

내용정리

07 데이터 암호화

  • 데이터 암호화 여부는 보안 감사에서 필수적
  • 데이터 파일, 리두 로그, 언두 로그, 복제를 위한 바이너리 로그 등 모두 암호화 가능

7.1 MySQL 서버의 데이터 암호화

  • TDE(Transparent Data Encryption) 혹은 Data at Rest Encryption 라고 한다.

7.1.1 2단계 키 관리

  • 서버의 TED에서 암호화 키는 키링(KeyRing) 플러그인이 관리한다.
  • 커뮤니티 에디션
    • keyring_file : File-Based 플러그인
  • 엔터프라이즈 에디션
    • keyring_encrypted_file : Keyring 플러그인
    • keyring_okv : KMIP 플러그인
    • keyring_aws : Amazon Web Services Keyring 플러그인
  • 서버의 데이터 암호화 : 마스터 키(master key)와 테이블스페이스 키(tablespace key 혹은 private key) 두 종류.
  • 외부 키 관리 솔류션 또는 디스크의 파일에서 마스터 키를 가져오고, 암호화된 테이블이 생성될 때 마다 해당 테이블을 위한 임의의 테이블스페이스 키를 발급
  • 서버는 마스터 키를 이용해 테이블스페이스 키를 암호화해서 각 테이블의 데이터 파일 헤더에 저장
  • 테이블스페이스키는 외부로 노출되지 않아 주기적으로 변경할 필요 없음
  • 테이블이 삭제되지 않는이상 변경되지 않음
  • 마스터키는 노출 가능성이 있어 주기적으로 변경 필요

    • alter instance rotate innodb master key;
  • 마스터키 변경 중 서버의 테이블스페이스 키 자체와 데이터 파일의 데이터는 변경안됨. 복호화한 후 새로 암호화할 뿐

7.1.2 암호화와 성능

  • 디스크로부터 한번 읽은 데이터 페이지는 복호화되어 InnoDB의 버퍼 풀에 적재된다.
  • 암호화와 압축이 동시에 적용되면 압축을 먼저 한다.

7.1.3 암호화와 복제

  • 서버의 복제에서 레플리카 서버는 마스터 키와 테이블스페이스 키 까지 복사하지 않는다.
  • 둘은 서로 각자의 마스터 키와 테이블스페이스 키를 관리한다.
  • 복제 멤버들의 데이터 파일은 암호화 되기 전의 값이 동일하더라도 실제 암호화된 데이터가 저장된 데이터 파일의 내용은 달라진다.

7.2 Keyring_file 플러그인 설치

  • TDE의 암호화 키 관리는 플러그인 방식으로 제공된다.
  • TDE 플러그인은 서버가 시작되는 단계에서도 가장 빨리 초기화돼야 한다.

7.3 테이블 암호화

  • 모든 키링 플러그인을 사용하든 암호화된 테이블을 생성하고 활용하는 방법은 동일하다.

7.3.1 테이블 생성

create table tab_encrypted (
	id int,
	data varchar(100),
	primary key(id)
	) encryption='Y';
  • 일반적인 테이블 생성 구문과 동일하며 마지막에 encryption='Y'옵션만 추가로 넣으면 된다.
  • 암호화된 테이블만 검색할 떄는 information_schema의 TABLES 뷰를 이용하면 된다.

7.3.2 응용 프로그램 암호화와의 비교

  • 응용 프로그램에서 암호화된 칼럼은 인덱스를 생성하더라도 인덱스의 기능을 100% 활용할 수 없다.
  • 둘 중 선택할거면 MySQL 서버의 암호화 기능 선택을 권장한다.

읽고 나서

보안에 관한 질문이 기술면접떄 많았다. 틈틈히 알아두자