Utilice Secret Manager para gestionar secretos en Cloud SQL

Descripción general

Gestionar correctamente su información confidencial es fundamental para crear un flujo de trabajo de desarrollo seguro. Para Cloud SQL, le recomendamos almacenar su información confidencial como secretos que cree en Secret Manager . Los secretos incluyen claves de API, contraseñas, información confidencial o credenciales que podría usar para acceder a un sistema confidencial.

Secret Manager ofrece comodidad y mejora la seguridad. También puede aplicar control de versiones a sus secretos y compartirlos con su equipo. Para obtener más información sobre cómo compartir secretos con su equipo, consulte Control de acceso (IAM) .

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

Antes de empezar

Antes de comenzar a usar Secret Manager para gestionar secretos en Cloud SQL:

Nombres de usuario y contraseñas

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

Primero, debe crear un usuario en Cloud SQL. Para ello, deberá proporcionar un nombre de usuario y una contraseña. Para obtener más información sobre cómo crear un usuario en Cloud SQL, consulte Crear y administrar usuarios .

Tras crear el usuario, cree un secreto en el Administrador de Secretos para almacenar el nombre de usuario y la contraseña. Esto garantiza que esta información confidencial no se pierda. Para obtener más información sobre cómo crear y acceder a secretos en el Administrador de Secretos, consulte Creación y acceso a secretos .

Instancias de Cloud SQL

Al conectarse a su instancia de Cloud SQL, puede usar Secret Manager para administrar secretos y crear un flujo de trabajo de desarrollo seguro.

Comience por conectarse a su instancia de Cloud SQL desde su equipo local. Una vez que la instancia esté en ejecución, use variables de entorno para conectarse. Algunos valores asociados a las variables son más sensibles, como el nombre de conexión de la instancia. Para cada valor, puede crear un secreto en Secret Manager para almacenar y administrar esta información. Para obtener más información sobre el uso de variables de entorno para conectarse a su instancia de Cloud SQL, consulte Configurar y ejecutar una aplicación de ejemplo .

Puede recuperar el nombre de la conexión de la instancia almacenado como secreto directamente desde Secret Manager. Esto proporciona un flujo de trabajo flexible que permite a su equipo compartir esta información confidencial entre varias aplicaciones y administrarla desde una ubicación centralizada. Para obtener más información sobre cómo recuperar secretos desde Secret Manager, consulte Crear un secreto con Secret Manager .

Una aplicación necesita la información de los secretos para iniciarse. Esta información incluye los valores asociados a las variables de entorno que se utilizan para conectarse a la aplicación. Su aplicación accede a los secretos al iniciarse y, a continuación, los utiliza para configurar una conexión a Cloud SQL. Si se actualiza algún secreto relevante en Secret Manager, es posible que deba reiniciar la aplicación.

Certificados SSL/TLS

Si se conecta a una instancia de Cloud SQL con una dirección IP pública o privada, debe usar un certificado de seguridad de la capa de transporte (TLS) que protege los datos durante su transmisión. 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, consulte Configurar certificados SSL/TLS .

Puede guardar el certificado TLS, el certificado de clave pública y la clave privada como secretos para protegerlos y compartirlos con su equipo. Para obtener más información sobre cómo crear y acceder a secretos, consulte Crear un secreto con Secret Manager . Para obtener más información sobre cómo compartir secretos, consulte Control de acceso (IAM) .

Escenarios de recuperación ante desastres

Si falla una instancia principal en Cloud SQL, puede promover una réplica de lectura a la instancia principal. Una vez que la réplica de lectura se convierta en la instancia principal, debe 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 está almacenado en un secreto, debe actualizar el secreto con el nombre de la nueva instancia principal. Para obtener más información, consulte Editar un secreto .

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

Puede usar el siguiente script contenedor de bash con el proxy de autenticación de Cloud SQL para detectar cuándo se actualiza el valor del nombre de conexión de la instancia y luego reiniciar el proxy con el nuevo valor:

#!/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 contenga el nombre de conexión de la instancia de la réplica principal, consulte Crear un secreto con Secret Manager . Para obtener más información sobre el uso del proxy de autenticación de Cloud SQL, consulte Conectarse a Cloud SQL mediante el proxy de autenticación de Cloud SQL .

¿Qué sigue?

  • Puede integrar Secret Manager con otros Google Cloudproductos como Cloud Run.
  • Para aprender cómo integrar Secret Manager con su entorno de desarrollo, consulte los distintos ejemplos disponibles en la página Todos los ejemplos de código de Secret Manager .