- Mariadb 가 설치 되어 있다는 가정으로 진행
- File Key Management Encryption Plugin (파일 키 관리 암호화 플러그인) 사용
체크해야 할 부분
- /etc/mysql 에 my.cnf 파일 있는지 확인
- 키 파일 /etc/mysql/key.enc 에 저장
- 암호화 키 /kms 에 저장 (kms 폴더 생성)
TDE 적용
- 암호화에 사용할 키 생성
// Linux
$ (echo -n "1;" ; openssl rand -hex 32 ) | sudo tee -a key.src
$ (echo -n "2;" ; openssl rand -hex 32 ) | sudo tee -a key.src
// Windows
"1;$(openssl rand -hex 32)" | Out-File "C:\kms\key.src"
Add-Content "C:\kms\key.src" "2;$(openssl rand -hex 32)"
- key.src 파일을 암호화하는 키 값을 가진 파일 생성
// Linux
$ openssl rand -hex 32 | sudo tee -a /kms/key.dec
// Windows
openssl rand -hex 32 | Out-File "C:\kms\key.dec"
- key.dec 파일을 이용해 key.src 파일을 암호화 하여 key.enc 파일 생성
- key.src 파일 삭제
// Linux
$ openssl enc -aes-256-cbc -md sha1 -pass file:/kms/key.dec -in key.src -out /etc/mysql/key.enc
$ rm key.src
// Windows
openssl enc -aes-256-cbc -md sha1 -pass file:"C:\kms\key.dec" -in "C:\kms\key.src" -out "C:\kms\key.enc"
- my.cnf 파일에 아래 내용 추가
[mariadb]
plugin_dir = /usr/lib/mysql/plugin
plugin_load_add = file_key_management
file_key_management_filename = /etc/mysql/key.enc
file_key_management_filekey = FILE:/kms/key.dec
- plugin_dir 경로는 정확한 경로 확인 필요
- 참고로 위 내용을 적용하기 위해 플러그인이 설치 되어 있어야함 (file_key_management)
- mysql 접속 후 플러그인이 제대로 로드되어있는지 확인
-- sql 접속
mysql -u root -p
-- 플러그인 목록에서 file_key_management가 잘 로드되어 있는지 확인합니다.
SELECT * FROM information_schema.PLUGINS WHERE PLUGIN_NAME like 'file_key%';
-- file_key_management 관련 설정값을 확인합니다.
SHOW GLOBAL VARIABLES LIKE 'file_key%';
- file_key_management 수동 설치 / 설치 경로 확인
sudo apt-get update
sudo apt-get install mariadb-plugin-file-key-management
mysql -u root -p -e "SHOW VARIABLES LIKE 'plugin_dir';"
// 해당 위치에 파일이 있는지 확인
// 예시
ls -l /usr/lib/mysql/plugin/file_key_management.so
ls -l /usr/lib/x86_64-linux-gnu/mariadb19/plugin/file_key_management.so
- my.cnf 설정 파일 수정
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
-- 아래 내용 추가
[mariadb]
plugin_dir = /usr/lib/mysql/plugin/
plugin_load_add = file_key_management
file_key_management_filename = /etc/mysql/key.enc
file_key_management_filekey = FILE:/kms/key.dec
innodb_encrypt_tables = FORCE
innodb_encrypt_log = ON
innodb_encrypt_temporary_tables = ON
encrypt_tmp_disk_tables = ON
encrypt_tmp_files = ON
encrypt_binlog = ON
aria_encrypt_tables = ON
innodb_encryption_threads = 4
innodb_encryption_rotation_iops = 2000
- MariaDB 재시작
// Linux
sudo systemctl restart mariadb
// Windows
net stop MariaDB
net start MariaDB
테이블에 TDE 적용
1. 기존 테이블에 TDE 적용
ALTER TABLE existing_table ENGINE=InnoDB, ENCRYPTED=YES;
2. TDE 적용 여부 확인
SELECT TABLE_SCHEMA, TABLE_NAME, CREATE_OPTIONS
FROM information_schema.tables
WHERE TABLE_SCHEMA = 'testdb'
TDE 적용시 주의사항 [주로 윈도우 서버]
- Power shell admin 에서 작업
- 파일 형식 체크
- type "C:\kms\key.dec”
- key.enc 를 생성하기 전에 확인 필요
- key.src, key.dec, key.enc 모두 ANSI 형식 이어야함
- 다를경우 Notepad++ 에서 형식 변경 필요
'데이터베이스 [DB]' 카테고리의 다른 글
[MariaDB] 1_데이터베이스와 DBMS란 (0) | 2022.01.26 |
---|