Secret Manager ti consente di pianificare rotazioni periodiche dei tuoi secret. Secret Manager lo fa inviando notifiche agli argomenti Pub/Sub associati ai tuoi secret, in base alla frequenza e all'ora di rotazione specificate. Questa pagina descrive come configurare queste pianificazioni di rotazione.
Come funzionano le notifiche relative alla rotazione di secret
Secret Manager attiva un messaggio SECRET_ROTATE
per gli argomenti Pub/Sub designati in next_rotation_time
del secret. Esistono due modi per determinare questo timestamp:
-
Definito dall'utente: puoi specificare
next_rotation_time
quando crei o aggiorni il secret. -
Periodo di rotazione: se definisci un
rotation_period
, Secret Manager calcola automaticamente ilnext_rotation_time
. Secret Manager invia il messaggioSECRET_ROTATE
dopo il temporotation_period
specificato e poi aggiorna il valorenext_rotation_time
per pianificare la rotazione successiva.
Devi configurare un sottoscrittore Pub/Sub per ricevere ed eseguire azioni sui messaggi SECRET_ROTATE
.
Potresti anche dover configurare flussi di lavoro aggiuntivi in risposta a queste notifiche, ad esempio creare una nuova versione del secret ed eseguire il deployment delle modifiche nelle applicazioni.
Requisiti e considerazioni per le pianificazioni di rotazione dei secret
-
Gli argomenti Pub/Sub devono essere configurati nel secret. Per scoprire come creare un argomento e una sottoscrizione Pub/Sub, consulta la guida introduttiva a Pub/Sub. Per scoprire come configurare gli argomenti in un secret, consulta Notifiche evento per Secret Manager.
-
next_rotation_time
deve essere impostato se viene specificatorotation_period
. -
next_rotation_time
non può essere impostato su un periodo inferiore a cinque minuti nel futuro. -
rotation_period
non può durare meno di un'ora. Per indicazioni sulla formattazione dei timestamp, consulta il riferimento relativo alla data e all'ora di Google Cloud. -
Sebbene Secret Manager riprovi automaticamente i tentativi di recapito dei messaggi non riusciti, non possiamo garantire il recapito se sono presenti configurazioni errate relative al secret, alla configurazione degli argomenti, alle autorizzazioni o alle quote.
-
Le rotazioni in corso devono essere completate prima di poter avviarne un'altra per impedire che le rotazioni simultanee generino comportamenti imprevisti. Le notifiche sono considerate in transito mentre Secret Manager tenta di inviare il messaggio a Pub/Sub. Le rotazioni pianificate vengono ignorate se è in corso una rotazione. Secret Manager tenta automaticamente di nuovo i tentativi di invio di un messaggio non riusciti per un massimo di sette giorni, dopodiché la rotazione viene annullata.
Configurare la rotazione di un secret
Puoi configurare una pianificazione della rotazione utilizzando la console Google Cloud, Google Cloud CLI o l'API Secret Manager.
Console
-
Vai alla pagina Secret Manager nella console Google Cloud.
-
Nella pagina Secret Manager, fai clic sulla scheda Secret regionali e poi su Crea secret regionale.
-
Nella pagina Crea secret regionale, inserisci un nome per il secret nel campo Nome.
-
Inserisci un valore per il secret (ad esempio
abcd1234
). Puoi anche caricare un file di testo contenente il valore del secret utilizzando l'opzione Carica file. Questa azione crea automaticamente la versione del secret. -
Scegli la posizione in cui vuoi che venga archiviato il secret regionale dall'elenco Regione.
-
Vai alla sezione Rotazione e seleziona la casella di controllo Imposta periodo di rotazione.
-
Nell'elenco Periodo di rotazione, scegli una delle opzioni predefinite o seleziona Personalizzato per configurare la tua pianificazione della rotazione.
-
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 o l'identificatore completo del secret.
- LOCATION: la località di Google Cloud del segreto.
- NEXT_ROTATION_TIME: il timestamp a cui completare la prima rotazione in formato ISO 8601, ad esempio
2021-06-01T09:00:00Z
. - ROTATION_PERIOD: l'intervallo, in secondi, per ruotare la chiave. Ad esempio, per ruotare la chiave ogni 2592000 secondi, imposta un valore pari a
2592000s
. - FULL_TOPIC_NAME: il nome completo dell'argomento Pub/Sub nel formato
projects/your-project-id/topics/your-topic-name
.
Esegui il seguente comando:
Linux, macOS o Cloud Shell
gcloud secrets create SECRET_ID --location=LOCATION \ --next-rotation-time="NEXT_ROTATION_TIME" \ --rotation-period="ROTATION_PERIOD" \ --topics="FULL_TOPIC_NAME"
Windows (PowerShell)
gcloud secrets create SECRET_ID --location=LOCATION ` --next-rotation-time="NEXT_ROTATION_TIME" ` --rotation-period="ROTATION_PERIOD" ` --topics="FULL_TOPIC_NAME"
Windows (cmd.exe)
gcloud secrets create SECRET_ID --location=LOCATION ^ --next-rotation-time="NEXT_ROTATION_TIME" ^ --rotation-period="ROTATION_PERIOD" ^ --topics="FULL_TOPIC_NAME"
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION: la località di Google Cloud del segreto
- PROJECT_ID: l'ID progetto Google Cloud
- SECRET_ID: l'ID della secret o l'identificatore completo della secret
- TOPIC_NAME: il nome dell'argomento
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:
{ "topics": {"name" : "projects/$PROJECT_ID/topics/$TOPIC_NAME"}, "rotation": { "next_rotation_time": "2021-06-01T09:00:00Z", "rotation_period" : '2592000s' }, }
Per inviare la richiesta, scegli una delle seguenti 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_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T04:06:00.660420Z", "topics": [ { "name": "projects/PROJECT_ID/topics/TOPIC_NAME" } ], "etag": "\"1621434abc8dc4\"", "rotation": { "nextRotationTime": "2024-09-10T09:00:00Z", "rotationPeriod": "2592000s" } }
Aggiornare le impostazioni di rotazione di un segreto
Quando effettui una richiesta di aggiornamento, puoi aggiornare le seguenti impostazioni di rotazione:
-
rotation
: si riferisce all'intera configurazione della rotazione del secret. -
rotation.next_rotation_time
: ha come target specifico il timestamp che indica quando potrebbe verificarsi la rotazione successiva. -
rotation.rotation_period
: specifica la durata tra ogni rotazione.
Per aggiornare le impostazioni di rotazione del segreto, utilizza uno dei seguenti metodi:
Console
-
Vai alla pagina Secret Manager nella console Google Cloud.
-
Nella pagina Secret Manager, fai clic sulla scheda Secret regionali.
-
Individua il segreto che vuoi modificare e fai clic sul menu
Azioni associato al segreto. Nel menu Azioni, fai clic su Modifica. -
Vai alla sezione Rotazione. Aggiorna il periodo di rotazione in base alle tue esigenze e fai clic su Aggiorna token segreto.
gcloud
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- SECRET_ID: l'ID del secret o l'identificatore completo del secret.
- LOCATION: la località di Google Cloud del segreto.
- NEXT_ROTATION_TIME: il timestamp a cui completare la prima rotazione in formato ISO 8601, ad esempio
2021-06-01T09:00:00Z
.
Esegui il seguente comando:
Linux, macOS o Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION \ --next-rotation-time="NEXT_ROTATION_TIME"
Windows (PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --next-rotation-time="NEXT_ROTATION_TIME"
Windows (cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --next-rotation-time="NEXT_ROTATION_TIME"
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION: la località di Google Cloud del segreto.
- PROJECT_ID: l'ID progetto Google Cloud.
- SECRET_ID: l'ID del secret o l'identificatore completo del secret.
- NEXT_ROTATION_TIME: il timestamp a cui completare la prima rotazione in formato ISO 8601, ad esempio
2021-06-01T09:00:00Z
.
Metodo HTTP e URL:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time
Corpo JSON della richiesta:
{ "rotation": {"next_rotation_time": "NEXT_ROTATION_TIME"} }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
curl -X PATCH \
-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?updateMask=rotation.next_rotation_time"
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 PATCH `
-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?updateMask=rotation.next_rotation_time" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T04:06:00.660420Z", "topics": [ { "name": "projects/PROJECT_ID/topics/TOPIC_NAME" } ], "etag": "\"1621434abc8dc4\"", "rotation": { "nextRotationTime": "2024-09-10T09:00:00Z", "rotationPeriod": "2592000s" } }
Disattivare la rotazione di un secret
Per disattivare la rotazione della password, utilizza uno dei seguenti metodi:
Console
-
Vai alla pagina Secret Manager nella console Google Cloud.
-
Nella pagina Secret Manager, fai clic sulla scheda Secret regionali.
-
Individua il segreto che vuoi modificare e fai clic sul menu
Azioni associato al segreto. Nel menu Azioni, fai clic su Modifica. -
Vai alla sezione Rotazione. Deseleziona la casella di controllo Imposta periodo di rotazione e poi fai clic su Aggiorna segreto.
gcloud
Rimuovere next_rotation_time
di un secret
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- SECRET_ID: l'ID del segreto o l'identificatore completo del segreto
- LOCATION: la località di Google Cloud del segreto
Esegui il seguente comando:
Linux, macOS o Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION \ --remove-next-rotation-time
Windows (PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --remove-next-rotation-time
Windows (cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --remove-next-rotation-time
Rimuovi la pianificazione di rotazione di un segreto. In questo modo, vengono rimossi sia next_rotation_time
sia
rotation_period
.
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
- SECRET_ID: l'ID del segreto o l'identificatore completo del segreto
- LOCATION: la località di Google Cloud del segreto
Esegui il seguente comando:
Linux, macOS o Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION \ --remove-rotation-schedule
Windows (PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --remove-rotation-schedule
Windows (cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --remove-rotation-schedule
REST
Rimuovere la data e l'ora della prossima rotazione di un segreto
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION: la località di Google Cloud del segreto
- PROJECT_ID: l'ID progetto Google Cloud
- SECRET_ID: l'ID del segreto o l'identificatore completo del segreto
Metodo HTTP e URL:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time
Corpo JSON della richiesta:
{}
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
curl -X PATCH \
-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?updateMask=rotation.next_rotation_time"
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 PATCH `
-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?updateMask=rotation.next_rotation_time" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T04:06:00.660420Z", "topics": [ { "name": "projects/PROJECT_ID/topics/TOPIC_NAME" } ], "etag": "\"16214530fa18d3\"" }
Rimuovi la pianificazione di rotazione di un segreto. In questo modo vengono rimossi sia la data/ora di rotazione successiva sia il periodo di rotazione.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION: la località di Google Cloud del segreto
- PROJECT_ID: l'ID progetto Google Cloud
- SECRET_ID: l'ID del segreto o l'identificatore completo del segreto
Metodo HTTP e URL:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation
Corpo JSON della richiesta:
{}
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
curl -X PATCH \
-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?updateMask=rotation"
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 PATCH `
-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?updateMask=rotation" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T04:06:00.660420Z", "topics": [ { "name": "projects/PROJECT_ID/topics/TOPIC_NAME" } ], "etag": "\"16214530fa18d3\"" }