0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MySQL Community Editionで無料のテーブル暗号化(TDE相当)

Last updated at Posted at 2025-09-30

MySQL Enterprise Edition には TDE (Transparent Data Encryption) が搭載されていますが、
Community Edition でも keyring_file プラグインを利用することで、テーブルデータを暗号化することが可能です。

以下では、MySQL 8.0 + Debian 系OSを想定した手順を紹介します。


1. 設定ファイルに追記

/etc/mysql/mysql.conf.d/mysqld.cnf などの [mysqld] セクションに以下を追加します。

[mysqld]
early-plugin-load=keyring_file.so
keyring_file_data=/var/lib/mysql-keyring/keyring
  • early-plugin-load : MySQL 起動時にプラグインをロード
  • keyring_file_data : 暗号鍵を保存するファイルのパス

2. プラグインをインストール(初回のみ)

INSTALL PLUGIN keyring_file SONAME 'keyring_file.so';

確認:

SHOW PLUGINS WHERE Name LIKE 'keyring%';

出力例:

+--------------+--------+---------+-----------------+
| Name         | Status | Type    | Library         |
+--------------+--------+---------+-----------------+
| keyring_file | ACTIVE | KEYRING | keyring_file.so |
+--------------+--------+---------+-----------------+

4. テーブル暗号化を有効化

新規テーブルの場合

CREATE TABLE customers (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255)
) ENGINE=InnoDB ENCRYPTION='Y';

既存テーブルを暗号化

ALTER TABLE customers ENCRYPTION='Y';

確認:

SELECT TABLE_SCHEMA, TABLE_NAME, CREATE_OPTIONS
FROM information_schema.tables
WHERE TABLE_NAME = 'customers';

出力例:

+--------------+------------+----------------+
| TABLE_SCHEMA | TABLE_NAME | CREATE_OPTIONS |
+--------------+------------+----------------+
| DB名          | customers  | ENCRYPTION="Y" |
+--------------+------------+----------------+

5. 実際に暗号化されているか確認

OSレベルで .ibd ファイルを直接調べてみましょう。

cat /var/lib/mysql/DB名/customers.ibd | grep '札幌市'
  • 何も出なければ暗号化成功
  • 出てしまう場合 → ENCRYPTION='Y' が効いていない

6. デフォルトで暗号化を有効化(任意)

今後作成するテーブルを自動で暗号化したい場合:

SET GLOBAL innodb_encrypt_tables = ON;
SET PERSIST innodb_encrypt_tables = ON;

注意点

  • 暗号化されるのは InnoDB テーブルのデータファイル(.ibd)
  • binlog / エラーログ / スローログ は暗号化されません
  • keyring ファイルの権限管理が非常に重要(漏れたら復号される)

まとめ

  • Enterprise Edition でしかできないと思われがちな TDE ですが、
    Community Edition でも keyring_file を使えば 無料でテーブル暗号化 が可能です。
  • ただし「binlog暗号化」や「KMIP連携」などの高度な機能は Enterprise 限定です。

👉 実際に .ibd ファイルから平文が見えなくなった時の安心感は大きいです。
バックアップ・リストア時も暗号化は維持されるので、要件次第では十分使えるはずです。

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?