책너두 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 테이블 생성
| |
- 일반적인 테이블 생성 구문과 동일하며 마지막에
encryption='Y'옵션만 추가로 넣으면 된다. - 암호화된 테이블만 검색할 떄는
information_schema의 TABLES 뷰를 이용하면 된다.
7.3.2 응용 프로그램 암호화와의 비교
- 응용 프로그램에서 암호화된 칼럼은 인덱스를 생성하더라도 인덱스의 기능을 100% 활용할 수 없다.
- 둘 중 선택할거면 MySQL 서버의 암호화 기능 선택을 권장한다.
읽고 나서
보안에 관한 질문이 기술면접떄 많았다. 틈틈히 알아두자