2026年8月26日
2026年8月26日
WordPressのAWS Secrets Managerと連携する方法
はじめに
この記事では、セキュアなデータ管理のためにWordPressサイトのデータベース接続情報などをAWS Secrets Managerに保存し、それらを効果的に利用する方法について解説します。これにより、機密情報を適切に保護しながらも、アプリケーションとデータベースとの連携を容易に行うことが可能となります。
症状・背景
このテーマが必要になる主な場面:
- WordPressサイトのデータベース接続情報の管理
- サードパーティAPIキーなどのセキュリティ情報を安全に保存する必要がある場合
- データ漏洩リスクを低減したい場合
- 多くのユーザーがアクセス可能な環境で秘密鍵などを管理する必要がある場合
手順・設定方法
ステップ1: AWS Secrets Managerにシークレットを作成する
# シークレット名を指定して作成
aws secretsmanager create-secret --name wp-db-credentials --secret-string '{"username":"dbuser","password":"secretpassword","host":"database-host.amazonaws.com","dbname":"wordpress"}'
# データベース接続情報の確認
aws secretsmanager get-secret-value --secret-id wp-db-credentials
ステップ2: WordPressデータベース設定ファイルにAWS Secrets Managerを統合
# .envファイルを作成して秘密鍵情報を格納
echo "DB_NAME=$(aws secretsmanager get-secret-value --secret-id wp-db-credentials --query 'SecretString' --output text | jq -r '.dbname')" >> .env
echo "DB_USER=$(aws secretsmanager get-secret-value --secret-id wp-db-credentials --query 'SecretString' --output text | jq -r '.username')" >> .env
echo "DB_PASSWORD=$(aws secretsmanager get-secret-value --secret-id wp-db-credentials --query 'SecretString' --output text | jq -r '.password')" >> .env
ステップ3: WordPressのwp-config.phpを更新
# wp-config.phpに秘密鍵情報を読み込むPHPコードを追加
echo "define('DB_NAME', getenv('DB_NAME')); define('DB_USER', getenv('DB_USER')); define('DB_PASSWORD', getenv('DB_PASSWORD'));" >> /path/to/wordpress/wp-config.php
ステップ4: セキュリティポリシーとアクセス制御の設定
# IAMロールやユーザーにSecrets Managerへの適切なアクセス権限を付与
aws iam put-role-policy --role-name wp-app-role --policy-name secretsmanager-access --policy-document '{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["secretsmanager:GetSecretValue"],
"Resource": "arn:aws:secretsmanager:<region>:<account-id>:secret:wp-db-credentials"
}
]
}'
注意事項
- シークレットの作成と更新は、適切なIAMロールやポリシーを使用して行うようにする。
- AWS CLIバージョン2以上を利用することを推奨。
- データベース接続情報の変更があった場合は、Secrets Manager上の情報を更新し、必要に応じてWordPress設定も更新する。
- セキュリティ情報は頻繁に更新することで漏洩リスクを低減させる。
まとめ
1. シークレット作成: AWS Secrets Manager上でデータベース接続情報を含むシークレットを作成します。
2. 設定ファイルの更新: WordPressの設定ファイル(.envやwp-config.php)に、秘密鍵情報へのアクセスを追加します。
3. IAMロール設定: アプリケーション用のIAMロールに対して適切なSecrets Managerへの読み取り権限を付与します。
4. 定期的な更新: セキュリティ情報を定期的に変更し、AWS Secrets Managerと連携するWordPressサイトの安全性を維持します。
関連記事: