티스토리 뷰
8.0 버전 부터 데이터 파일, 언두 로그, 리두 로그, 바이너리 로그 등에도 암호화 지원.
보안상 중요한 데이터, 핀테크에서는 애플리케이션에서 암호화한 데이터(컬럼 단위)를 데이터베이스에서 한번 더 암호화(테이블 단위)하기도 한다.
7.1 MySQL 서버의 데이터 암호화
실제 디스크와 I/O가 일어날 때 암호화/복호화가 일어난다. 즉, MySQL서버의 I/O레이어 에서만 암호화/복호화가 일어난다.
따라서 쿼리 처리과정에서 사용자는 암호화에 대해 인식하지 않아도 된다.(암호화되지 않은 테이블과 똑같은 처리 과정을 거친다.)
암호화 활성화 유무에 관계없이 MySQL 내부와 사용자는 아무런 차이를 느끼지 못한다. 이러한 암호화 방식을 TDE(transparent data encryption)이라 한다.
7.1.1 2단계 키 관리
마스터 키, 테이블 스페이스 키가 있다.
테이블 스페이스 키는 테이블당 하나가 존재한다.(테이블 생성 시 임의로 발급)
MySQL 서버는 테이블 스페이스 키를 마스터 키로 암호화해서 테이블의 데이터 파일 헤더에 저장한다.
테이블 스페이스 키는 외부로 노출될 일이 없기 때문에 변경하지 않아도 된다. 하지만 마스터 키는 외부 파일을 사용하기도 해서 변경할 일이 있다.
마스터 키를 변경하면, 기존의 마스터키로 테이블 스페이스 키를 복호화하고 새로운 마스터키로 암호화해서 저장한다.
테이블 스페이스 키 자체를 변경하지는 않는다. 테이블 스페이스 키를 변경하게 되면, 테이블의 모든 데이터 또한 새롭게 암호화해야한다.
마스터 키 변경 할 때마다 이러한 작업을 하는 것은 매우 성능이 안 좋기 때문에, 테이블 스페이스 키는 변경하지 않는다.
7.1.2 암호화 성능
디스크에서 읽어야하는 페이지의 개수만큼 레이턴시가 발생한다.
같은 테이블에 압축, 암호화 모두 적용되면 압축을 먼저하고 그다음에 암호화한다.
7.1.3 암호화와 복제
레플리카 서버의 마스터키는 원본과 다르다.
7.2 keyring_file 플러그인 설치
keyring_file 플러그인에서 마스터 키는 평문으로 디스크에 저장된다. 노출되면 암호화가 무용지물. 자세한 설치법은 나중에 필요할 때 참고
'Real MySQL 8.0' 카테고리의 다른 글
[Real MySQL 8.0] 8. 인덱스 (0) | 2023.01.24 |
---|---|
[Real MySQL 8.0] 7. 데이터 암호화(2) (1) | 2023.01.24 |
[Real MySQL 8.0] 6. 데이터 압축 (1) | 2023.01.21 |
[Real MySQL 8.0] 5. 4 MySQL의 격리 수준 (0) | 2023.01.21 |
[Real MySQL 8.0] 5. 3 MySQL 스토리지 엔진 잠금 (0) | 2023.01.20 |