SlideShare a Scribd company logo
© 2016, Oracle Corporation and/or its affiliates 1
MySQL TDE
June, 2016
Sumi Ryu, MySQL APAC Sales Consultant
sumi.ryu@oracle.com
© 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 생성
© 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
© 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');
© 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
© 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

More Related Content

ODP
1 mysql아키텍쳐 v1
ODP
2 mysql트랜잭션과잠금 v0
PDF
MySQL 상태 메시지 분석 및 활용
PDF
Oracle database 12 c on oracle linux 7.3
PPTX
Stingray with Physx
PDF
Tungsten 을활용한 MySQL / Hadoop 동기화
PDF
Federated Engine 실무적용사례
PDF
Intro KaKao ADT (Almighty Data Transmitter)
1 mysql아키텍쳐 v1
2 mysql트랜잭션과잠금 v0
MySQL 상태 메시지 분석 및 활용
Oracle database 12 c on oracle linux 7.3
Stingray with Physx
Tungsten 을활용한 MySQL / Hadoop 동기화
Federated Engine 실무적용사례
Intro KaKao ADT (Almighty Data Transmitter)

What's hot (11)

PDF
MySQL Deep dive with FusionIO
PDF
From MSSQL to MySQL
PDF
MySQL_Fabric_운영시유의사항
PDF
AWS 환경에서 MySQL BMT
PDF
Gluster fs guide(v1.0)
PPTX
Cactiez 설치, 백업, 복구
PDF
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
PDF
텔레그램을 이용한 양방향 모니터링 시스템 구축
PDF
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
PDF
테스트
PDF
Zabbix haproxy configuration_guide
MySQL Deep dive with FusionIO
From MSSQL to MySQL
MySQL_Fabric_운영시유의사항
AWS 환경에서 MySQL BMT
Gluster fs guide(v1.0)
Cactiez 설치, 백업, 복구
제 9회 엑셈 수요 세미나 자료 연구컨텐츠팀
텔레그램을 이용한 양방향 모니터링 시스템 구축
제 5회 엑셈 수요 세미나 자료 연구컨텐츠팀
테스트
Zabbix haproxy configuration_guide
Ad

Viewers also liked (6)

PPTX
MySQL Tech Tour 2015 - 5.7 Security
PDF
SQLアンチパターン(インデックスショットガン)
PDF
SQLite の暗号化
PDF
What's New in MySQL 5.7 InnoDB
PDF
MySQLおじさんの逆襲
PDF
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL Tech Tour 2015 - 5.7 Security
SQLアンチパターン(インデックスショットガン)
SQLite の暗号化
What's New in MySQL 5.7 InnoDB
MySQLおじさんの逆襲
MySQL 5.7にやられないためにおぼえておいてほしいこと
Ad

Similar to My sql tde kr_v1.0 (20)

PPTX
DEVIEW 2013 Presentation
PPTX
Mysql old password 깨기
PPT
GoldenGate for MySQL 설치 시 필요한 사항
PDF
[ORA클라우드 지식먹방] - #11 개발자 X 오라클 MySQL 클라우드 서비스를 만나다!
PPTX
DB와암호화 패턴
PDF
웹 개발 스터디 01 - MySQL
PPTX
MaxScale이해와활용-2023.11
PDF
Database Entity, 정규화에 대해 알아보자.pdf
PPTX
02주차 ddl- db를 만들자
PPTX
03주차 ddl- table을 만들자
PDF
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
PPTX
MySQL_MariaDB로의_전환_기술요소-202212.pptx
PPTX
MySQL_MariaDB-성능개선-202201.pptx
PDF
Sqlinjection - union based
PPTX
MySQL 기초
PDF
2. MySQL DataTye Basic
PDF
MySQL Document Store를 활용한 NoSQL 개발
PDF
파이썬 플라스크로 배우는 웹프로그래밍 #3 (ABCD)
DOCX
MySQL_SQL_Tunning_v0.1.3.docx
PDF
실전 DataSnap!
DEVIEW 2013 Presentation
Mysql old password 깨기
GoldenGate for MySQL 설치 시 필요한 사항
[ORA클라우드 지식먹방] - #11 개발자 X 오라클 MySQL 클라우드 서비스를 만나다!
DB와암호화 패턴
웹 개발 스터디 01 - MySQL
MaxScale이해와활용-2023.11
Database Entity, 정규화에 대해 알아보자.pdf
02주차 ddl- db를 만들자
03주차 ddl- table을 만들자
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
MySQL_MariaDB로의_전환_기술요소-202212.pptx
MySQL_MariaDB-성능개선-202201.pptx
Sqlinjection - union based
MySQL 기초
2. MySQL DataTye Basic
MySQL Document Store를 활용한 NoSQL 개발
파이썬 플라스크로 배우는 웹프로그래밍 #3 (ABCD)
MySQL_SQL_Tunning_v0.1.3.docx
실전 DataSnap!

My sql tde kr_v1.0

  • 1. © 2016, Oracle Corporation and/or its affiliates 1 MySQL TDE June, 2016 Sumi Ryu, MySQL APAC Sales Consultant sumi.ryu@oracle.com
  • 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. © 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. © 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. © 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. © 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