Secret Manager supporta le pianificazioni di rotazione dei secret. Secret Manager invia messaggi agli argomenti Pub/Sub configurati sul segreto in base alla frequenza e al momento di rotazione specificati. Questo argomento illustra come configurare pianificazioni una tantum o periodiche per i tuoi secret in modo da ricevere notifiche quando è il momento di ruotare il secret.
La rotazione periodica dei secret consente di:
- Limita la durata di un secret compromesso che rimane valido ed espone una vulnerabilità.
- Esegui continuamente il flusso di rotazione per garantire l'affidabilità del processo.
Come funziona?
Secret Manager invia un messaggio SECRET_ROTATE
agli argomenti Pub/Sub configurati sul secret al next_rotation_time
del secret. Questo timestamp viene impostato in due modi:
Fornito dall'utente durante la creazione o l'aggiornamento del secret.
Se viene fornito un
rotation_period
, Secret Manager invierà un messaggioSECRET_ROTATE
dopo ilrotation_period
trascorso.next_rotation_time
verrà aggiornato in modo da riflettere il nuovo orario della rotazione successiva.
Devi configurare un sottoscrittore Pub/Sub per ricevere e gestire i messaggi SECRET_ROTATE
. Se necessario, implementa workflow aggiuntivi come l'aggiunta di una nuova versione del secret e l'attivazione dei deployment delle applicazioni.
Note
La gestione dei criteri di rotazione è disponibile solo nell'API Secret Manager
v1
e in Google Cloud CLI.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 orario futuro inferiore a cinque minuti. Ilrotation_period
non può durare meno di un'ora. Per indicazioni sulla formattazione dei timestamp, consulta la documentazione di riferimento di gcloud datetime.Errori di recapito: Secret Manager riproverà automaticamente i tentativi non riusciti per inviare un messaggio. Secret Manager non fornisce garanzie in merito all'invio in caso di configurazione errata di secret o argomenti, autorizzazioni o quote.
Le rotazioni in corso devono essere completate prima di poter avviarne un'altra per evitare 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 riproverà automaticamente i tentativi non riusciti di invio di un messaggio per un massimo di sette giorni, dopodiché la rotazione viene interrotta.
Esempi
Configurare la rotazione di un secret
Crea un segreto con un next_rotation_time
che ruota ogni 30 giorni a partire dal 1° giugno 2021:
gcloud
gcloud secrets create secret-id \ --replication-policy "automatic" \ --next-rotation-time="2021-06-01T09:00:00Z" \ --rotation-period="2592000s" \ --topics="full-topic-name"
API
curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets?secretId=${SECRET_ID}" \
--request "POST" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-binary @- <<EOF
{
"replication":{
"automatic":{}
},
"topics": {"name" : "projects/${PROJECT_ID}/topics/${TOPIC_NAME}"},
"rotation":
{
"next_rotation_time": "2021-06-01T09:00:00Z",
"rotation_period" : '2592000s'
},
}
EOF
Aggiornare le impostazioni di rotazione di un segreto
I percorsi updateMask validi per la rotazione includono: rotation
, rotation.next_rotation_time
, rotation.rotation_period
.
Aggiorna next_rotation_time
di un secret:
gcloud
gcloud secrets update secret-id \ --next-rotation-time "2022-06-01T09:00:00Z"
API
$ curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets/${SECRET_ID}?updateMask=rotation.next_rotation_time" \
--request "PATCH" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-Type: application/json" \
--data-binary @- <<EOF
{
"rotation": {"next_rotation_time": "2040-06-01T09:00:00Z"}
}
EOF
Disattivare la rotazione di un secret
Per rimuovere il next_rotation_time
di un secret:
gcloud
gcloud secrets update secret-id \ --remove-next-rotation-time
API
$ curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets/${SECRET_ID}?updateMask=rotation.next_rotation_time" \
--request "PATCH" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-Type: application/json" \
--data-binary @- <<EOF
{}
EOF
Rimuovi la pianificazione di rotazione di un segreto. In questo modo, vengono rimossi sia next_rotation_time
che rotation_period
.
gcloud
gcloud secrets update secret-id \ --remove-rotation-schedule
API
$ curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets/${SECRET_ID}?updateMask=rotation" \
--request "PATCH" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-Type: application/json" \
--data-binary @- <<EOF
{}
EOF
Passaggi successivi
Scopri come abilitare le chiavi di crittografia gestite dal cliente (CMEK) per Secret Manager.
Scopri come utilizzare gli ETag per il controllo della contemporaneità ottimistico.