Secret Manager supporta le pianificazioni di rotazione sui secret. Secret Manager invia messaggi agli argomenti Pub/Sub configurati nel secret in base alla frequenza di rotazione e al tempo di rotazione forniti. Questo argomento mostra come configurare sui secret pianificazioni una tantum o periodiche per ricevere notifiche quando è il momento di ruotare il secret.
La rotazione periodica dei segreti aiuta a:
- Limita il periodo di tempo in cui un secret divulgato rimane valido e espone una vulnerabilità.
- Esercitare 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 può essere 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 il periodo dirotation_period
.next_rotation_time
verrà aggiornato in modo da riflettere la nuova data/ora di rotazione successiva.
Devi configurare un sottoscrittore Pub/Sub per ricevere i messaggi SECRET_ROTATE
e agire di conseguenza. Se necessario, implementa flussi di lavoro aggiuntivi, ad esempio l'aggiunta di una nuova versione del secret e l'attivazione del deployment dell'applicazione.
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 sul secret. Per scoprire come creare un argomento e una sottoscrizione Pub/Sub, consulta la guida rapida di Pub/Sub. Per scoprire come configurare gli argomenti su un secret, consulta Notifiche degli eventi per Secret Manager.
next_rotation_time
deve essere impostato serotation_period
è specificato.Il campo
next_rotation_time
non può essere impostato su meno di cinque minuti nel futuro.rotation_period
non può durare meno di un'ora. Per indicazioni sulla formattazione dei timestamp, consulta la documentazione di riferimento gcloud datetime.Errori di recapito: Secret Manager riproverà automaticamente i tentativi non riusciti di inviare un messaggio. Secret Manager non offre garanzie riguardo alla consegna in caso di errori di configurazione relativi a configurazione, autorizzazioni o quote del secret o dell'argomento.
Le rotazioni in corso devono essere completate prima di poterne avviare un'altra al fine di evitare che rotazioni simultanee provochino comportamenti imprevisti. Le notifiche sono considerate in corso mentre Secret Manager tenta di inviare il messaggio a Pub/Sub. Le rotazioni pianificate vengono ignorate se è presente una rotazione in corso. Secret Manager riproverà automaticamente i tentativi non riusciti di inviare un messaggio per un massimo di sette giorni, trascorsi i quali la rotazione viene interrotta.
Esempi
Configura la rotazione su un secret
Crea un secret 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
Aggiorna le impostazioni di rotazione di un secret
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
{
"next_rotation_time": "2040-06-01T09:00:00Z"
}
EOF
Disabilita la rotazione su un secret
Rimuovi 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 secret. Vengono rimossi sia next_rotation_time
sia 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 un controllo ottimistico della contemporaneità.