데이터를 물리적으로 암호화하기 위해 아래와 같이 구성하여 사용

 

1. install  
data-at-rest는 10.1 버전부터 기본적으로 포함되어 있어 해당 plugin를 load함

 

[mysqld]

plugin_load_add = file_key_management

 

2.  key password 생성

데이터 암호화를 위해 사용할 key 생성

 

openssl rand -hex 128 >> keystring.key

openssl rand -hex 128 >> keystring.key

 

여러개를 넣고 kestring.key 파일을 열어 각각 암호화 키에 대해 index를 넣어줌

1;xxxxxxxxxxxxxxxxxx

2;eeeeeeeeeeeeeeeee

 

3. key file encrypt
파일 암호화를 위한 password 파일 생성
openssl rand -hex 128 > keyfile.key

데이터 암호화 키를 가진 파일을 전체 암호화
opensssl enc -aes-256-cbc -md sha1 -pass file:keyfile.key -in keystring.key -out keyfile.enc

원본 key 정보 파일 삭제 (keyfile)

 

4. my.cnf 옵션 설정

아래 정보를 my.cnf에 추가하고 난 후 mysql restart 수행 

(설정이 오류가 나거나 plugin를 로드 되지 않을 경우 unknown parameter 와 같이 에러발생)

 

[mysqld]

file_key_management_filename = /etc/mysql/encryption/keyfile.enc
file_key_management_filekey = FILE:/etc/mysql/encryption/keyfile.key
file_key_management_encryption_algorithm = AES_CBC

 

5. encrypt 테이블 생성

암호화 테이블 생성 또는 기존 테이블 수정

create table test (id int, value varchar(100)) encrypted=yes encryption_key_id=1;
alter table t1 encrypted=yes encryption_key_id = 10;

 

6. encypt 구성된 테이블 확인

SELECT * FROM information_schema.INNODB_TABLESPACES_ENCRYPTION\G;

 

7. binlog 사용시

mysqlbinlog --read-from-remote-server 옵션 추가

 

8. disable encrypt

alter table test.t1 encrypted=no;
SHOW VARIABLES LIKE 'innodb_fast_shutdown'; 확인후 2에서 1로 수정하고 innodb_encrypt_log =OFF 만든후 restart

 

9. 기타 옵션

encrypt-binlog                                 # binlog encrypt
innodb-encrypt-tables = ON               # innodb table 전체를 암호화
innodb-encrypt-log = ON                  # innodb log를 암호화
innodb-encryption-threads=8              # innodb-encrypt-tables 또는 key rotating 선택시 자동수행 thread 수

 

10. 비교

구분 MariaDB 10.3 MySQL 8.0
encrypted InnoDB data Y Y
encrypted non-InnoDB data Aria-only N
encrypted InnoDB logs Y Y
automatic encryption Y N
enforced encryption Y N
automatic key rotation Y N
encrypted binary logs Y N
encrypted online DDL ? N
encrypted keyring Y Enterprise-only
mysql.slave_master_info N N
mysql.servers N N
Hashicorp Vault N N
AWS KMS Y Enterprise-only

'RDB > MySQL' 카테고리의 다른 글

mariadb 데이터 암/복호화  (0) 2019.04.08
mariabackup 사용  (0) 2019.04.08
mysql 8.0 인증오류 - sqlstate[hy000] [2054] the server  (0) 2019.03.26
xtrabackup 백업 및 복구  (0) 2018.12.31
mysql 테이블 복구 (meta 정보 이상)  (0) 2018.05.10

+ Recent posts