Saturday, October 14, 2017

MySQL InnoDBテーブルスペース暗号化

MySQL Tablespace暗号化は設定が比較的簡単です。 MySQL 5.7、innodb_file_per_tableを使用する必要があります 


MySQLのドキュメントには、これを設定するために必要なものすべてが含まれています。 


しかし、リンクを共有しただけでは私のブログ投稿は非常に短くなります。 そう.... 

アップグレード後、MySQL 5.7では、キーファイルの有効な場所が必要です。 私はMySQLのdatadirを/ var / lib / mysql / dataとして持っています。これにより、必要に応じてデフォルトの場所を見つけることができますが、必要に応じてさらに多くのディスクを簡単にマウントできます。 これにより、/ var / lib / mysqlがすでに許可されているため、selinuxなどの追加編集を行う必要もありません。 

/ var / lib / mysql / keyringをタッチする 
chmod 750 / var / lib / mysql / keyring * 
chown mysql:mysql / var / lib / mysql / keyring 

mysql .cnfファイルを編集します。 

ls /usr/lib64/mysql/plugin/keyring_file.so 
/usr/lib64/mysql/plugin/keyring_file.so 

[mysqld] 
#Keyring Pluginのインストール 
early-plugin-load = keyring_file.so 
keyring_file_data = / var / lib / mysql / keyring 

MySQLの起動後にあなたのプラグインをチェックしてください: 

mysql> SELECT PLUGIN_NAME、PLUGIN_STATUS 
- >情報シチェラから 
- > WHERE PLUGIN_NAME LIKE 'キーリング%'; 
+ -------------- + --------------- + 
| PLUGIN_NAME | PLUGIN_STATUS | 
+ -------------- + --------------- + 
| keyring_file | アクティブ| 
| keyring_udf | アクティブ| 
+ -------------- + --------------- + 


プラグインをインストールするkeyring_udf SONAME 'keyring_udf.so'; 
CREATE FUNCTION keyring_key_generate RETURNS INTEGER SONAME 'keyring_udf.so'; 
CREATE FUNCTION keyring_key_fetchストリングSONAMEを戻します 'keyring_udf.so'; 
CREATE FUNCTION keyring_key_length_fetch INTEGER SONAMEを戻します。 'keyring_udf.so'; 
CREATE FUNCTION keyring_key_type_fetchストリングSONAMEを戻します 'keyring_udf.so'; 
CREATE FUNCTION keyring_key_store戻り値INTEGER SONAME 'keyring_udf.so'; 
CREATE FUNCTION keyring_key_remove RETURNS INTEGER SONAME 'keyring_udf.so'; 


mysql>テストを使用する。 
mysql> SELECT keyring_key_generate( 'MyKey1'、 'AES'、32); 

mysql> CREATE TABLE `enc_test`( 
`enc_test_id` varchar(255)NOT NULL、 
PRIMARY KEY( `enc_test_id`) 
)ENGINE = InnoDB; 

mysql>テーブルを変更するtest.enc_test encryption = 'Y'; 

mysql> show create table enc_test \ G 
**************************** 1.行******************** ******* 
テーブル:enc_test 
テーブルの作成:CREATE TABLE `enc_test`( 
`enc_test_id` varchar(255)NOT NULL、 
PRIMARY KEY( `enc_test_id`) 
)ENGINE = InnoDB DEFAULT CHARSET = latin1 ENCRYPTION = 'Y' 
1行セット(0.00秒)