책너두 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 서버의 암호화 기능 선택을 권장한다.
읽고 나서
보안에 관한 질문이 기술면접떄 많았다. 틈틈히 알아두자