LoginSignup
2
0

More than 3 years have passed since last update.

MySQL 8.0.23 でダブルライトファイル暗号化がサポートされたと聞いて「?」となったのであらためて確認してみた

Posted at

MySQL 8.0.23 では、ダブルライトファイルの暗号化がサポートされました。

以前、こちらの記事で確認したのですが、

「あれ?ダブルライトバッファ(ダブルライトファイル含む)の暗号化ってもうサポートされていたんじゃなかったっけ?」

となったので、あらためて調べてみました。

確認内容

基本的には前回と同じです。8.0.22 と 8.0.23 で比較してみました。

  • CentOS 8.2 64 ビット環境で実行
  • MySQL 8.0 Community Server の対象バージョンを dnf インストール
  • /etc/my.cnf に以下の内容を追記して起動
my.cnf追記部分
early-plugin-load=keyring_file.so
keyring_file_data=/var/lib/mysql-keyring/keyring
innodb_redo_log_encrypt=1
innodb_undo_log_encrypt=1

server-id=1
binlog_format=MIXED
binlog_encryption=ON
binlog_rotate_encryption_master_key_at_startup=ON
  • mysql_secure_installationを実行
  • MySQL に暗号化有効でデータを入れる
MySQLで操作
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
Query OK, 0 rows affected (2.12 sec)

mysql> CREATE DATABASE encryption_test;
Query OK, 1 row affected (0.01 sec)

mysql> USE encryption_test;
Database changed
mysql> CREATE TABLE enc_test (id INT PRIMARY KEY AUTO_INCREMENT, value VARCHAR(100)) ENGINE=innodb ENCRYPTION='Y';
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO enc_test SET value='234567890ABCDEFGHIJKLMNOPQRSTabcdefghijklmnopqrst1234567890ABCDEFGHIJKLMNOPQRSTabcdefghijklmnopqrst';
Query OK, 1 row affected (0.00 sec)

(計 5 行挿入)

mysql> SET AUTOCOMMIT=0;
Query OK, 0 rows affected (0.00 sec)

mysql> UPDATE enc_test SET value='ENCRYPTED' WHERE id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)
  • ファイル検索で確認
ファイル検索
# fgrep -r 'ENCRYPTED' /var/lib/mysql
# fgrep -r 'enc_test' /var/lib/mysq

8.0.22 の結果

8.0.22の結果(1)
# fgrep -r 'ENCRYPTED' /var/lib/mysql
Binary file /var/lib/mysql/#ib_16384_0.dblwr matches
# fgrep -r 'enc_test' /var/lib/mysql
Binary file /var/lib/mysql/#ib_16384_0.dblwr matches

以前試したときには見付からなかった(はずの)ENCRYPTEDの文字が検出されたので、viでファイルを開いて(バイナリモード):%!xxdで 16 進数表示にしてみました。

8.0.22ダブルライトファイルを16進表示で開く
# vi -b /var/lib/mysql/#ib_16384_0.dblwr
:%!xxd
(略)
00000110: 015b 4e00 0003 0000 0000 061c c100 0001  .[N.............
00000120: 1501 5c0f 656e 6372 7970 7469 6f6e 5f74  ..\.encryption_t
00000130: 6573 7408 656e 635f 7465 7374 001d 000f  est.enc_test....
00000140: 656e 6372 7970 7469 6f6e 5f74 6573 7401  encryption_test.
00000150: 0865 6e63 5f74 6573 7401 1001 b74d 0001  .enc_test....M..
00000160: 0320 0000 0006 23c2 0000 0116 0110 0f65  . ....#........e
00000170: 6e63 7279 7074 696f 6e5f 7465 7374 0865  ncryption_test.e
00000180: 6e63 5f74 6573 7402 0404 6016 97e0 0508  nc_test...`.....
00000190: 0000 0000 0000 0002 001d 000f 656e 6372  ............encr
000001a0: 7970 7469 6f6e 5f74 6573 7401 0865 6e63  yption_test..enc
000001b0: 5f74 6573 7401 5b00 0000 0000 0000 0000  _test.[.........
000001c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
(略)

DB 名・テーブル名は平文で見つかりましたが、行データのENCRYPTEDは見つからず。

ファイルを閉じて、あらためて検索してみます。

8.0.22の結果(2)
# fgrep -r 'ENCRYPTED' /var/lib/mysql
# fgrep -r 'enc_test' /var/lib/mysql
Binary file /var/lib/mysql/#ib_16384_0.dblwr matches

今度は行データのENCRYPTEDは検出されませんでした。

行データについては即時には暗号化されていない可能性が出てきました(8.0.21 以前も同様だった可能性があります)。

DB 名・テーブル名は以前確認したときと同様、平文で見つかりました。

8.0.23 の結果

今度は 8.0.23 で試してみます。

8.0.23の結果(1)
# fgrep -r 'ENCRYPTED' /var/lib/mysql
# fgrep -r 'enc_test' /var/lib/mysql

今度は行データのENCRYPTED、テーブル名のenc_testとも見つからず。

viでファイルを開き、:%!xxdで 16 進数表示にしてみます。

8.0.23ダブルライトファイルを16進表示で開く
# vi -b /var/lib/mysql/#ib_16384_0.dblwr
:%!xxd
00000000: dc63 6afc 0000 010c 0000 0000 0000 0000  .cj.............
00000010: 0000 0000 011b 6115 000f 0000 0002 0000  ......a.........
00000020: 0000 ffff ffef e5ef f58d b0ea 52e0 d00c  ............R...
00000030: f372 3eec 88ae d4b8 4834 f28e 9094 b3aa  .r>.....H4......
00000040: c8a5 28f3 69a9 ea41 782a c3e7 fdf6 b626  ..(.i..Ax*.....&
00000050: 784d 4060 5042 58ea 040a a878 35e0 8ed6  xM@`PBX....x5...
00000060: 1c12 681f 34ca d53c 9d57 14fb 26f7 0407  ..h.4..<.W..&...
00000070: 5c70 918d 5d10 484a 9c75 e7d2 cc7d d47e  \p..].HJ.u...}.~
00000080: 1f66 7297 2448 5de6 f648 948b cbca b20d  .fr.$H]..H......
00000090: b50d 76f9 f74d c767 d97f 2d07 c991 2d01  ..v..M.g..-...-.
000000a0: 30b5 c429 4491 0c52 05f8 c6c9 bfe7 d588  0..)D..R........
000000b0: 1e84 4cdb 54d6 dde0 3ce9 8856 bcac 8013  ..L.T...<..V....
000000c0: 5d65 4701 c0f9 fb9a e4c5 bb60 b571 b356  ]eG........`.q.V
000000d0: b70d f37c 104a 4298 fbfe f005 ecba 54c8  ...|.JB.......T.
000000e0: 8d50 3091 0de6 9402 a553 99e8 3e87 d9a5  .P0......S..>...
000000f0: 07fe 2d05 e651 945a 51f4 a2ed 346e 71ef  ..-..Q.ZQ...4nq.
00000100: c85e 8935 5284 2c65 ad24 e005 bfce 9e98  .^.5R.,e.$......
00000110: de58 e939 9bac cbce 26d3 e3b9 a9c7 4c6a  .X.9....&.....Lj
00000120: db06 9d1a b289 d405 810f 9a32 046e 1b3e  ...........2.n.>
00000130: 90ff 1888 aef9 a12a 95c3 d3df 327f 0381  .......*....2...
00000140: 393e 28fc 1274 5661 68b6 fa66 13be 3335  9>(..tVah..f..35
00000150: 67a7 83e8 2d25 bf7c cc5f 3da7 1e85 4f89  g...-%.|._=...O.
00000160: ef88 c634 b1b5 85e8 e5f1 b65c 7566 1744  ...4.......\uf.D
00000170: a6bb 57e5 5013 a935 41e1 b21e 6e7a 2ebe  ..W.P..5A...nz..
00000180: 6dc1 f488 3c7a 1c3f 875c 52af 3287 0f6f  m...<z.?.\R.2..o
00000190: 794f 54f9 65ea eb43 3387 06d3 dced a255  yOT.e..C3......U
000001a0: 697c 1e17 ae97 9a03 9f9d ef58 726b 5234  i|.........XrkR4
000001b0: 4e2d ec62 e044 c55a 13b7 a4c4 d82e 141a  N-.b.D.Z........
000001c0: 4e73 f8ba 9f88 2369 76d3 3fdd e1be 78f8  Ns....#iv.?...x.
000001d0: 1d42 aab7 eb2c 3fec 0a34 8152 fddb 9839  .B...,?..4.R...9
000001e0: 817f da4d 655b bbdd 8025 d39e e2e6 965a  ...Me[...%.....Z
000001f0: 0cfe ecdb e760 3a8d 7015 cfbf d407 49cc  .....`:.p.....I.
(略)

DB 名・テーブル名含め全体的に暗号化されているようです。

※念のためもう 1 個のダブルライトファイルも確認してみます。

2個目のダブルライトファイルを開く
# vi -b /var/lib/mysql/#ib_16384_1.dblwr
---
:%!xxd
00000000: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000010: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
(略)

こちらはまだ何も記録されていないようでした。

まとめ

実際のところ 8.0.21 以前がどうだったのか疑問は残りますが、8.0.23 ではリリースノートに記されたとおりダブルライトファイル(ダブルライトバッファ用のファイル)も暗号化されるようになっていました。


2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0