2026年6月2日
2026年6月2日
WordPressのデータベース暗号化(at rest)を設定する方法
はじめに
WordPressを運用する上で、データの安全性は非常に重要な要素です。特に、個人情報やセンシティブな情報を扱う場合、その情報が外部から不正アクセスされないよう対策が必要となります。この記事では、MySQL/MariaDBを使用しているWordPressサイトにおいて、静態状態(at rest)でのデータベース暗号化を設定する方法について詳しく解説します。
症状・背景
- サイトで個人情報や機密情報を扱っている場合
- ハッキング被害に遭った経験がある場合
- 事業の規制要件としてデータ保護が求められている場合
- クライアントからデータセキュリティを強化する要求を受けた場合
手順・設定方法
ステップ1: MariaDBのインストールとアップデート
# MariaDBの公式リポジトリを追加
sudo apt-get install software-properties-common
sudo add-apt-repository 'deb http://mirror.csclub.uwaterloo.ca/mariadb/repo/10.5/debian stretch main'
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
# 更新リストを取得
sudo apt-get update
# MariaDBのインストールとアップデート
sudo apt-get install mariadb-server
ステップ2: データベースの暗号化設定
# MariaDBに接続
mysql -u root -p
# MySQLデータベースの設定ファイルを編集
nano /etc/mysql/mariadb.conf.d/50-server.cnf
# 以下の行を追加または変更
[mysqld]
encrypt-binlog=ON
innodb_encrypt_tables=ON
innodb_encrypt_log=ON
ステップ3: WordPressデータベースの暗号化適用
# MariaDBに接続し、WordPressデータベースを選択
mysql -u root -p wordpress_db_name
# テーブルを暗号化するSQLクエリ実行(例)
ALTER TABLE wp_users ENCRYPT='Y';
# 全てのテーブルに対して同じ操作を行う場合
SELECT CONCAT('ALTER TABLE ', table_schema, '.', table_name, ' ENCRYPT=''Y'';') FROM information_schema.tables WHERE table_schema = DATABASE();
ステップ4: 暗号化状態を確認
# MariaDBに接続し、データベースを選択
mysql -u root -p wordpress_db_name
# テーブルの暗号化状態を確認するSQLクエリ実行(例)
SELECT table_schema, table_name, encrypt_option FROM information_schema.tables WHERE table_schema = DATABASE();
注意事項
- 暗号化設定はMySQLデータベースのバージョンによって異なる場合があるため、公式ドキュメントで最新情報を確認すること。
- データベースを暗号化するとパフォーマンスに影響を与える可能性があるので、テスト環境で十分な検証を行うこと。
- バックアップファイルも暗号化されていない状態で保存しないように注意すること。
- キー管理は適切に行い、複数の管理者がアクセスできるようにする。
まとめ
1. インストールとアップデート: MariaDBを最新のバージョンに保つことが重要です。
2. 設定ファイル編集: データベースの暗号化を有効にするための設定を行います。
3. テーブルの暗号化: 実際のデータベース内のテーブルに対して、個別または一括で暗号化を適用します。
4. 状態確認: 暗号化が適切に機能していることを確認するために、定期的にチェックを行うべきです。
関連記事: