Crea pianificazioni di rotazione in Secret Manager

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:

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

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

  • next_rotation_time non può essere impostato su un valore inferiore a cinque minuti nel futuro. La rotation_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