MySQLでは、
はじめに
MySQLで対応しているデータ暗号化と、
ターゲット | スコープ | MySQL バージョン |
---|---|---|
暗号化関数 | MySQL全体 | MySQL 5. |
テーブル | InnoDB | MySQL 5. |
redoログ |
InnoDB | MySQL 8. |
undoログ | InnoDB | MySQL 8. |
一般テーブルスペース | InnoDB | MySQL 8. |
バイナリログ・ |
MySQL全体 | MySQL 8. |
mysqlスキーマ | InnoDB | MySQL 8. |
ダブルライトバッファ | InnoDB | MySQL 8. |
概要
これらの暗号化についての概要を簡単に説明したいと思います。
前提
暗号化関数以外のデータ暗号化方式は、
MySQL設定ファイルearly-plugin-load
にkeyring_
を設定します。
early-plugin-load=keyring_file.so
マスター暗号化キーとテーブルスペースキーで構成される2層暗号化キーアーキテクチャを使用します。アプリケーションがデータにアクセスする場合、
また、
mysql> ALTER INSTANCE ROTATE BINLOG MASTER KEY; mysql> ALTER INSTANCE ROTATE INNODB MASTER KEY;
詳しくは、
暗号化関数
AES_
関数 …データの暗号化ENCRYPT AES_
関数 …データの復号化DECRYPT
MySQL 8.
MySQL 5.
InnoDBテーブル
InnoDBのテーブル暗号化はTDEENCRYPTION=Y
を指定します。
mysql> CREATE TABLE t (col INT KEY) ENCRYPTION='Y'; mysql> ALTER TABLE t ENCRYPTION='N';
また、ENCRYPTION=Y
を指定をすることで、
mysql> CREATE DATABASE db1 ENCRYPTION='Y';
redoログとundoログ
redoログとundoログはMySQL 8.innodb_
をONに変更することで有効になります。デフォルトはOFFです。undoログはパラメータinnodb_
をONに変更することで有効になります。デフォルトはOFFです。
一般テーブルスペース、mysqlスキーマ
一般テーブルスペースとmysqlスキーマの暗号化についても、ENCRYPTION=Y
を指定することで設定可能です。
一般テーブルスペース
mysql> CREATE TABLESPACE `ts1` ADD DATAFILE 'ts1.ibd' ENCRYPTION = 'Y' Engine=InnoDB;
また、default_
をONに変更することで、
mysqlスキーマ
mysqlシステムデータベース、ENCRYPTION=Y
を指定します。
mysql> ALTER TABLESPACE mysql ENCRYPTION = 'Y';
バイナリーログとリレーログ
バイナリーログとリレーログの暗号化は、binlog_
をONに変更することで有効になります。デフォルトはOFFです。これによりバイナリログとリレーログともに暗号化されます。
ダブルライトバッファ
ダブルライトバッファの暗号化は、
まとめ
今回は、