Crea pianificazioni della rotazione in Secret Manager

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:

  1. Fornito dall'utente durante la creazione o l'aggiornamento del secret.

  2. Se viene fornito un rotation_period, Secret Manager invierà un messaggio SECRET_ROTATE dopo il periodo di rotation_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 se rotation_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