Usa Secret Manager para manejar secretos en Cloud SQL

Descripción general

Administrar correctamente la información sensible es una parte esencial de la creación de un flujo de trabajo de desarrollo seguro. En Cloud SQL, te recomendamos que almacenes la información sensible como secretos que creas en Secret Manager. Los secretos incluyen claves de API, contraseñas, información sensible o credenciales que puedes usar para acceder a un sistema confidencial.

Secret Manager proporciona conveniencia y mejora la seguridad. También puedes aplicar el control de versiones a tus secretos y compartirlos con tu equipo. Para obtener más información sobre cómo compartir secretos con tu equipo, consulta Control de acceso (IAM).

En esta página, se describen cuatro casos de uso para usar Secret Manager a fin de administrar secretos con Cloud SQL:

Antes de comenzar

Antes de comenzar a usar Secret Manager para controlar los secretos en Cloud SQL, haz lo siguiente:

Nombres de usuarios y contraseñas

Usar Secret Manager para almacenar los nombres de usuario y las contraseñas de las cuentas de usuario de Cloud SQL como secretos es una forma segura y confiable de administrar esta información sensible.

Primero, debes crear un usuario en Cloud SQL. Como parte de la creación de este usuario, debes proporcionar un nombre de usuario y una contraseña. Para obtener más información sobre cómo crear un usuario en Cloud SQL, consulta Crea y administra usuarios.

Después de crear el usuario, crea un secreto en Secret Manager para almacenar el nombre de usuario y la contraseña. Esto garantiza que no se pierda esta información sensible. Para obtener más información sobre cómo crear secretos y acceder a ellos en Secret Manager, consulta Crea y accede a secretos.

Instancias de Cloud SQL

Cuando te conectas a tu instancia de Cloud SQL, puedes usar Secret Manager para administrar los secretos a fin de crear un flujo de trabajo de desarrollo seguro.

Para comenzar, conéctate a tu instancia de Cloud SQL desde tu computadora local. Después de que la instancia se ejecute, usa variables de entorno para conectarte a ella. Algunos valores asociados con las variables son más sensibles, como el nombre de conexión de la instancia. Puedes crear un secreto en Secret Manager para almacenar y administrar esta información por cada valor. Si deseas obtener más información sobre el uso de variables de entorno para conectarte a tu instancia de Cloud SQL, consulta Configura y ejecuta una app de muestra.

Puedes recuperar el nombre de conexión de la instancia que se almacena como un secreto directamente desde Secret Manager. Esto proporciona un flujo de trabajo flexible que puede ayudar a tu equipo a compartir esta información sensible en varias aplicaciones y administrarla desde una ubicación centralizada. Para obtener más información sobre cómo recuperar secretos de Secret Manager, consulta Crea un secreto con Secret Manager.

Una aplicación requiere la información en los secretos para iniciarse. Esta información incluye los valores asociados con las variables de entorno que se usan para conectarse a la aplicación. Tu aplicación accede a los secretos cuando se inicia y los usa para configurar una conexión con Cloud SQL. Si se actualiza algún secreto relevante en Secret Manager, es posible que debas reiniciar la aplicación.

Certificados SSL/TLS

Si te conectas a una instancia de Cloud SQL mediante una dirección IP pública o privada, debes usar un certificado de seguridad de la capa de transporte (TLS) que proteja los datos mientras se transmiten. Cada certificado TLS incluye un certificado de clave pública y una clave privada. Para obtener más información sobre la configuración de certificados TLS, consulta Configura certificados SSL/TLS.

Puedes guardar el certificado TLS, el certificado de clave pública y la clave privada como secretos para mantenerlos seguros y compartirlos con tu equipo. Para obtener más información sobre cómo crear secretos y acceder a ellos, consulta Crea un secreto con Secret Manager. Para obtener más información sobre cómo compartir secretos, consulta Control de acceso (IAM).

Situaciones de recuperación ante desastres

Si una instancia principal en Cloud SQL falla, puedes promover una réplica de lectura a la instancia principal. Después de que la réplica de lectura se convierta en la instancia principal, debes actualizar el nombre de la conexión de la instancia para reflejar esta promoción. Si el nombre de la conexión de la instancia se almacena en un secreto, debes actualizar el secreto con el nombre de la instancia principal nueva. Para obtener más información, consulta Edita un secreto.

Una forma de usar Secret Manager para las conmutaciones por error es almacenar el nombre de tu instancia principal en un secreto y, luego, configurar el conector de Cloud SQL para que se actualice cada vez que se actualice el secreto.

Puedes usar la siguiente secuencia de comandos de wrapper de Bash con el proxy de autenticación de Cloud SQL para detectar cuándo se actualiza el valor del nombre de la conexión de la instancia y, luego, reiniciar el proxy con el valor nuevo:

#!/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")
cloud_sql_proxy -instances="$INSTANCE"=tcp:"$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
        cloud_sql_proxy -instances="$INSTANCE"=tcp:"$PORT" &
        PID=$!
    fi
done

Para obtener más información sobre cómo crear y acceder a un secreto que contiene el nombre de conexión de la instancia de la réplica principal, consulta Crea un secreto con Secret Manager. Para obtener más información sobre el uso del proxy de autenticación de Cloud SQL, consulta Conéctate a Cloud SQL mediante el proxy de autenticación de Cloud SQL.

¿Qué sigue?

  • Puedes integrar Secret Manager en otros productos de Google Cloud, como Cloud Run.
    • Para obtener más información sobre cómo proteger tus secretos en entornos de contenedores, consulta Usa secretos.
    • Para obtener una lista de otros productos de Google Cloud que se integran en Secret Manager, consulta Usa Secret Manager con otros productos.
  • Para obtener información sobre cómo integrar Secret Manager en tu entorno de desarrollo, consulta las diversas muestras disponibles en la página Todas las muestras de código de Secret Manager.