使用 Secret Manager 處理 AlloyDB for PostgreSQL 中的密鑰

本頁說明如何搭配使用 PostgreSQL 適用的 AlloyDB 和 Secret Manager,儲存機密存取資訊。

安全地處理私密資訊是建構安全開發工作流程的重要環節。如果是 AlloyDB,建議您將敏感資訊儲存為在 Secret Manager 中建立的密鑰。密鑰包括 API 金鑰、密碼、機密資訊和憑證,可用於存取機密系統。

總覽

Secret Manager 不僅方便,還能提升安全性。您也可以為密鑰套用版本控管,並與團隊共用。如要進一步瞭解如何與團隊共用密鑰,請參閱「使用 IAM 控管存取權」。

使用者名稱及密碼

使用 Secret Manager 將 AlloyDB 使用者帳戶的使用者名稱和密碼儲存為密鑰,是管理機密資訊的安全可靠方式。

首先,請在 AlloyDB 中建立使用者。您必須提供使用者名稱和密碼。如要進一步瞭解如何在 AlloyDB 中建立使用者,請參閱「使用內建驗證機制管理 PostgreSQL 使用者」。

建立使用者後,請在 Secret Manager 中建立密鑰來儲存使用者名稱和密碼,避免遺失機密資訊。如要進一步瞭解如何在 Secret Manager 中建立及存取密鑰,請參閱「建立密鑰」。

跨區域備用資源情境

如果主要 AlloyDB 叢集發生故障,您可以升級次要叢集。次要叢集升級為主要叢集後,您必須更新執行個體連線名稱,反映這項升級。如果執行個體名稱儲存在密鑰中,則必須使用新主要叢集的名稱更新密鑰。詳情請參閱編輯密鑰

如要使用 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 連線」。

後續步驟