Configurer la rotation automatique des secrets Cloud SQL

Cette page explique comment configurer la rotation automatique des identifiants de votre base de données Cloud SQL dans Secret Manager.

Avant de commencer

  • Assurez-vous que votre instance Cloud SQL utilise une variante de moteur de base de données compatible, telle que PostgreSQL ou SQL Server.
  • Assurez-vous d'utiliser un secret régional. La rotation automatique des identifiants Cloud SQL n'est disponible que pour les secrets régionaux dans Secret Manager. Cette fonctionnalité n'est pas compatible avec les secrets globaux.
  • Assurez-vous de disposer d'une instance Cloud SQL et d'un utilisateur de base de données existants. Pour en savoir plus, consultez Créer des instances et Créer et gérer des utilisateurs.
  • Assurez-vous de disposer des autorisations nécessaires pour gérer les stratégies IAM sur votre instance Cloud SQL. Pour en savoir plus, consultez Rôles et autorisations.

Rôles requis

Pour obtenir les autorisations nécessaires pour activer la rotation automatique, demandez à votre administrateur de vous attribuer un rôle contenant les autorisations suivantes :

  • cloudsql.users.list
  • cloudsql.users.update

Vous pouvez obtenir ces autorisations avec des rôles prédéfinis ou des rôles personnalisés. Pour connaître les rôles et les autorisations associées, consultez la page Rôles IAM pour Cloud SQL.

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Créer un secret d'identifiants de base de données Cloud SQL

Pour activer la rotation automatique, vous devez créer un secret de type Cloud SQL DB credentials.

Console

  1. Dans la console Cloud de Confiance , accédez à la page Secret Manager.

    Accéder à Secret Manager

  2. Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux, puis sur Créer un secret régional.

  3. Sur la page Créer un secret régional, saisissez le nom du secret dans le champ Nom.

  4. Cochez la case Set secret type (Définir le type de secret), puis sélectionnez Cloud SQL DB credentials comme type de secret.

  5. Dans la liste Région, sélectionnez l'emplacement où vous souhaitez stocker votre secret régional.

  6. (Facultatif) Dans la section Rotation, configurez le calendrier de rotation de votre secret. Si vous ne configurez pas de calendrier de rotation, vous devez alterner le secret manuellement.

    1. Cochez la case Définir la période de rotation.

    2. Dans la liste Période de rotation, sélectionnez l'une des options par défaut ou Personnalisée pour configurer votre propre calendrier de rotation.

    3. Dans le champ Rotation à partir du, saisissez la date et l'heure de début de la période de rotation.

  7. Cliquez sur Créer un secret.

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • SECRET_ID : ID du secret
  • LOCATION : Cloud de Confiance by S3NS emplacement du secret

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

gcloud secrets create SECRET_ID \
    --location=LOCATION \
    --secret-type=CLOUD_SQL_DB_CREDENTIALS

Windows (PowerShell)

gcloud secrets create SECRET_ID `
    --location=LOCATION `
    --secret-type=CLOUD_SQL_DB_CREDENTIALS

Windows (cmd.exe)

gcloud secrets create SECRET_ID ^
    --location=LOCATION ^
    --secret-type=CLOUD_SQL_DB_CREDENTIALS

Vous devriez obtenir un résultat semblable à celui-ci :

Created secret [projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID].

REST

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • LOCATION : Cloud de Confiance by S3NS emplacement du secret
  • PROJECT_ID : ID du projet Cloud de Confiance by S3NS
  • SECRET_ID : ID du secret

Méthode HTTP et URL :

POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID

Corps JSON de la requête :

{
  "secretType": "CLOUD_SQL_DB_CREDENTIALS"
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2026-07-28T05:00:00Z",
  "secretType": "CLOUD_SQL_DB_CREDENTIALS",
  "etag": "\"1a2b3c4d\"",
  "policyMember": {
    "iamPolicyUidPrincipal": "principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
  }
}

Accorder des autorisations à l'identité secrète intégrée

Chaque secret possède un identifiant unique qui le distingue de toutes les autres ressources de votre projet Cloud de Confiance by S3NS . Vous devez accorder à l'identité intégrée les autorisations requises pour mettre à jour les identifiants sur votre instance Cloud SQL. Pour en savoir plus, consultez Attribuer des rôles à des ressources avec des identités intégrées.

Console

  1. Sur la page d'informations sur le secret, accédez à l'onglet Vue d'ensemble.

  2. Notez l'identifiant du principal IAM du secret.

    L'identifiant apparaît au format suivant : principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID.

  3. Dans la console Cloud de Confiance , accédez à la page IAM.

    Accéder à IAM

  4. Cliquez sur Accorder l'accès.

    Le panneau Accorder l'accès s'affiche.

  5. Dans le champ Nouveaux comptes principaux, saisissez l'identifiant de compte principal IAM du secret.

  6. Dans la liste Sélectionner un rôle, sélectionnez un rôle qui accorde les autorisations nécessaires.

    Pour en savoir plus, consultez la section Rôles requis.

  7. Cliquez sur Enregistrer.

gcloud

Obtenir l'identité secrète

Avant d'accorder des autorisations IAM, décrivez le secret pour obtenir l'identité intégrée iamPolicyUidPrincipal. Vous spécifiez cette chaîne d'identité dans l'indicateur --member lorsque vous ajoutez la liaison de stratégie IAM.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • SECRET_ID : ID du secret
  • LOCATION : Cloud de Confiance by S3NS emplacement du secret

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

gcloud secrets describe SECRET_ID \
    --location=LOCATION \
    --format="value(policyMember.iamPolicyUidPrincipal)"

Windows (PowerShell)

gcloud secrets describe SECRET_ID `
    --location=LOCATION `
    --format="value(policyMember.iamPolicyUidPrincipal)"

Windows (cmd.exe)

gcloud secrets describe SECRET_ID ^
    --location=LOCATION ^
    --format="value(policyMember.iamPolicyUidPrincipal)"

Vous devriez obtenir un résultat semblable à celui-ci :

principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID

Attribuer un rôle IAM à l'identité secrète

Accordez un rôle IAM contenant les autorisations Cloud SQL requises (par exemple, cloudsql.users.update et cloudsql.users.list, ou le rôle prédéfini roles/cloudsql.admin) au compte principal d'identité secrète récupéré à l'étape précédente :

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet Cloud de Confiance by S3NS
  • PROJECT_NUMBER : numéro numérique du projet Cloud de Confiance by S3NS
  • LOCATION : Cloud de Confiance by S3NS emplacement du secret
  • SECRET_UID : identifiant unique généré par le système pour la ressource secrète
  • ROLE : rôle IAM attribué à l'identité secrète

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID" \
    --role="ROLE"

Windows (PowerShell)

gcloud projects add-iam-policy-binding PROJECT_ID `
    --member="principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID" `
    --role="ROLE"

Windows (cmd.exe)

gcloud projects add-iam-policy-binding PROJECT_ID ^
    --member="principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID" ^
    --role="ROLE"

REST

Obtenir l'identité secrète

Avant d'accorder des autorisations IAM, récupérez les détails du secret pour obtenir l'identité intégrée iamPolicyUidPrincipal. Vous spécifiez cette chaîne d'identité dans le fichier JSON de votre requête lorsque vous définissez la stratégie IAM.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • LOCATION : Cloud de Confiance by S3NS emplacement du secret
  • PROJECT_ID : ID du projet Cloud de Confiance by S3NS
  • SECRET_ID : ID du secret

Méthode HTTP et URL :

GET https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID

Corps JSON de la requête :

{
  "policy": {
    "bindings": [
      {
        "role": "ROLE",
        "members": [
          "principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
        ]
      }
    ]
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2026-07-28T05:00:00Z",
  "secretType": "CLOUD_SQL_DB_CREDENTIALS",
  "etag": "\"1a2b3c4d\"",
  "policyMember": {
    "iamPolicyUidPrincipal": "principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
  }
}

Attribuer un rôle IAM à l'identité secrète

Accordez un rôle IAM contenant les autorisations Cloud SQL requises (par exemple, cloudsql.users.update et cloudsql.users.list, ou le rôle prédéfini roles/cloudsql.admin) au compte principal d'identité secrète récupéré à l'étape précédente :

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet Cloud de Confiance by S3NS
  • ROLE : rôle IAM attribué à l'identité secrète
  • PROJECT_NUMBER : numéro numérique du projet Cloud de Confiance by S3NS
  • LOCATION : Cloud de Confiance by S3NS emplacement du secret
  • SECRET_UID : identifiant unique généré par le système pour la ressource secrète

Méthode HTTP et URL :

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy

Corps JSON de la requête :

{
  "policy": {
    "bindings": [
      {
        "role": "ROLE",
        "members": [
          "principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
        ]
      }
    ]
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "version": 1,
  "etag": "BwWWv0I7vBw=",
  "bindings": [
    {
      "role": "roles/cloudsql.admin",
      "members": [
        "principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
      ]
    }
  ]
}

Effectuer une rotation de votre secret

L'état de rotation des secrets Cloud SQL nouvellement créés est Disabled jusqu'à la première rotation réussie. Vous devez faire pivoter manuellement votre secret pour vérifier les autorisations et démarrer le calendrier de rotation automatique.

Console

  1. Dans la console Cloud de Confiance , accédez à la page Secret Manager.

    Accéder à Secret Manager

  2. Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux.

  3. Cliquez sur le nom du secret pour accéder à la page d'informations le concernant.

  4. Cliquez sur Rotation.

    Le panneau Faire pivoter le secret s'affiche.

  5. Spécifiez l'ID d'instance et le nom d'utilisateur de l'instance Cloud SQL que vous souhaitez mettre à jour.

  6. (Facultatif) Développez la section Paramètres supplémentaires pour saisir un mot de passe spécifique. Si vous ne renseignez pas ce champ, Secret Manager génère automatiquement un mot de passe aléatoire et sécurisé.

  7. Cliquez sur Rotation.

gcloud

Activer la rotation gérée

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

gcloud secrets enable-managed-rotation SECRET_ID \
    --location=LOCATION \
    --instance-id=INSTANCE_ID \
    --username=USERNAME

Windows (PowerShell)

gcloud secrets enable-managed-rotation SECRET_ID `
    --location=LOCATION `
    --instance-id=INSTANCE_ID `
    --username=USERNAME

Windows (cmd.exe)

gcloud secrets enable-managed-rotation SECRET_ID ^
    --location=LOCATION ^
    --instance-id=INSTANCE_ID ^
    --username=USERNAME

Effectuer manuellement une rotation de votre secret

Déclenchez une rotation manuelle immédiate pour générer la version initiale du secret et vérifier la connectivité.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • SECRET_ID : ID du secret
  • LOCATION : Cloud de Confiance by S3NS emplacement du secret

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

gcloud secrets rotate-secret SECRET_ID \
    --location=LOCATION

Windows (PowerShell)

gcloud secrets rotate-secret SECRET_ID `
    --location=LOCATION

Windows (cmd.exe)

gcloud secrets rotate-secret SECRET_ID ^
    --location=LOCATION

Vous devriez obtenir un résultat semblable à celui-ci :

Name: projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID/versions/1
State: ENABLED

REST

Activer la rotation gérée

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

Méthode HTTP et URL :

POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:enableManagedRotation

Corps JSON de la requête :

{
  "cloudSqlSingleUserCredentials": {
    "instanceId": "INSTANCE_ID",
    "username": "USERNAME"
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:enableManagedRotation"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:enableManagedRotation" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID/versions/1",
  "createTime": "2026-07-28T05:00:00Z",
  "state": "ENABLED"
}

Effectuer manuellement une rotation de votre secret

Déclenchez une rotation manuelle immédiate pour générer la version initiale du secret et vérifier la connectivité.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • LOCATION : Cloud de Confiance by S3NS emplacement du secret
  • PROJECT_ID : ID du projet Cloud de Confiance by S3NS
  • SECRET_ID : ID du secret

Méthode HTTP et URL :

POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:rotateSecret

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:rotateSecret"

PowerShell

Exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:rotateSecret" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID/versions/1",
  "createTime": "2026-07-28T05:00:00Z",
  "state": "ENABLED"
}

Secret Manager tente de mettre à jour les identifiants dans votre instance Cloud SQL. Si l'opération réussit, l'état de la rotation passe à Enabled et le minuteur de rotation automatique planifiée démarre.

Étapes suivantes