Secret Manager supporta le pianificazioni della rotazione sui secret. Secret Manager invia messaggi agli argomenti Pub/Sub configurati nel secret in base alle la frequenza di rotazione e il tempo di rotazione. Questo argomento mostra come configurare una licenza o pianificazioni periodiche dei tuoi secret, per ricevere notifiche al momento opportuno. 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à.
- Eseguire continuamente il flusso di rotazione per garantire l'affidabilità del processo.
Come funziona?
Secret Manager invia un messaggio SECRET_ROTATE
agli argomenti Pub/Sub
configurato sul secret nel next_rotation_time
del secret. Questo timestamp è
possono essere impostati in uno di questi due modi:
Fornito dall'utente durante la creazione o l'aggiornamento del secret.
Se viene fornito un valore
rotation_period
, Secret Manager invierà unSECRET_ROTATE
messaggio dopo ilrotation_period
trascorso.next_rotation_time
verrà aggiornato a in base al nuovo orario di rotazione successivo.
Devi configurare un sottoscrittore Pub/Sub per ricevere e intervenire sui messaggi SECRET_ROTATE
di Google. Se necessario, implementa flussi di lavoro aggiuntivi come 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 nella CLI Google Cloud.Gli argomenti Pub/Sub devono essere configurati sul secret. Per scoprire come per creare un argomento e una sottoscrizione Pub/Sub, consulta Guida rapida di Pub/Sub. Per scoprire come configurare argomenti su un secret, consulta Notifiche di eventi per Secret Manager.
È necessario impostare
next_rotation_time
se si specificarotation_period
.next_rotation_time
non può essere impostato su un valore inferiore a cinque minuti nel futuro. Larotation_period
non può durare meno di un'ora. Per indicazioni sulla formattazione del timestamp, consulta il riferimento gcloud datetime.Errori di recapito: Secret Manager riproverà automaticamente i tentativi non riusciti per inviare un messaggio. Secret Manager non garantisce la consegna in caso di errori di configurazione relativi a configurazione di secret o argomenti, autorizzazioni o quote.
Le rotazioni in corso devono essere completate prima che sia possibile avviarne un'altra per evitare che le rotazioni simultanee generino comportamenti imprevisti. Le notifiche sono considerato in corso mentre Secret Manager tenta di inviare il messaggio a in 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
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 di updateMask validi per la rotazione includono: rotation
, rotation.next_rotation_time
e 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
Disabilita la rotazione su un secret
Rimuovi 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. Questa operazione rimuove 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à.