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.listcloudsql.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
-
Dans la console Cloud de Confiance , accédez à la page Secret Manager.
-
Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux, puis sur Créer un secret régional.
-
Sur la page Créer un secret régional, saisissez le nom du secret dans le champ Nom.
-
Cochez la case Set secret type (Définir le type de secret), puis sélectionnez
Cloud SQL DB credentialscomme type de secret. -
Dans la liste Région, sélectionnez l'emplacement où vous souhaitez stocker votre secret régional.
-
(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.
Cochez la case Définir la période de rotation.
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.
Dans le champ Rotation à partir du, saisissez la date et l'heure de début de la période de rotation.
-
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
-
Sur la page d'informations sur le secret, accédez à l'onglet Vue d'ensemble.
-
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. -
Dans la console Cloud de Confiance , accédez à la page IAM.
-
Cliquez sur Accorder l'accès.
Le panneau Accorder l'accès s'affiche.
-
Dans le champ Nouveaux comptes principaux, saisissez l'identifiant de compte principal IAM du secret.
-
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.
-
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
-
Dans la console Cloud de Confiance , accédez à la page Secret Manager.
-
Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux.
-
Cliquez sur le nom du secret pour accéder à la page d'informations le concernant.
-
Cliquez sur Rotation.
Le panneau Faire pivoter le secret s'affiche.
-
Spécifiez l'ID d'instance et le nom d'utilisateur de l'instance Cloud SQL que vous souhaitez mettre à jour.
-
(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é.
-
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 :
- SECRET_ID : ID du secret
- LOCATION : Cloud de Confiance by S3NS emplacement du secret
- INSTANCE_ID : ID de l'instance Cloud SQL
- USERNAME : nom du compte utilisateur de la base de données Cloud SQL
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 :
- LOCATION : Cloud de Confiance by S3NS emplacement du secret
- PROJECT_ID : ID du projet Cloud de Confiance by S3NS
- SECRET_ID : ID du secret
- INSTANCE_ID : ID de l'instance Cloud SQL
- USERNAME : nom du compte utilisateur de la base de données Cloud SQL
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
- Découvrez comment configurer des plannings de rotation pour les secrets.