Gérer les secrets dans Cloud SQL à l'aide de Secret Manager

Présentation

La gestion appropriée de vos informations sensibles est un élément essentiel dans la définition d'un workflow de développement sécurisé. Pour Cloud SQL, nous vous recommandons de stocker vos informations sensibles sous forme de secrets, que vous créez dans Secret Manager. Les secrets incluent les clés API, les mots de passe, les informations sensibles ou les identifiants que vous êtes susceptible d'utiliser pour accéder à un système confidentiel.

Secret Manager offre plus de commodité et améliore la sécurité. Vous pouvez également appliquer la gestion des versions à vos secrets et les partager au sein de votre équipe. Pour en savoir plus sur le partage de secrets avec votre équipe, consultez la section Contrôle des accès (IAM).

Cette page décrit quatre cas d'utilisation de Secret Manager pour gérer des secrets avec Cloud SQL :

Avant de commencer

Avant de commencer à utiliser Secret Manager pour gérer les secrets dans Cloud SQL :

votre nom d'utilisateur et votre mot de passe ;

L'utilisation de Secret Manager pour stocker les noms d'utilisateur et les mots de passe de vos comptes utilisateur Cloud SQL en tant que secrets est un moyen sûr et fiable de gérer ces informations sensibles.

Vous devez commencer par créer un utilisateur dans Cloud SQL. Lors de la création de cet utilisateur, vous devez spécifier un nom d'utilisateur et un mot de passe. Pour en savoir plus sur la création d'un utilisateur dans Cloud SQL, consultez la page Créer et gérer des utilisateurs.

Une fois l'utilisateur créé, créez un secret dans Secret Manager pour stocker le nom d'utilisateur et le mot de passe. Ainsi, ces informations sensibles ne seront pas perdues. Pour en savoir plus sur la création de secrets dans Secret Manager, et l'accès à ceux-ci, consultez la page Créer des secrets et y accéder.

Instances Cloud SQL

Lorsque vous vous connectez à votre instance Cloud SQL, vous pouvez utiliser Secret Manager pour gérer les secrets afin de créer un workflow de développement sécurisé.

Commencez par vous connecter à votre instance Cloud SQL à partir de votre ordinateur local. Une fois l'instance en cours d'exécution, utilisez des variables d'environnement pour vous y connecter. Certaines valeurs associées aux variables sont plus sensibles, telles que le nom de connexion de l'instance. Pour chaque valeur, vous pouvez créer un secret dans Secret Manager pour stocker et gérer ces informations. Pour en savoir plus sur l'utilisation de variables d'environnement pour vous connecter à votre instance Cloud SQL, consultez la page Configurer et exécuter un exemple d'application.

Vous pouvez récupérer le nom de connexion de l'instance stocké en tant que secret directement depuis Secret Manager. Un workflow flexible est ainsi défini, qui peut aider votre équipe à partager ces informations sensibles entre plusieurs applications et à les gérer depuis un emplacement centralisé. Pour en savoir plus sur la récupération des secrets depuis Secret Manager, consultez la page Créer un secret avec Secret Manager.

Pour pouvoir démarrer, une application doit disposer des informations contenues dans le secret. Ces informations incluent les valeurs associées aux variables d'environnement utilisées pour se connecter à l'application. Votre application accède aux secrets au démarrage, puis utilise les secrets pour configurer une connexion à Cloud SQL. Si des secrets associés à l'application sont mis à jour dans Secret Manager, vous devrez peut-être la redémarrer.

Certificats SSL/TLS

Si vous vous connectez à une instance Cloud SQL à l'aide d'une adresse IP publique ou privée, vous devez utiliser un certificat TLS (Transport Layer Security) qui sécurise les données pendant leur transmission. Chaque certificat TLS comprend un certificat de clé publique et une clé privée. Pour en savoir plus sur la configuration des certificats TLS, consultez la section Configurer des certificats SSL/TLS.

Vous pouvez enregistrer le certificat TLS, le certificat de clé publique et la clé privée en tant que secrets, afin de les sécuriser et de les partager avec votre équipe. Pour en savoir plus sur la création de secrets et l'accès à ceux-ci, consultez la section Créer un secret avec Secret Manager. Pour en savoir plus sur le partage de secrets, consultez la page Contrôle des accès (IAM).

Scénarios de reprise après sinistre

En cas de défaillance d'une instance principale de Cloud SQL, vous pouvez promouvoir une instance répliquée avec accès en lecture comme instance principale. Une fois que l'instance répliquée avec accès en lecture devient l'instance principale, vous devez mettre à jour le nom de connexion de l'instance pour refléter cette promotion. Si le nom de connexion de l'instance est stocké dans un secret, vous devez mettre à jour ce secret avec le nom de la nouvelle instance principale. Pour en savoir plus, consultez la section Modifier un secret.

L'une des méthodes d'utilisation de Secret Manager dans le cadre d'un basculement consiste à stocker le nom de votre instance principale dans un secret, puis à configurer votre connecteur Cloud SQL pour qu'il soit mis à jour à chaque actualisation du secret.

Vous pouvez utiliser le script bash suivant avec le proxy d'authentification Cloud SQL. Il s'agit d'un wrapper qui détecte le moment auquel la valeur du nom de connexion de l'instance est mise à jour, et qui redémarre le proxy avec la nouvelle valeur :

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

Pour savoir comment créer un secret contenant le nom de connexion de l'instance répliquée devenue instance principale, et y accéder, consultez la section Créer un secret avec Secret Manager. Pour en savoir plus sur l'utilisation du proxy d'authentification Cloud SQL, consultez la page Se connecter à Cloud SQL à l'aide du proxy d'authentification Cloud SQL.

Étapes suivantes

  • Intégrez Secret Manager à d'autres produits Google Cloud tels que Cloud Run.
  • Découvrez comment intégrer Secret Manager à votre environnement de développement en consultant les différents exemples disponibles sur la page Tous les exemples de code Secret Manager.