Ritarda l'eliminazione delle versioni dei secret

Questa pagina spiega come configurare l'eliminazione ritardata delle versioni dei secret, aggiornare o rimuovere la durata del ritardo per l'eliminazione e ripristinare le versioni dei secret pianificate per l'eliminazione.

Quando elimini una versione del secret, il materiale del secret viene eliminato immediatamente e definitivamente. In qualità di amministratore di Secret Manager, puoi configurare l'eliminazione ritardata delle versioni dei secret in modo che la versione del secret non venga eliminata immediatamente al richiesta e rimanga recuperabile per una durata configurabile.

Quando l'eliminazione ritardata è attivata per il secret ed elimini una versione del secret, si verifica quanto segue:

  • La versione è disabilitata, quindi non può essere utilizzata.
  • Il sistema pianifica l'eliminazione permanente della versione al termine del periodo di ritardo.
  • Al termine del periodo di ritardo, la versione del secret viene eliminata in modo permanente e irrevocabile.

Vantaggi

Questa funzionalità offre i seguenti vantaggi:

  • Un ulteriore livello di protezione contro la distruzione accidentale o intenzionale di materiale segreto critico. Qualsiasi utente con il ruolo Manager versione secret di Secret Manager può eliminare una versione del secret. Questa azione è irreversibile. Configurando l'eliminazione ritardata, puoi evitare l'eliminazione immediata delle versioni dei secret. Puoi concedere agli utenti l'accesso minimo necessario per gestire il ciclo di vita delle versioni dei secret perché puoi monitorare e prevenire la distruzione accidentale di dati sensibili.

  • L'eliminazione di una versione del secret attiva una notifica SECRET_VERSION_DESTROY_SCHEDULED agli argomenti Pub/Sub configurati sul secret. In qualità di amministratore di Secret Manager, puoi annullare l'eliminazione pianificata e ripristinare la versione del secret attivandola o disattivandola.

Prima di iniziare

  • Enable the Secret Manager API.

    Enable the API

  • Configurare l'autenticazione.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    REST

    Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

    Per saperne di più, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare la distruzione ritardata delle versioni del secret, chiedi all'amministratore di concederti il ruolo IAM Amministratore di Secret Manager (roles/secretmanager.admin) per il secret. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Configurare l'eliminazione ritardata

Puoi attivare l'eliminazione ritardata di una versione del secret quando crei il secret o lo aggiorni.

Console

  1. Nella console Google Cloud, vai alla pagina Secret Manager.

    Vai a Secret Manager

  2. Segui i passaggi necessari per creare un segreto.

  3. Vai alla sezione Ritarda eliminazione versione secret.

  4. Seleziona la casella di controllo Imposta la durata per l'eliminazione ritardata.

  5. Nel campo Durata del ritardo per l'eliminazione, inserisci la durata in giorni. Il valore minimo che puoi inserire è 1 giorno, mentre il valore massimo è 1000 giorni.

  6. Fai clic su Crea secret.

Per attivare questa funzionalità su un secret esistente, vai alla pagina Modifica secret e configura la durata del ritardo di distruzione.

gcloud

Per configurare la durata del ritardo di distruzione del secret, utilizza il comando gcloud secrets create.

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

  • SECRET_ID: l'ID del secret o l'identificatore completo del secret.
  • TTL_DURATION: la durata del ritardo per l'eliminazione delle versioni del secret. Puoi inserire la durata in qualsiasi formato, ad esempio giorni, ore o secondi. La durata minima richiesta è 1 giorno, mentre la durata massima può essere impostata su 1000 giorni.

Esegui il seguente comando:

Linux, macOS o Cloud Shell

gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows (PowerShell)

gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows (cmd.exe)

gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION

La risposta contiene il secret appena creato.

REST

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

  • PROJECT_ID: l'ID progetto Google Cloud.
  • SECRET_ID: l'ID del secret o l'identificatore completo del secret.
  • TTL_DURATION: la durata del ritardo per l'eliminazione delle versioni del secret. Inserisci la durata in secondi. Tieni presente che la durata minima richiesta è 1 giorno, mentre la durata massima può essere impostata su 1000 giorni.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

{"replication": {"automatic": {}}, "version_destroy_ttl":"TTL_DURATION"}

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.googleapis.com/v1/projects/PROJECT_ID/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.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
"name":"projects/PROJECT_ID/secrets/SECRET_ID",
"replication":{
   "automatic":{

   }
},
"createTime":"2023-10-16T17:10:16.345401Z",
"etag":"\"1607d90ee3d84c\"",
"versionDestroyTtl":"TTL_DURATION"
}

L'eliminazione ritardata non si applica nei seguenti scenari:

  • Quando un secret viene eliminato, tutto il materiale del secret e le versioni del secret correlate vengono eliminate immediatamente.
  • Quando per il secret viene impostata una data di scadenza e il secret scade, tutte le sue versioni vengono eliminate immediatamente, anche se per il secret è attivata l'eliminazione ritardata.

Aggiorna la durata del ritardo per l'eliminazione

Console

  1. Nella console Google Cloud, vai alla pagina Secret Manager.

    Vai a Secret Manager

  2. Modifica il segreto utilizzando una delle seguenti opzioni:

    • Fai clic su Altre azioni associato al secret che vuoi modificare e poi seleziona Modifica dal menu.
    • Fai clic sul nome del segreto per andare alla pagina Dettagli segreto. Nella pagina Dettagli del secret, fai clic su Modifica secret.
  3. Vai alla sezione Ritarda eliminazione versione secret.

  4. Nel campo Durata del ritardo per l'eliminazione, inserisci la durata aggiornata.

  5. Fai clic su Aggiorna secret.

gcloud

Per aggiornare la durata del ritardo di distruzione, utilizza il comando gcloud secrets update.

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

  • SECRET_ID: l'ID della secret o l'identificatore completo della secret
  • TTL_DURATION: la durata del ritardo di eliminazione per le versioni del secret

Esegui il seguente comando:

Linux, macOS o Cloud Shell

gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows (PowerShell)

gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows (cmd.exe)

gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION

La risposta contiene il secret appena creato.

REST

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

  • PROJECT_ID: l'ID progetto Google Cloud
  • SECRET_ID: l'ID del segreto o l'identificatore completo del segreto
  • TTL_DURATION: la durata del ritardo di eliminazione per le versioni del secret

Metodo HTTP e URL:

PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl

Corpo JSON della richiesta:

{
  "version_destroy_ttl":"TTL_DURATION"
}

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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl"

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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID",
  "replication":{
     "automatic":{

     }
  },
  "createTime":"2023-10-16T17:10:16.345401Z",
  "etag":"\"1607d90ee3d84c\"",
  "versionDestroyTtl":"TTL_DURATION"
}

Le versioni del secret interessate dalla durata del ritardo per l'eliminazione dipendono da quanto segue:

  • Quando l'eliminazione ritardata viene impostata per la prima volta sul secret, la durata del ritardo dell'eliminazione influisce su tutte le versioni attive (abilitate e disattivate) del secret.
  • Quando la durata del ritardo dell'eliminazione viene aggiornata o rimossa, le modifiche si riflettono solo sulle nuove versioni del secret su cui viene tentata l'azione di eliminazione. Le versioni del secret per le quali è già stata pianificata l'eliminazione continueranno a essere eliminate all'ora pianificata.

Disattivare l'eliminazione ritardata

Console

  1. Nella console Google Cloud, vai alla pagina Secret Manager.

    Vai a Secret Manager

  2. Modifica il segreto utilizzando una delle seguenti opzioni:

    • Fai clic su Altre azioni associato al secret che vuoi modificare e poi seleziona Modifica dal menu.
    • Fai clic sul nome del segreto per andare alla pagina Dettagli segreto. Nella pagina Dettagli del secret, fai clic su Modifica secret.
  3. Vai alla sezione Ritarda eliminazione versione secret.

  4. Deseleziona la casella di controllo Imposta la durata per l'eliminazione ritardata.

  5. Fai clic su Aggiorna secret.

gcloud

Per rimuovere la durata del ritardo di distruzione, utilizza il comando gcloud secrets update.

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

  • SECRET_ID: l'ID del segreto o l'identificatore completo del segreto

Esegui il seguente comando:

Linux, macOS o Cloud Shell

gcloud secrets update SECRET_ID --remove-version-destroy-ttl

Windows (PowerShell)

gcloud secrets update SECRET_ID --remove-version-destroy-ttl

Windows (cmd.exe)

gcloud secrets update SECRET_ID --remove-version-destroy-ttl

REST

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

  • PROJECT_ID: l'ID progetto Google Cloud
  • SECRET_ID: l'ID della secret o l'identificatore completo della secret

Metodo HTTP e URL:

PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl

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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl"

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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID",
  "replication":{
     "automatic":{

     }
  },
  "createTime":"2023-10-16T17:10:16.345401Z",
  "etag":"\"1607d90ee3d84c\""
}

Testare l'eliminazione ritardata delle versioni dei secret

Console

  1. Nella console Google Cloud, vai alla pagina Secret Manager.

    Vai a Secret Manager

  2. Fai clic sul nome del secret. Viene visualizzata la pagina Dettagli secret.

  3. Nella tabella Versioni della pagina Dettagli secret, seleziona una versione del secret.

  4. Nella colonna Azioni, fai clic su Mostra altro, poi su Elimina.

  5. Nella finestra di dialogo visualizzata, fai clic su Pianifica l'eliminazione delle versioni selezionate.

gcloud

Per eliminare una versione del secret, utilizza il comando gcloud secrets versions destroy.

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

  • SECRET_VERSION_ID: l'ID della versione o l'identificatore completo della versione
  • SECRET_ID: l'ID della secret o l'identificatore completo della secret

Esegui il seguente comando:

Linux, macOS o Cloud Shell

gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

Windows (PowerShell)

gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

Windows (cmd.exe)

gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

REST

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

  • PROJECT_ID: l'ID progetto Google Cloud
  • SECRET_ID: l'ID della secret o l'identificatore completo della secret
  • VERSION_ID: l'ID della versione o l'identificatore completo della versione

Metodo HTTP e URL:

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:destroy

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 POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:destroy"

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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:destroy" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID",
  "createTime":"2023-10-16T17:21:55.920036Z",
  "state":"DISABLED",
  "replicationStatus":{
     "automatic":{

     }
  },
  "etag":"\"1607d8b2fc1cf4\"",
  "scheduledDestroyTime":"2023-10-16T17:26:57.459395960Z"
}

La versione del secret viene immediatamente disattivata e pianificata per l'eliminazione al termine della durata del ritardo per l'eliminazione. Puoi vedere la data e l'ora esatte in cui la versione verrà eliminata nella colonna Pianificata per l'eliminazione il giorno della tabella Versioni.

Ripristina le versioni dei secret

Puoi ripristinare una versione del secret per la quale è stata pianificata l'eliminazione attivando o disattivando la versione del secret.

Attivare una versione di un secret di cui è stata pianificata l'eliminazione

Console

  1. Nella console Google Cloud, vai alla pagina Secret Manager.

    Vai a Secret Manager

  2. Fai clic sul nome del secret. Viene visualizzata la pagina Dettagli secret.

  3. Nella tabella Versioni della pagina Dettagli secret, seleziona una versione del secret per la quale è pianificata la distruzione.

  4. Nella colonna Azioni, fai clic su Mostra altro, poi su Attiva.

  5. Nella finestra di dialogo visualizzata, fai clic su Attiva le versioni selezionate.

gcloud

Per attivare una versione del secret per la quale è pianificata l'eliminazione, utilizza il comando gcloud secrets versions enable.

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

  • SECRET_VERSION_ID: l'ID della versione o l'identificatore completo della versione
  • SECRET_ID: l'ID della secret o l'identificatore completo della secret

Esegui il seguente comando:

Linux, macOS o Cloud Shell

gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

Windows (PowerShell)

gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

Windows (cmd.exe)

gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

REST

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

  • PROJECT_ID: l'ID progetto Google Cloud
  • SECRET_ID: l'ID della secret o l'identificatore completo della secret
  • VERSION_ID: l'ID della versione o l'identificatore completo della versione

Metodo HTTP e URL:

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:enable

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 POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:enable"

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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:enable" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID",
  "createTime": "2024-09-04T06:41:57.859674Z",
  "state": "ENABLED",
  "etag": "\"1621457b3c1459\""
}

Disattivare una versione di un secret con eliminazione programmata

Console

  1. Nella console Google Cloud, vai alla pagina Secret Manager.

    Vai a Secret Manager

  2. Fai clic sul nome del secret. Viene visualizzata la pagina Dettagli secret.

  3. Nella tabella Versioni della pagina Dettagli secret, seleziona una versione del secret per la quale è pianificata la distruzione.

  4. Nella colonna Azioni, fai clic su Mostra altro, poi su Disattiva.

  5. Nella finestra di dialogo visualizzata, fai clic su Disattiva le versioni selezionate.

gcloud

Per disabilitare una versione del secret per la quale è pianificata l'eliminazione, utilizza il comando gcloud secrets versions disable.

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

  • SECRET_VERSION_ID: l'ID della versione o l'identificatore completo della versione
  • SECRET_ID: l'ID della secret o l'identificatore completo della secret

Esegui il seguente comando:

Linux, macOS o Cloud Shell

gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID

Windows (PowerShell)

gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID

Windows (cmd.exe)

gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID

La risposta contiene la versione disabilitata del secret.

REST

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

  • PROJECT_ID: l'ID progetto Google Cloud
  • SECRET_ID: l'ID della secret o l'identificatore completo della secret
  • VERSION_ID: l'ID della versione o l'identificatore completo della versione

Metodo HTTP e URL:

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:disable

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 POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:disable"

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.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:disable" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID",
  "createTime":"2023-10-16T17:21:55.920036Z",
  "state":"DISABLED",
  "replicationStatus":{
     "automatic":{

     }
  },
  "etag":"\"1607d8b3e8e1bc\""
}

Passaggi successivi