使用 Secret Manager 处理 AlloyDB for PostgreSQL 中的 Secret

本页面介绍了如何将 AlloyDB for PostgreSQL 与 Secret Manager 搭配使用,以存储敏感的访问信息。

安全处理敏感信息是构建安全开发工作流的重要环节。对于 AlloyDB,我们建议您将敏感信息存储在您在 Secret Manager 中创建的 Secret 中。Secret 可存储 API 密钥、密码、敏感信息和您用来访问机密系统的凭据。

概览

借助 Secret Manager,您可以方便地提升安全性。您还可以对 Secret 进行版本控制,并在您的团队中共享 Secret。如需详细了解如何与您的团队共享 Secret,请参阅使用 IAM 进行访问权限控制

用户名和密码

您可以使用 Secret Manager 将 AlloyDB 用户账号的用户名和密码存储在 Secret 中,这是一种用来管理敏感信息的安全可靠的方法。

首先,在 AlloyDB 中创建用户。这需要您提供用户名和密码。如需详细了解如何在 AlloyDB 中创建用户,请参阅使用内置身份验证管理 PostgreSQL 用户

创建用户后,在 Secret Manager 中创建 Secret 来存储用户名和密码,以防敏感信息丢失。如需详细了解如何在 Secret Manager 中创建和访问 Secret,请参阅创建 Secret

跨区域副本应用场景

如果主 AlloyDB 集群发生故障,您可能需要提升次要集群。在次要集群成为主集群后,您必须更新实例连接名称才能反映此提升。如果实例名称存储在 Secret 中,则您必须用新的主集群的名称更新该 Secret。如需了解详情,请参阅修改 Secret

如需使用 Secret Manager 进行故障切换,一种方法是将主集群的名称存储在 Secret 中,然后将 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,请参阅使用 Secret Manager 创建和访问 Secret。 如需详细了解如何使用 AlloyDB Auth 代理,请参阅使用 AlloyDB Auth Proxy 连接

后续步骤