mariadbのテーブル暗号化

mariadbでテーブルを暗号化する時のおさらい。

 

/etc/my.cnf.d/server.cnf

[mysqld]セキュションに下記を追加

plugin-load-add = file_key_management.so

file-key-management-filename = /etc/my.cnf.d/keys.txt

#テーブルの暗号化...ON:有効、OFF:無効、FORCE:暗号化が設定されていないテーブルの作成を許可しない
innodb-encrypt-tables = ON
#InnoDB/XtraDB ログファイルの暗号化...1:有効、0:無効
innodb-encrypt-log = 1
#一時テーブルの暗号化...1:有効、0:無効
encrypt-tmp-disk-tables = 0
#一時ファイルの暗号化...1:有効、0:無効
encrypt-tmp-files = 0
#バイナリログ/リレーログの暗号化...1:有効、0:無効
encrypt-binlog = 0

 

/etc/my.cnf.d/keys.txtを作る

中身は下記のような感じ

1;aaaa;bbbbbb

 

下記コマンドで作れる

openssl enc -aes-256-cbc -k Password@generate -P -md sha256

salt=E41EBEDBD908FEBE
key=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ← bbbbbbの所に入れる
iv =aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ← aaaaの所に入れる

 

alterでテーブルを暗号化する。

 ALTER TABLE テーブル名 ENCRYPTED=YES ENCRYPTION_KEY_ID=1;

 

keys.txtの行頭1に対応している。keys.txtには複数キーを定義できる。