Usar o Secret Manager para gerenciar secrets no AlloyDB para PostgreSQL

Nesta página, descrevemos como usar o AlloyDB para PostgreSQL com o Secret Manager para armazenar informações de acesso sensíveis.

Gerenciar informações sensíveis com segurança é uma parte essencial da criação de um fluxo de trabalho de desenvolvimento seguro. Para o AlloyDB, recomendamos armazenar as informações sensíveis como secrets criados no Secret Manager. Os secrets incluem chaves de API, senhas, informações sensíveis e credenciais que você pode usar para acessar um sistema confidencial.

Visão geral

O Secret Manager oferece conveniência e melhora a segurança. Também é possível aplicar o controle de versões aos seus secrets e compartilhá-los com toda a equipe. Para saber mais sobre como compartilhar secrets com sua equipe, consulte Controle de acesso com o IAM.

Nomes de usuário e senhas

Usar o Secret Manager para armazenar os nomes de usuário e as senhas das contas de usuário do AlloyDB como secrets é uma maneira segura e confiável de gerenciar suas informações sensíveis.

Primeiro, crie um usuário no AlloyDB. Para isso, é necessário fornecer um nome de usuário e uma senha. Para mais informações sobre como criar um usuário no AlloyDB, consulte Gerenciar usuários do PostgreSQL com autenticação integrada.

Depois de criar o usuário, crie um secret no Secret Manager para armazenar o nome de usuário e a senha, o que evita a perda de informações sensíveis. Para mais informações sobre como criar e acessar secrets no Secret Manager, consulte Criar um secret.

Cenários de réplicas entre regiões

Se um cluster principal do AlloyDB falhar, é possível promover um cluster secundário. Depois que o cluster secundário se tornar o principal, você precisará atualizar o nome da conexão da instância para refletir essa promoção. Se o nome da instância estiver armazenado em um secret, atualize-o com o nome do novo cluster principal. Para mais informações, consulte Editar um secret.

Uma maneira de usar o Secret Manager para failovers é armazenar o nome do cluster principal em um secret e encapsular a invocação do AlloyDB Auth Proxy em um script que pesquisa o Secret Manager.

Para detectar quando o valor do nome da conexão da instância é atualizado, use o proxy de autenticação do AlloyDB e reinicie-o com o novo valor, como segue:

#!/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

Para mais informações sobre como criar e acessar um secret que contenha o nome da conexão da instância da réplica principal, consulte Criar e acessar um secret usando o Secret Manager. Para mais informações sobre como usar o proxy de autenticação do AlloyDB, consulte Conectar usando o proxy de autenticação do AlloyDB.

A seguir