如要保護 AlloyDB for PostgreSQL 的機密資料庫憑證和連線詳細資料 (例如使用者名稱、密碼和執行個體連線名稱),可以將這些資料儲存為 Secret Manager 中的密鑰,並加以管理。
安全地處理機密資訊,是建構安全開發工作流程的重要環節。如果是 AlloyDB,請將機密資訊儲存為在 Secret Manager 中建立的密鑰。密鑰包括 API 金鑰、密碼、機密資訊,以及您可能用於存取機密系統的憑證。
總覽
Secret Manager 既便利又能提升安全性。您也可以為密鑰套用版本管理功能,並與團隊成員共用。如要進一步瞭解如何與團隊共用密鑰,請參閱「使用 IAM 控管存取權」。
使用者名稱及密碼
使用 Secret Manager 將 AlloyDB 使用者帳戶的使用者名稱和密碼儲存為密鑰,是安全可靠的機密資訊管理方式。
首先,在 AlloyDB 建立使用者。您必須提供使用者名稱和密碼。如要進一步瞭解如何在 AlloyDB 建立使用者,請參閱「使用內建驗證機制管理 PostgreSQL 使用者」。
建立使用者後,請在 Secret Manager 中建立密鑰,用來儲存使用者名稱和密碼,以免遺失機密資訊。如要進一步瞭解如何在 Secret Manager 中建立及存取密鑰,請參閱「建立密鑰」。
跨區域副本情境
如果主要 AlloyDB 叢集故障,您可以升級次要叢集。次要叢集升級為主要叢集後,您必須更新執行個體連線名稱,反映這項升級。如果執行個體名稱儲存在 Secret 中,則必須以新的主要叢集名稱更新 Secret。詳情請參閱「編輯 Secret」。
如要使用 Secret Manager 進行容錯移轉,其中一種方法是將主要叢集的名稱儲存在密鑰中,然後將 AlloyDB Auth Proxy 叫用作業包裝在輪詢 Secret Manager 的指令碼中。
如要偵測執行個體連線名稱的值何時更新,請使用 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 程式碼範例」頁面中的各種範例。