: 테이블 암호화가 적용되어도 바이너리 로그와 릴레이 로그 파일 또한 리두 로그나 언두 로그처럼 평문을 저장
: 일반적으로 언두 로그나 리두 로그는 길지 않은 시간 동안 데이터를 보유하고 있기 때문에 민감하지 않을 수 있지만 바이너리 로그는 다르다..
: 바이너리 로그는 의도적으로 상당히 긴 시간 동안 보관하는 서비스도 있고 증분 백업을 위해 바이너리 로그를 보관하기도 함
: 바이너리 로그와 릴레이 로그 파일 암호화 기능은 디스크에 저장된 로그 파일에 대한 암호화만 담당하고 MySQL 서버의 메모리 내부 또는 소스 서버와 레플리카 서버 간의
네트워크 구간에서의 로그 데이터는 암호화하지 않음
: 복제 멤버 간의 네트워크 구간에서도 바이너리 로그를 암호화하고자 한다면 MySQL 복제를 위한 계정이 SSL을 사용하도록 설정하면 된다.
1. 바이너리 로그 암호화 키 관리
: 바이너리 로그와 릴레이 로그 파일 데이터의 암호화를 위해서도 MySQL 서버는 2단계 암호화 키 관리 방식을 사용
: 바이너리 로그와 릴레이 로그 파일의 데이터는 파일 키로 암호화해서 디스크로 저장하고 파일 키는 바이너리 로그 암호화 키로 암호화해서 각 바이너리 로그와 릴레이 로그 파일의
헤더에 저장
2. 바이너리 로그 암호화 키 변경
: 바이너리 로그 암호화 키는 다음으로 변경할 수 있음, ALTER INSTANCE ROTATE MASTER KEY;
: 변경 과정
1.
증가된 시퀀스 번호화 함께 새로운 바이너리 로그 암호화 키 발급 후 키링 파일에 저장
2.
바이너리 로그 파일과 릴레이 로그 파일 스위치(새로운 로그 파일로 로테이션)
3.
새로 생성되는 바이너리 로그와 릴레이 로그 파일의 암호화를 위해 파일 키를 생성하고, 파일 키는 바이너리 로그 파일 키(마스터 키)로 암호화해서 각 로그 파일에 저장
4.
기존 바이너리 로그와 릴레이 로그 파일의 파일 키를 읽어서 새로운 바이너리 로그 파일 키로 암호화해서 다시 저장
5.
모든 바이너리 로그와 릴레이 로그 파일이 새로운 바이너리 로그 암호화 키로 다시 암호화됐다면 기존 바이너리 로그 암호화 키를 키링 파일에서 제거
3. mysqlbinlog 도구 활용
: 바이너리 로그 암호화 키는 MySQL 서버만 가지고 있어서 바이너리 로그 파일을 외부에서 복호화가 불가능
: 그래서 암호화된 바이너리 로그 파일의 내용을 볼 수 있는 방법은 MySQL 서버를 통해 가져오는 방법이 유일, mysqlbinlog 명령을 실행할 때 --read-from-remote-server
파라미터와 함께 접속 정보를 입력