手動でのTDE対応(Docker/MariaDB/MySQL)

Docker version 19.03.13

mysql  Ver 15.1 Distrib 10.3.8-MariaDB,

■■

コンテナに入る

uims-portal/$ docker-compose exec db bash

■■

必要なサーバのpluginをインストール

# apt-get update
# apt-get install vim
# apt-get install binutils

■■

my.cnf(/etc/mysql/my.cnf)ファイルの編集

# vi /etc/mysql/my.cnf
[mariadb] <-追記
plugin_load_add = file_key_management <-追記

■■

暗号化キーファイルの作成

# mkdir /etc/mysql/encryption/keyfile
# touch /etc/mysql/encryption/keyfile

■■

暗号化処理①

# openssl rand -hex 32 >> /etc/mysql/encryption/keyfile
# openssl rand -hex 32 >> /etc/mysql/encryption/keyfile
# openssl rand -hex 32 >> /etc/mysql/encryption/keyfile

■■

# vi /etc/mysql/encryption/keyfile

■■

暗号化のキーファイルの形式設定

50aa47cc63424173cb6f9da8cae826d287ab40f3d0effc208d31bb200e5b951e

8184eaeeb86bb82e1ce0f6486ad8efc828709e4ace4b247ff27dbc67dc04b0e6

87a01eeff300a56dc19b2e849c338fff9ed2ce56ff7e1771be31fd1a628b280f

1;50aa47cc63424173cb6f9da8cae826d287ab40f3d0effc208d31bb200e5b951e

2;8184eaeeb86bb82e1ce0f6486ad8efc828709e4ace4b247ff27dbc67dc04b0e6

3;87a01eeff300a56dc19b2e849c338fff9ed2ce56ff7e1771be31fd1a628b280f

■■

公開キーファイルのパス設定

# vi /etc/mysql/my.cnf
[mariadb]
...
loose_file_key_management_filename = /etc/mysql/encryption/keyfile

■■

公開キーファイルの処理1

# openssl rand -hex 128 > /etc/mysql/encryption/keyfile.key

■■

公開キーファイルの処理2

# openssl enc -aes-256-cbc -md sha1 \
   -pass file:/etc/mysql/encryption/keyfile.key \
   -in /etc/mysql/encryption/keyfile \
   -out /etc/mysql/encryption/keyfile.enc

■■

生成ファイルのパス指定

# vi /etc/mysql/my.cnf
[mariadb]
...
loose_file_key_management_filename = /etc/mysql/encryption/keyfile.enc
loose_file_key_management_filekey = FILE:/etc/mysql/encryption/keyfile.key
loose_file_key_management_encryption_algorithm = AES_CTR

■■

インストールの実行

# mysql -uroot
mariadb > install plugin file_key_management soname 'file_key_management.so';

でインストールされる。


■■

この手順を行わないでinstall pluginを実施した場合:

MariaDB [tde_test]> install plugin file_key_management soname 'file_key_management.so';

ERROR 15 (HY000): file-key-management-filename is not set

MariaDB [tde_test]> 


MariaDB [tde_test]> show plugins;

+-------------------------------+----------+--------------------+---------+---------+

| Name                          | Status   | Type               | Library | License |

+-------------------------------+----------+--------------------+---------+---------+

| binlog                        | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |

| mysql_native_password         | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |

| mysql_old_password            | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |

| wsrep                         | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |

| CSV                           | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |

| MEMORY                        | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |

| MyISAM                        | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |

| MRG_MyISAM                    | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |

| CLIENT_STATISTICS             | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INDEX_STATISTICS              | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| TABLE_STATISTICS              | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| USER_STATISTICS               | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| SQL_SEQUENCE                  | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |

| InnoDB                        | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |

| INNODB_TRX                    | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_LOCKS                  | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_LOCK_WAITS             | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_CMP                    | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_CMP_RESET              | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_CMPMEM                 | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_CMPMEM_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_CMP_PER_INDEX          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_CMP_PER_INDEX_RESET    | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_BUFFER_PAGE            | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_BUFFER_PAGE_LRU        | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_BUFFER_POOL_STATS      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_METRICS                | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_FT_DEFAULT_STOPWORD    | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_FT_DELETED             | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_FT_BEING_DELETED       | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_FT_CONFIG              | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_FT_INDEX_CACHE         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_FT_INDEX_TABLE         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_SYS_TABLES             | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_SYS_TABLESTATS         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_SYS_INDEXES            | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_SYS_COLUMNS            | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_SYS_FIELDS             | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_SYS_FOREIGN            | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_SYS_FOREIGN_COLS       | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_SYS_TABLESPACES        | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_SYS_DATAFILES          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_SYS_VIRTUAL            | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_MUTEXES                | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_SYS_SEMAPHORE_WAITS    | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| INNODB_TABLESPACES_ENCRYPTION | ACTIVE   | INFORMATION SCHEMA | NULL    | BSD     |

| INNODB_TABLESPACES_SCRUBBING  | ACTIVE   | INFORMATION SCHEMA | NULL    | BSD     |

| Aria                          | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |

| PERFORMANCE_SCHEMA            | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |

| SEQUENCE                      | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |

| FEEDBACK                      | DISABLED | INFORMATION SCHEMA | NULL    | GPL     |

| user_variables                | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |

| partition                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |

+-------------------------------+----------+--------------------+---------+---------+

53 rows in set (0.007 sec)

■■

手順後の実施

MariaDB [tde_test]> install plugin file_key_management soname 'file_key_management.so';

ERROR 1062 (23000): Duplicate entry 'file_key_management' for key 'PRIMARY'


MariaDB [tde_test]> show plugins;

+-------------------------------+----------+--------------------+------------------------+---------+

| Name                          | Status   | Type               | Library                | License |

+-------------------------------+----------+--------------------+------------------------+---------+

| binlog                        | ACTIVE   | STORAGE ENGINE     | NULL                   | GPL     |

| mysql_native_password         | ACTIVE   | AUTHENTICATION     | NULL                   | GPL     |

| mysql_old_password            | ACTIVE   | AUTHENTICATION     | NULL                   | GPL     |

| wsrep                         | ACTIVE   | STORAGE ENGINE     | NULL                   | GPL     |

| CSV                           | ACTIVE   | STORAGE ENGINE     | NULL                   | GPL     |

| MEMORY                        | ACTIVE   | STORAGE ENGINE     | NULL                   | GPL     |

| MyISAM                        | ACTIVE   | STORAGE ENGINE     | NULL                   | GPL     |

| MRG_MyISAM                    | ACTIVE   | STORAGE ENGINE     | NULL                   | GPL     |

| CLIENT_STATISTICS             | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INDEX_STATISTICS              | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| TABLE_STATISTICS              | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| USER_STATISTICS               | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| SQL_SEQUENCE                  | ACTIVE   | STORAGE ENGINE     | NULL                   | GPL     |

| InnoDB                        | ACTIVE   | STORAGE ENGINE     | NULL                   | GPL     |

| INNODB_TRX                    | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_LOCKS                  | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_LOCK_WAITS             | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_CMP                    | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_CMP_RESET              | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_CMPMEM                 | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_CMPMEM_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_CMP_PER_INDEX          | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_CMP_PER_INDEX_RESET    | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_BUFFER_PAGE            | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_BUFFER_PAGE_LRU        | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_BUFFER_POOL_STATS      | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_METRICS                | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_FT_DEFAULT_STOPWORD    | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_FT_DELETED             | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_FT_BEING_DELETED       | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_FT_CONFIG              | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_FT_INDEX_CACHE         | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_FT_INDEX_TABLE         | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_SYS_TABLES             | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_SYS_TABLESTATS         | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_SYS_INDEXES            | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_SYS_COLUMNS            | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_SYS_FIELDS             | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_SYS_FOREIGN            | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_SYS_FOREIGN_COLS       | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_SYS_TABLESPACES        | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_SYS_DATAFILES          | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_SYS_VIRTUAL            | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_MUTEXES                | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_SYS_SEMAPHORE_WAITS    | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| INNODB_TABLESPACES_ENCRYPTION | ACTIVE   | INFORMATION SCHEMA | NULL                   | BSD     |

| INNODB_TABLESPACES_SCRUBBING  | ACTIVE   | INFORMATION SCHEMA | NULL                   | BSD     |

| Aria                          | ACTIVE   | STORAGE ENGINE     | NULL                   | GPL     |

| PERFORMANCE_SCHEMA            | ACTIVE   | STORAGE ENGINE     | NULL                   | GPL     |

| SEQUENCE                      | ACTIVE   | STORAGE ENGINE     | NULL                   | GPL     |

| FEEDBACK                      | DISABLED | INFORMATION SCHEMA | NULL                   | GPL     |

| user_variables                | ACTIVE   | INFORMATION SCHEMA | NULL                   | GPL     |

| partition                     | ACTIVE   | STORAGE ENGINE     | NULL                   | GPL     |

| file_key_management           | DELETED  | ENCRYPTION         | file_key_management.so | GPL     |

+-------------------------------+----------+--------------------+------------------------+---------+

54 rows in set (0.002 sec)

■■

alter tableできるかの確認 -> できた

MariaDB [tde_test]> ALTER TABLE not_enc_table2 encrypted=yes;

Query OK, 0 rows affected (0.025 sec)

Records: 0  Duplicates: 0  Warnings: 0


■■

  1. docker-compose downでコンテナ再起動・終了したら消えるプラグインや設定の永続性はどうするか?
  2. データの中身であるdatabase.ibdファイルは永続的である。
  3. docker-compose.ymlの書き換えで、
以上の設定を書き足すことだと思われる。


Next Post Previous Post
No Comment
Add Comment
comment url