Crea pianificazioni della rotazione

Secret Manager consente di pianificare rotazioni periodiche dei tuoi secret. Secret Manager per farlo inviando notifiche agli argomenti Pub/Sub associati ai tuoi secret, in base la frequenza e il tempo di rotazione specificati. In questa pagina viene descritto come impostare la rotazione le pianificazioni degli annunci.

Come funzionano le notifiche relative alla rotazione di secret

Secret Manager attiva un messaggio SECRET_ROTATE per gli argomenti Pub/Sub designati in next_rotation_time del secret. Esistono due modi per determinare questo timestamp:

  1. Definito dall'utente: puoi specificare il next_rotation_time quando crei o aggiorni il secret.

  2. Periodo di rotazione: se definisci un valore rotation_period, Secret Manager viene automaticamente calcola il next_rotation_time. Secret Manager invia SECRET_ROTATE dopo che è trascorso il valore rotation_period specificato e poi aggiorna il valore next_rotation_time per pianificare la prossima rotazione.

Devi configurare un sottoscrittore Pub/Sub per ricevere e intervenire sui messaggi SECRET_ROTATE. Potrebbe anche essere necessario configurare flussi di lavoro aggiuntivi in risposta a queste notifiche, ad esempio creando una nuova versione del secret e il deployment delle modifiche alle applicazioni.

Requisiti e considerazioni per le pianificazioni di rotazione dei secret

  • Gli argomenti Pub/Sub devono essere configurati nel secret. per scoprire come creare un Pub/Sub consulta la guida rapida di Pub/Sub. Per scoprire come configurare gli argomenti in un secret, consulta Notifiche evento per Secret Manager.

  • È necessario impostare next_rotation_time se rotation_period è specificato.

  • next_rotation_time non può essere impostato su un periodo di tempo inferiore a cinque minuti nel futuro.

  • rotation_period non può durare meno di un'ora. Per indicazioni sulla formattazione dei timestamp, consulta il riferimento relativo alla data e all'ora di Google Cloud.

  • Anche se Secret Manager ritenta automaticamente i tentativi di consegna dei messaggi non riusciti, garantire la riuscita della distribuzione in caso di errori di configurazione relativi a secret, configurazione dell'argomento, 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 è presente una rotazione in corso. Secret Manager ritenta automaticamente i tentativi non riusciti di inviare un messaggio per fino a sette giorni, dopodiché la rotazione viene annullata.

Configura la rotazione su un secret

Puoi configurare una pianificazione di rotazione utilizzando la console Google Cloud, Google Cloud CLI o l'API Secret Manager.

Console

  1. Vai alla pagina Secret Manager nella console Google Cloud.

    Vai a Secret Manager

  2. Nella pagina Secret Manager, fai clic sulla scheda Secret regionali e poi su Crea secret regionale.

  3. Nella pagina Crea secret regionale, inserisci un nome per il secret nel campo Nome.

  4. Inserisci un valore per il secret (ad esempio, abcd1234). Puoi anche caricare un file di testo contenente il valore del secret utilizzando l'opzione Carica file. Questa azione crea automaticamente la versione del secret.

  5. Scegli la località in cui vuoi archiviare il secret regionale dall'elenco Regione.

  6. Vai alla sezione Rotazione e seleziona la casella di controllo Imposta periodo di rotazione.

  7. Nell'elenco Periodo di rotazione, scegli tra le opzioni predefinite oppure seleziona Personalizzato per configurare la tua pianificazione di rotazione.

  8. Nel campo A partire dal giorno, inserisci la data e l'ora di inizio del periodo di rotazione.

  9. Fai clic su Crea secret.

gcloud

Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

  • SECRET_ID: l'ID del secret o dell'identificatore completo del secret.
  • LOCATION: la località Google Cloud del secret.
  • NEXT_ROTATION_TIME: il timestamp a cui completare la prima rotazione in formato ISO 8601, ad esempio 2021-06-01T09:00:00Z.
  • ROTATION_PERIOD: l'intervallo, in secondi, per ruotare la chiave. Ad esempio, per ruotare la chiave ogni 2592.000 secondi, devi impostare il valore 2592000s.
  • FULL_TOPIC_NAME: il nome completo dell'argomento Pub/Sub nel formato projects/your-project-id/topics/your-topic-name.

Esegui la persone che seguo :

Linux, macOS o Cloud Shell

gcloud secrets create SECRET_ID --location=LOCATION \
  --next-rotation-time="NEXT_ROTATION_TIME" \
  --rotation-period="ROTATION_PERIOD" \
  --topics="FULL_TOPIC_NAME"

Windows (PowerShell)

gcloud secrets create SECRET_ID --location=LOCATION `
  --next-rotation-time="NEXT_ROTATION_TIME" `
  --rotation-period="ROTATION_PERIOD" `
  --topics="FULL_TOPIC_NAME"

Windows (cmd.exe)

gcloud secrets create SECRET_ID --location=LOCATION ^
  --next-rotation-time="NEXT_ROTATION_TIME" ^
  --rotation-period="ROTATION_PERIOD" ^
  --topics="FULL_TOPIC_NAME"

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION: la località di Google Cloud del segreto
  • PROJECT_ID: l'ID progetto Google Cloud
  • SECRET_ID: l'ID del secret o dell'identificatore completo del secret
  • TOPIC_NAME: il nome dell'argomento

Metodo HTTP e URL:

POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID

Corpo JSON della richiesta:

{
  "topics": {"name" : "projects/$PROJECT_ID/topics/$TOPIC_NAME"},
  "rotation":
    {
      "next_rotation_time": "2021-06-01T09:00:00Z",
      "rotation_period" : '2592000s'
    },
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID"

PowerShell

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T04:06:00.660420Z",
  "topics": [
    {
      "name": "projects/PROJECT_ID/topics/TOPIC_NAME"
    }
  ],
  "etag": "\"1621434abc8dc4\"",
  "rotation": {
    "nextRotationTime": "2024-09-10T09:00:00Z",
    "rotationPeriod": "2592000s"
  }
}

Aggiorna le impostazioni di rotazione di un secret

Quando effettui una richiesta di aggiornamento, puoi aggiornare le seguenti impostazioni di rotazione:

  • rotation: si riferisce all'intera configurazione della rotazione del secret.

  • rotation.next_rotation_time: sceglie come target in modo specifico il timestamp che indica quando potrebbe verificarsi la rotazione successiva.

  • rotation.rotation_period: specifica la durata tra una rotazione e l'altra.

Per aggiornare le impostazioni di rotazione del segreto, utilizza uno dei seguenti metodi:

Console

  1. Vai alla pagina Secret Manager nella console Google Cloud.

    Vai a Secret Manager

  2. Nella pagina Secret Manager, fai clic sulla scheda Secret regionali.

  3. Individua il secret da modificare e fai clic sul pulsante Azioni. associato al secret. Nel menu Azioni, fai clic su Modifica.

  4. Vai alla sezione Rotazione. Aggiorna il periodo di rotazione come richiesto e fai clic su Aggiorna secret.

gcloud

Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

  • SECRET_ID: l'ID del secret o l'identificatore completo del secret.
  • LOCATION: la località Google Cloud del secret.
  • NEXT_ROTATION_TIME: il timestamp a cui completare la prima rotazione in formato ISO 8601, ad esempio 2021-06-01T09:00:00Z.

Esegui il seguente comando:

Linux, macOS o Cloud Shell

gcloud secrets update SECRET_ID --location=LOCATION \
  --next-rotation-time="NEXT_ROTATION_TIME"

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
  --next-rotation-time="NEXT_ROTATION_TIME"

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
  --next-rotation-time="NEXT_ROTATION_TIME"

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION: la località Google Cloud del secret.
  • PROJECT_ID: l'ID progetto Google Cloud.
  • SECRET_ID: l'ID del secret o dell'identificatore completo del secret.
  • NEXT_ROTATION_TIME: il timestamp a cui completare la prima rotazione in formato ISO 8601, ad esempio 2021-06-01T09:00:00Z.

Metodo HTTP e URL:

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time

Corpo JSON della richiesta:

{
  "rotation": {"next_rotation_time": "NEXT_ROTATION_TIME"}
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time"

PowerShell

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T04:06:00.660420Z",
  "topics": [
    {
      "name": "projects/PROJECT_ID/topics/TOPIC_NAME"
    }
  ],
  "etag": "\"1621434abc8dc4\"",
  "rotation": {
    "nextRotationTime": "2024-09-10T09:00:00Z",
    "rotationPeriod": "2592000s"
  }
}

Disabilita la rotazione su un secret

Per disabilitare la rotazione del secret, utilizza uno dei seguenti metodi:

Console

  1. Vai alla pagina Secret Manager nella console Google Cloud.

    Vai a Secret Manager

  2. Nella pagina Secret Manager, fai clic sulla scheda Secret regionali.

  3. Individua il segreto che vuoi modificare e fai clic sul menu Azioni associato al segreto. Nel menu Azioni, fai clic su Modifica.

  4. Vai alla sezione Rotazione. Deseleziona la casella di controllo Imposta periodo di rotazione e poi fai clic su Aggiorna segreto.

gcloud

Rimuovi next_rotation_time di un secret

Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

  • SECRET_ID: l'ID della secret o l'identificatore completo della secret
  • LOCATION: la località di Google Cloud del segreto

Esegui il seguente comando:

Linux, macOS o Cloud Shell

gcloud secrets update SECRET_ID --location=LOCATION \
    --remove-next-rotation-time

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
    --remove-next-rotation-time

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
    --remove-next-rotation-time

Rimuovi la pianificazione di rotazione di un segreto. In questo modo vengono rimossi sia next_rotation_time sia rotation_period.

Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

  • SECRET_ID: l'ID del secret o dell'identificatore completo del secret
  • LOCATION: la località di Google Cloud del segreto

Esegui il seguente comando:

Linux, macOS o Cloud Shell

gcloud secrets update SECRET_ID --location=LOCATION \
    --remove-rotation-schedule

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
    --remove-rotation-schedule

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
    --remove-rotation-schedule

REST

Rimuovi data e ora di rotazione successiva di un secret

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • LOCATION: la località Google Cloud del secret
  • PROJECT_ID: l'ID del progetto Google Cloud
  • SECRET_ID: l'ID del segreto o l'identificatore completo del segreto

Metodo HTTP e URL:

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time

Corpo JSON della richiesta:

{}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time"

PowerShell

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T04:06:00.660420Z",
  "topics": [
    {
      "name": "projects/PROJECT_ID/topics/TOPIC_NAME"
    }
  ],
  "etag": "\"16214530fa18d3\""
}

Rimuovi la pianificazione di rotazione di un segreto. In questo modo, sia l'ora di rotazione successiva periodo di rotazione.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION: la località Google Cloud del secret
  • PROJECT_ID: l'ID progetto Google Cloud
  • SECRET_ID: l'ID del segreto o l'identificatore completo del segreto

Metodo HTTP e URL:

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation

Corpo JSON della richiesta:

{}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation"

PowerShell

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T04:06:00.660420Z",
  "topics": [
    {
      "name": "projects/PROJECT_ID/topics/TOPIC_NAME"
    }
  ],
  "etag": "\"16214530fa18d3\""
}

Passaggi successivi