- 데이터 암호화
MySQL 서버의 암호화 기능은 데이터베이스 서버와 디스크 사이의 데이터 읽고 쓰기 지점에서 암호화 또는 복호화를 수행한다. MySQL 서버에서 사용자의 쿼리를 처리하는 과정에서 테이블의 데이터가 암호화돼 있는지 여부를 식별할 필요가 없으며, 암호화된 테이블도 그렇지 않은 테이블과 동일한 처리 과정을 거친다.
MySQL 서버의 TDE에서 암호화 키는 키링 플러그인에 의해 관리되고 키링 플러그인은 2단계 키 관리 방식을 사용한다. MySQL 서버의 데이터 암호화는 마스터 키와 테이블스페이스 키라는 두 가지 종류의 키를 가지고 있다. 이렇게 2단계 암호화 방식을 사용하는 이유는 암호화 키 변경으로 인한 과도한 시스템 부하를 피하기 위해서다.
MySQL 서버의 암호화는 데이터 페이지가 한 번 메모리에 적재되면 암호화되지 않은 테이블과 동일한 성능을 보인다. 하지만 쿼리가 InnoDB 버퍼 풀에 존재하지 않는 데이터 페이지를 읽어야 하는 경우에는 복호화 과정을 거치기 때문에 복호화 시간 동안 쿼리가 지연된다.
- 언두 로그 및 리두 로그 암호화
실행 중인 MySQL 서버에서 언두 로그나 리두 로그를 활성화한다고 하더라도 모든 데이터를 해당 시점에 한 번에 암호화해서 다시 저장할 수 없다. 그래서 암호화를 활성화했다가 비활성화한다고 해서 즉시 암호화에 사용된 키가 불필요해지는 것이 아니다.
- 바이너리 로그 암호화
테이블 암호화가 적용돼도 바이너리 로그와 릴레이 로그 파일 또한 리두 로그나 언두 로그처럼 평문을 저장한다. 바이너리 로그는 의도적으로 상당히 긴 시간 동안 보관하는 서비스도 있고 때로는 증분 백업을 위해 바이너리 로그를 보관하기도 한다. 이런 이유로 바이너리 로그 파일의 암호화는 상황에 따라 중요도가 높아질 수도 있다.
참조: 책 Real MySQL 8.0
'Database' 카테고리의 다른 글
| MySQL(12) - Index (0) | 2023.10.11 |
|---|---|
| MySQL(11) - Index (0) | 2023.10.10 |
| MySQL(9) (0) | 2023.10.06 |
| MySQL(8) (1) | 2023.10.05 |
| MySQL(7) (0) | 2023.09.28 |