Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

My sql tde kr_v1.0

266 views

Published on

Sharing MySQL TDE test on mysql5.7.12 and OL6.6.

Published in: Data & Analytics
  • Be the first to comment

  • Be the first to like this

My sql tde kr_v1.0

  1. 1. © 2016, Oracle Corporation and/or its affiliates 1 MySQL TDE June, 2016 Sumi Ryu, MySQL APAC Sales Consultant sumi.ryu@oracle.com
  2. 2. © 2016, Oracle Corporation and/or its affiliates 2 이 문서는 MySQL 5.7.11에 추가된 MySQL TDE기능에 대해 설명하기 위해 만들어진 문서이며, 해 당 문서의 저작권은 오라클에 있습니다. 내용이 이상하거나 오탈자에 대해 알려주실 분이 계신다 면 위의 제 email로 부탁드립니다. MySQL TDE 기능을 이해하시는데 도움이 되길 바래봅니다. 1. Keyring plugin Installation // Keyring plugin은 스토리지엔진이 올라오기 전에 먼저 올라와야 하므로 my.cnf 파일에 아래 두변수 추가해준다. [mysqld] early-plugin-load=keyring_file.so keyring_file_data=/usr/local/mysql/mysql-keyring/keyring 2. Keyring plugin 설치 확인 // mysql server restart 한 다음 mysql client로 접속 후 정상적으로 plugin이 active되었는지 확 인한다. mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS -> WHERE PLUGIN_NAME LIKE 'keyring%'; +--------------+---------------+ | PLUGIN_NAME | PLUGIN_STATUS | +--------------+---------------+ | keyring_file | ACTIVE | +--------------+---------------+ 3. Key 생성
  3. 3. © 2016, Oracle Corporation and/or its affiliates 3 // mysql server restart 한 다음 mysql client로 접속 후 정상적으로 plugin이 active되었는지 확 인한다. mysql> alter instance rotate innodb master key; Query OK, 0 rows affected (0.00 sec) [root@smdomain mysql]# cd mysql-keyring/ [root@smdomain mysql-keyring]# ll total 4 -rw-r-----. 1 mysql mysql 155 May 27 03:43 keyring [root@smdomain mysql-keyring]# hexdump keyring 0000000 654b 7279 6e69 2067 6966 656c 7620 7265 0000010 6973 6e6f 313a 302e 0080 0000 0000 0000 0000020 0030 0000 0000 0000 0003 0000 0000 0000 0000030 0000 0000 0000 0000 0020 0000 0000 0000 0000040 4e49 4f4e 4244 654b 2d79 3332 6238 3833 0000050 3636 322d 6530 2d66 3131 3665 392d 6566 0000060 2d62 3830 3030 3732 6632 6465 6635 312d 0000070 4541 0153 1ea0 c241 65b1 4da5 9e8a 918b 0000080 d433 aac9 a023 3c5e 4753 58a5 c2cb 3487 0000090 4972 0093 0000 0000 4f45 0046 000009b // Default 위치가 아닌 다른 위치에 Keyring 파일을 저장할 경우 아래의 작업이 필요함, default 위치에 mysql을 설치한 후 keyring 파일도 default 위치를 설정한다면 아래 작업은 필요없다. shell> cd /usr/local/mysql shell> mkdir mysql-keyring shell> chmod 750 mysql-keyring shell> chown mysql mysql-keyring shell> chgrp mysql mysql-keyring
  4. 4. © 2016, Oracle Corporation and/or its affiliates 4 4. TDE 테스트를 위한 DB 및 Table 생성 // DB 생성 mysql> create database mytest; Query OK, 1 row affected (0.00 sec) // 암호화 테스트를 위한 테이블 t1을 생성하고, 아래처럼 테이블 생성 시 encryption="Y"를 꼭 추가해줘야 암호화 됨. mysql> create table t1 (id int(10) unsigned not null auto_increment primary key, name varchar(20)) engine=innodb encryption="Y"; Query OK, 0 rows affected (0.02 sec) // 테이블 생성 후 TDE가 정상적으로 적용됐는지 확인 mysql> select table_schema, table_name, create_options from information_schema.tables where create_options like 'ENCRYPTION="Y"'; +--------------+------------+----------------+ | table_schema | table_name | create_options | +--------------+------------+----------------+ | mytest | t1 | ENCRYPTION="Y" | +--------------+------------+----------------+ 1 row in set (0.07 sec) // 데이터 적재 및 암호화 하지 않은 table t2 생성 mysql> insert into t1 (name) values ('sumi'); Query OK, 1 row affected (0.02 sec) mysql> insert into t1 (name) values ('Hyeyoung'); Query OK, 1 row affected (0.00 sec) mysql> insert into t1 (name) values ('Seoyoun');
  5. 5. © 2016, Oracle Corporation and/or its affiliates 5 Query OK, 1 row affected (0.00 sec) mysql> insert into t1 (name) values ('Hyunwoo'); Query OK, 1 row affected (0.00 sec) mysql> create table t1 (id int(10) unsigned not null auto_increment primary key, name varchar(20)) engine=innodb encryption="N"; Query OK, 0 rows affected (0.02 sec) mysql> insert into t2 (name) values ('sumi'); Query OK, 1 row affected (0.01 sec) mysql> insert into t2 (name) values ('Hyeyoung'); Query OK, 1 row affected (0.00 sec) mysql> insert into t2 (name) values ('Hyunwoo'); Query OK, 1 row affected (0.00 sec) mysql> insert into t2 (name) values (Seoyoun); Query OK, 1 row affected (0.01 sec) 5. TDE 정상적으로 적용되었는지 // 테이블 생성과 테이타를 insert가 끝났다면 정말 해당 데이터가 암호화되어 저장되어 있는지 확인해 본다. 이를 위해서 mysql user로 login 한다. 암호화된 t1 테이블에 대한 ibd파일을 strings로 보면 아래처럼 암호화어 보여진다. ash-4.1$ strings t1.ibd ;R'v=>0 #MvR c^V_? 9@0 Xyc2 U[9=q b<Rm
  6. 6. © 2016, Oracle Corporation and/or its affiliates 6 ~;P0O rD h 중략 … // 암호화되지 않은 t2에 대한 ibd파일을 strings로 보면 문자열이 그대로 보이는 걸 확인할 수 있다. bash-4.1$ strings t2.ibd infimum supremum sumi Hyeyoung Hyunwoo Seoyoun

×