このページでは、AlloyDB for PostgreSQL で Secret Manager を使用して機密性の高いアクセス情報を保存する方法について説明します。
機密情報を安全に処理することは、安全な開発ワークフローを構築するうえで非常に重要です。AlloyDB では、機密情報を Secret Manager で作成したシークレットとして保存することをおすすめします。シークレットには、機密システムにアクセスするために使用する可能性のある API キー、パスワード、機密情報、認証情報が含まれています。
概要
Secret Manager は、利便性を提供し、セキュリティを強化します。シークレットにバージョニングを適用して、チーム間で共有することもできます。シークレットをチームと共有する方法の詳細については、IAM によるアクセス制御をご覧ください。
ユーザー名とパスワード
Secret Manager を使用して AlloyDB ユーザー アカウントのユーザー名とパスワードをシークレットとして保存することは、機密情報を管理する安全かつ信頼性の高い方法です。
まず、AlloyDB でユーザーを作成します。ユーザー名とパスワードの指定が必要です。AlloyDB でユーザーを作成する方法については、組み込み認証を使用して PostgreSQL ユーザーを管理するをご覧ください。
ユーザーを作成したら、Secret Manager にシークレットを作成してユーザー名とパスワードを保存します。これにより、機密情報の損失を防ぐことができます。Secret Manager でシークレットを作成してアクセスする方法の詳細については、シークレットを作成するをご覧ください。
クロスリージョン レプリカのシナリオ
プライマリ AlloyDB クラスタで障害が発生した場合は、セカンダリ クラスタをプロモートできます。セカンダリ クラスタがプライマリ クラスタになったら、この昇格を反映するためにインスタンス接続名を更新する必要があります。インスタンス名がシークレットに保存されている場合は、新しいプライマリ クラスタの名前でシークレットを更新する必要があります。詳細については、シークレットを編集するをご覧ください。
フェイルオーバーに Secret Manager を使用する方法の一つとして、プライマリ クラスタの名前をシークレットに保存し、Secret Manager をポーリングするスクリプトで AlloyDB Auth Proxy 呼び出しをラップする方法があります。
インスタンス接続名の値が更新されたことを検出するには、AlloyDB Auth Proxy を使用し、次のように新しい値で再起動します。
#!/bin/bash
SECRET_ID="my-secret-id" # TODO(developer): replace this value
REFRESH_INTERVAL=5
PORT=5432 # TODO(developer): change this port as needed
# Get the latest version of the secret and start the proxy
INSTANCE=$(gcloud secrets versions access "latest" --secret="$SECRET_ID")
alloydb-auth-proxy $INSTANCE --port=$PORT &
PID=$!
# Every 5s, get the latest version of the secret. If it's changed, restart the
# proxy with the new value.
while true; do
sleep $REFRESH_INTERVAL
NEW=$(gcloud secrets versions access "latest" --secret="$SECRET_ID")
if [ "$INSTANCE" != "$NEW" ]; then
INSTANCE=$NEW
kill $PID
wait $PID
alloydb-auth-proxy $INSTANCE --port=$PORT &
PID=$!
fi
done
プライマリ レプリカのインスタンス接続名を含むシークレットの作成とアクセスの詳細については、Secret Manager を使用してシークレットを作成してアクセスするをご覧ください。AlloyDB Auth Proxy の使用方法については、AlloyDB Auth Proxy を使用して接続するをご覧ください。
次のステップ
- Secret Manager を開発環境に統合する方法については、すべての Secret Manager のコードサンプルのページで入手できる、さまざまなサンプルをご覧ください。