2026年5月31日

2026年5月31日

WordPressのGCP Secret Managerと連携する方法

はじめに

Google Cloud Platform (GCP) のSecret Managerは、機密情報の管理と保護を容易にするサービスです。この記事では、WordPressがこのサービスと連携する方法について詳しく説明します。これにより、データベースの接続文字列やAPIキーなどの重要な秘密情報を安全に保管し、WordPressプラグインやテーマから簡単にアクセスできるようになります。

症状・背景

  • セキュリティ強化: 機密情報が漏洩するリスクを最小限に抑えます。
  • コンプライアンス遵守: データ保護の要件に従って秘密情報を管理します。
  • 保守性向上: 複数の環境での秘密情報の同期と更新を自動化できます。
  • 開発効率: 安全な秘密情報へのアクセスにより、開発プロセスが簡素化されます。

手順・設定方法

ステップ1: GCPプロジェクトにSecret Managerを有効にする

# gcloud CLIを使用してプロジェクトを選択します。
gcloud config set project PROJECT_ID

# Secret Managerが有効になっていることを確認します。
gcloud services list --enabled | grep secretmanager

ステップ2: WordPress用の秘密情報を作成する

# データベース接続文字列をSecret Managerに保存します。
gcloud secrets create wp-database-credentials --replication-policy automatic
echo "DB_USER=wordpress_user" > credentials.txt
echo "DB_PASSWORD=password123" >> credentials.txt
echo "DB_HOST=localhost" >> credentials.txt
gcloud secrets versions add wp-database-credentials --data-file=credentials.txt

# APIキーをSecret Managerに保存します。
gcloud secrets create api-key --replication-policy automatic
echo "API_KEY=myapikey1234567890" > keyfile.txt
gcloud secrets versions add api-key --data-file=keyfile.txt

ステップ3: WordPressから秘密情報を読み取るためのスクリプトを作成する

# Secret Managerから秘密情報を取り出すPHPスクリプトを実装します。
php
<?php
require 'vendor/autoload.php';
use Google\Auth\Credentials\UserCredentials;
use Google\Cloud\Secrets\V1beta1\SecretManagerServiceClient;

function get_secret_value($secret_id) {
    $client = new SecretManagerServiceClient();
    $name = $client->secretVersionName('PROJECT_ID', 'SECRET_ID');
    $response = $client->accessSecretVersion($name);
    return json_decode((string)$response->getData(), true)['data'];
}

$db_user = get_secret_value('wp-database-credentials')['DB_USER'];
$db_password = base64_decode(get_secret_value('wp-database-credentials')['DB_PASSWORD']);
$db_host = get_secret_value('wp-database-credentials')['DB_HOST'];

// セッションに秘密情報を格納
$_SESSION['db_user'] = $db_user;
$_SESSION['db_password'] = $db_password;
$_SESSION['db_host'] = $db_host;

$api_key = base64_decode(get_secret_value('api-key'));
?>

ステップ4: セキュリティとパフォーマンスの最適化

# Secret Managerへのアクセスを制限します。
gcloud iam roles create restricted-access --project PROJECT_ID \
--permissions=secretmanager.secrets.get,secretmanager.versions.access \
--title="RestrictedSecretManagerAccess"

# IAMポリシーを設定して、特定のユーザーまたはサービスアカウントに役割を割り当てます。
gcloud projects add-iam-policy-binding PROJECT_ID --role=restricted-access \
--member=user:alice@example.com

注意事項

  • 定期的なバックアップ: Secret Managerは堅牢なデータ保護を提供しますが、定期的に秘密情報をバックアップすることをお勧めします。
  • アクセス制御: 機密情報へのアクセス権限を厳格に管理し、不要なユーザーからのアクセスを防ぐようにしてください。
  • セキュリティ上の注意: Secret Managerを使用する際は、Google Cloudのセキュリティガイドラインを遵守し、適切な認証と承認プロトコルを使用します。
  • パフォーマンス/運用上の注意: 頻繁にアクセスされる秘密情報については、キャッシュまたは他の高速な代替手段を使用して読み取り性能を向上させることを検討してください。

まとめ

1. Secret Managerの有効化: GCPプロジェクトでSecret Managerサービスを適切に設定します。

2. 秘密情報の作成: WordPress用のデータベース接続文字列やAPIキーなどの重要情報を保存します。

3. スクリプト作成: PHPスクリプトを使用して、WordPressから秘密情報を読み取るプロセスを定義します。

4. アクセス制限: セキュリティとパフォーマンスを最適化するためのIAMポリシーを設定します。

5. 定期的なレビュー: すべての秘密情報とアクセス権限について、定期的にレビューを行い更新を行います。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ