Questa pagina descrive come configurare la rotazione automatica delle credenziali del database Cloud SQL in Secret Manager.
Prima di iniziare
- Assicurati che l'istanza Cloud SQL utilizzi una variante motore del database supportata, ad esempio PostgreSQL o SQL Server.
- Assicurati di utilizzare un secret regionale. La rotazione automatica delle credenziali Cloud SQL è disponibile solo per i secret regionali in Secret Manager. I secret globali non supportano questa funzionalità.
- Assicurati di avere un'istanza Cloud SQL esistente e un utente del database. Per saperne di più, consulta Crea istanze e Crea e gestisci utenti.
- Assicurati di disporre delle autorizzazioni per gestire i criteri IAM sull'istanza Cloud SQL. Per saperne di più, consulta Ruoli e autorizzazioni.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per attivare la rotazione automatica, chiedi all'amministratore di concederti un ruolo che contenga le seguenti autorizzazioni:
cloudsql.users.listcloudsql.users.update
Puoi ottenere queste autorizzazioni con ruoli predefiniti o ruoli personalizzati. Per vedere quali ruoli sono associati a quali autorizzazioni, consulta Ruoli IAM per Cloud SQL.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Crea un secret delle credenziali del database Cloud SQL
Per attivare la rotazione automatica, devi creare un secret di tipo Cloud SQL DB credentials.
Console
-
Nella console Cloud de Confiance , vai alla pagina Secret Manager.
-
Nella pagina Secret Manager, fai clic sulla scheda Secret regionali, quindi fai clic su Crea secret regionale.
-
Nella pagina Crea secret regionale, inserisci un nome per il secret nel campo Nome.
-
Seleziona la casella di controllo Imposta tipo di secret e scegli
Cloud SQL DB credentialscome tipo di secret. -
Scegli la località in cui vuoi che venga archiviato il secret regionale dall'elenco Regione.
-
(Facoltativo) Nella sezione Rotazione, configura la pianificazione della rotazione per il tuo secret. Se non configuri una pianificazione della rotazione, devi ruotare il secret manualmente.
Seleziona la casella di controllo Imposta periodo di rotazione.
Nell'elenco Periodo di rotazione, seleziona una delle opzioni predefinite o Personalizzato per configurare una pianificazione di rotazione personalizzata.
Nel campo A partire dal giorno, inserisci la data e l'ora di inizio del periodo di rotazione.
-
Fai clic su Crea secret.
gcloud
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- SECRET_ID: l'ID del secret
- LOCATION: la Cloud de Confiance by S3NS posizione del secret
Esegui questo comando:
Linux, macOS o 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
Dovresti ricevere una risposta simile alla seguente:
Created secret [projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID].
REST
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- LOCATION: la Cloud de Confiance by S3NS posizione del secret
- PROJECT_ID: l' Cloud de Confiance by S3NS ID progetto
- SECRET_ID: l'ID del secret
Metodo HTTP e URL:
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID
Corpo JSON della richiesta:
{
"secretType": "CLOUD_SQL_DB_CREDENTIALS"
}
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
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
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
$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
Dovresti ricevere una risposta JSON simile alla seguente:
{
"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"
}
}
Concedi le autorizzazioni all'identità secret integrata
Ogni secret ha un identificatore univoco che lo distingue da tutte le altre risorse del tuo progetto Cloud de Confiance by S3NS . Devi concedere all'identità integrata le autorizzazioni necessarie per aggiornare le credenziali sull'istanza Cloud SQL. Per saperne di più, consulta Concedere ruoli alle risorse con identità integrate.
Console
-
Nella pagina dei dettagli del secret, vai alla scheda Panoramica.
-
Prendi nota dell'identificatore dell'entità IAM del secret.
L'identificatore ha il seguente formato:
principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID. -
Nella console Cloud de Confiance vai alla pagina IAM.
-
Fai clic su Concedi l'accesso.
Viene visualizzato il riquadro Concedi l'accesso.
-
Nel campo Nuove entità, inserisci l'identificatore dell'entità IAM del secret.
-
Dall'elenco Seleziona un ruolo, seleziona un ruolo che conceda le autorizzazioni necessarie.
Per saperne di più, consulta Ruoli richiesti.
-
Fai clic su Salva.
gcloud
Ottieni l'identità del secret
Prima di concedere le autorizzazioni IAM, descrivi il secret per ottenere l'identità integrata iamPolicyUidPrincipal. Specifichi questa stringa di identità nel flag --member quando aggiungi l'associazione dei criteri IAM.
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- SECRET_ID: l'ID del secret
- LOCATION: la Cloud de Confiance by S3NS posizione del secret
Esegui questo comando:
Linux, macOS o 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)"
Dovresti ricevere una risposta simile alla seguente:
principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID
Concedi ruolo IAM all'identità segreta
Concedi un ruolo IAM che contenga le autorizzazioni Cloud SQL richieste (ad esempio cloudsql.users.update e cloudsql.users.list o il ruolo predefinito roles/cloudsql.admin) all'entità identità secret recuperata nel passaggio precedente:
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- PROJECT_ID: l' Cloud de Confiance by S3NS ID progetto
- PROJECT_NUMBER: il numero di progetto Cloud de Confiance by S3NS
- LOCATION: la Cloud de Confiance by S3NS posizione del secret
- SECRET_UID: l'identificatore univoco della risorsa secret generato dal sistema
- ROLE: il ruolo IAM concesso all'identità segreta
Esegui questo comando:
Linux, macOS o 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
Ottieni l'identità del secret
Prima di concedere le autorizzazioni IAM, recupera i dettagli del secret per ottenere l'identità integrata iamPolicyUidPrincipal. Specifichi questa stringa di identità nel JSON della richiesta quando imposti il criterio IAM.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- LOCATION: la Cloud de Confiance by S3NS posizione del secret
- PROJECT_ID: l' Cloud de Confiance by S3NS ID progetto
- SECRET_ID: l'ID del secret
Metodo HTTP e URL:
GET https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID
Corpo JSON della richiesta:
{
"policy": {
"bindings": [
{
"role": "ROLE",
"members": [
"principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
]
}
]
}
}
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
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
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
$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
Dovresti ricevere una risposta JSON simile alla seguente:
{
"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"
}
}
Concedi ruolo IAM all'identità segreta
Concedi un ruolo IAM che contenga le autorizzazioni Cloud SQL richieste (ad esempio cloudsql.users.update e cloudsql.users.list o il ruolo predefinito roles/cloudsql.admin) all'entità identità secret recuperata nel passaggio precedente:
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- PROJECT_ID: l' Cloud de Confiance by S3NS ID progetto
- ROLE: il ruolo IAM concesso all'identità segreta
- PROJECT_NUMBER: il numero di progetto Cloud de Confiance by S3NS
- LOCATION: la Cloud de Confiance by S3NS posizione del secret
- SECRET_UID: l'identificatore univoco della risorsa secret generato dal sistema
Metodo HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Corpo JSON della richiesta:
{
"policy": {
"bindings": [
{
"role": "ROLE",
"members": [
"principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
]
}
]
}
}
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
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
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
$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
Dovresti ricevere una risposta JSON simile alla seguente:
{
"version": 1,
"etag": "BwWWv0I7vBw=",
"bindings": [
{
"role": "roles/cloudsql.admin",
"members": [
"principal://secretmanager.googleapis.com/projects/PROJECT_NUMBER/uid/locations/LOCATION/secrets/SECRET_UID"
]
}
]
}
Ruotare il secret
Lo stato di rotazione dei secret Cloud SQL appena creati è Disabled fino alla prima rotazione riuscita. Devi ruotare manualmente il secret per verificare le autorizzazioni e avviare la pianificazione della rotazione automatica.
Console
-
Nella console Cloud de Confiance , vai alla pagina Secret Manager.
-
Nella pagina Secret Manager, fai clic sulla scheda Secret regionali.
-
Fai clic sul nome del secret per andare alla pagina dei dettagli.
-
Fai clic su Ruota.
Viene visualizzato il riquadro Ruota secret.
-
Specifica l'ID istanza e il nome utente dell'istanza Cloud SQL che vuoi aggiornare.
-
(Facoltativo) Espandi la sezione Impostazioni aggiuntive per inserire una password specifica. Se il campo viene lasciato vuoto, Secret Manager genera automaticamente una password efficace e casuale.
-
Fai clic su Ruota.
gcloud
Abilita rotazione gestita
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- SECRET_ID: l'ID del secret
- LOCATION: la Cloud de Confiance by S3NS posizione del secret
- INSTANCE_ID: l'ID istanza Cloud SQL
- USERNAME: il nome dell'account utente del database Cloud SQL
Esegui questo comando:
Linux, macOS o 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
Ruotare manualmente il secret
Attiva una rotazione manuale immediata per generare la versione iniziale del secret e verificare la connettività.
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- SECRET_ID: l'ID del secret
- LOCATION: la Cloud de Confiance by S3NS posizione del secret
Esegui questo comando:
Linux, macOS o 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
Dovresti ricevere una risposta simile alla seguente:
Name: projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID/versions/1 State: ENABLED
REST
Abilita rotazione gestita
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- LOCATION: la Cloud de Confiance by S3NS posizione del secret
- PROJECT_ID: l' Cloud de Confiance by S3NS ID progetto
- SECRET_ID: l'ID del secret
- INSTANCE_ID: l'ID istanza Cloud SQL
- USERNAME: il nome dell'account utente del database Cloud SQL
Metodo HTTP e URL:
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:enableManagedRotation
Corpo JSON della richiesta:
{
"cloudSqlSingleUserCredentials": {
"instanceId": "INSTANCE_ID",
"username": "USERNAME"
}
}
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
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
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
$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
Dovresti ricevere una risposta JSON simile alla seguente:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID/versions/1",
"createTime": "2026-07-28T05:00:00Z",
"state": "ENABLED"
}
Ruotare manualmente il secret
Attiva una rotazione manuale immediata per generare la versione iniziale del secret e verificare la connettività.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- LOCATION: la Cloud de Confiance by S3NS posizione del secret
- PROJECT_ID: l' Cloud de Confiance by S3NS ID progetto
- SECRET_ID: l'ID del secret
Metodo HTTP e URL:
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID:rotateSecret
Per inviare la richiesta, scegli una di queste opzioni:
curl
Esegui questo comando:
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
Esegui questo comando:
$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
Dovresti ricevere una risposta JSON simile alla seguente:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/secrets/SECRET_ID/versions/1",
"createTime": "2026-07-28T05:00:00Z",
"state": "ENABLED"
}
Secret Manager tenta di aggiornare le credenziali nell'istanza Cloud SQL. Se l'operazione va a buon fine,
lo Stato rotazione cambia in Enabled e inizia il timer di rotazione automatica pianificata.