Impostare una data di scadenza per un secret

Questo argomento mostra come impostare una data di scadenza per un secret in Secret Manager. L'argomento descrive anche come aggiornare o rimuovere la data di scadenza impostata per un secret.

Panoramica

Per impostazione predefinita, i secret archiviati in Secret Manager esistono fino a quando un utente non li elimina che li rappresentano. Se un secret deve essere archiviato solo per un periodo di tempo noto e limitato, una data di scadenza. Alla scadenza configurata per un secret, viene eliminato automaticamente.

Se non hai requisiti per l'eliminazione del secret, valuta la possibilità di utilizzare Condizioni IAM o stato della versione Disabilitato per revocare l'accesso in modo sicuro.

Puoi inserire una scadenza sotto forma di timestamp o durata massima. Quando vengono recuperati i metadati del secret, la scadenza è sempre restituito come timestamp, indipendentemente da come è stato specificato.

È possibile aggiungere, aggiornare o rimuovere una scadenza da un secret in qualsiasi momento.

Limitazioni

  • La scadenza del secret è disponibile solo in Secret Manager API di v1 e gcloud a strumento a riga di comando.

  • La scadenza di un secret non può essere inferiore a 60 secondi o superiore a 100 anni.

Utilizza in sicurezza i secret in scadenza

Quando un secret scade in Secret Manager, diventa irreversibilmente eliminati. Il modo migliore per rilevare i secret in scadenza è utilizzare le condizioni IAM per rimuovere le autorizzazioni dagli account che utilizzano il secret prima della scadenza.

Per farlo, quando concedi le autorizzazioni per un segreto, associa all'associazione una condizione basata sul tempo. L'associazione dovrebbe scadere dopo che il secret non verranno più usate, ma abbastanza presto che le autorizzazioni rimosse verranno notate prima della scadenza del secret. Se i flussi di lavoro che si pensavano non usano più l'interruzione segreta dopo la revoca delle autorizzazioni, possono essere aggiunti di nuovo per mitigare rapidamente l'impatto. Se è necessario più tempo, il secret e la relativa scadenza può essere aggiornata o addirittura rimossa.

Ad esempio, supponiamo che un account di servizio debba accedere ogni giorno a un secret nell'arco di 30 giorni. La scadenza del secret può quindi essere impostata su 60 giorni dalla data e un'associazione IAM condizionale per concedere il servizio il ruolo Funzione di accesso ai secret per 45 giorni. Se l'account di servizio tenta di per accedere al secret dopo 45 giorni, verrà restituito un errore Autorizzazione negata mentre i flussi di lavoro che richiedono il secret non funzionano. Un amministratore potrebbe quindi concedi di nuovo il ruolo di Funzione di accesso ai secret all'account di servizio per mitigare rapidamente durante l'indagine, dato che il secret non verrebbe eliminato per altre 15 giorni.

Inoltre, è possibile creare avvisi basati sui log che avvisano dei secret in scadenza. Per ulteriori informazioni, consulta Logging delle scadenze.

Specifica timestamp e durate

  • I valori timestamp devono essere formattati come RFC 3339, ad esempio 2100-01-01T09:00:00-05:00.

  • I valori della durata devono essere formattati come numero di secondi inclusa la "s" , ad esempio 86400s.

Crea un secret in scadenza

Crea un secret in scadenza utilizzando un timestamp:

gcloud

Per utilizzare Secret Manager nella riga di comando, devi prima Installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. In Compute Engine o GKE, devi eseguire l'autenticazione con l'ambito cloud-platform.

gcloud secrets create "SECRET_ID" \
    --replication-policy "automatic" \
    --expire-time "TIMESTAMP"

API

In questi esempi viene utilizzato curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth print-access-token. In Compute Engine o GKE, devi eseguire l'autenticazione con l'ambito cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" \
    --request "POST" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "replication": {"automatic": {}},
  "expire_time": "TIMESTAMP"
}
EOF

Crea un secret con scadenza utilizzando una durata:

gcloud

Per utilizzare Secret Manager nella riga di comando, devi prima Installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. In Compute Engine o GKE, devi eseguire l'autenticazione con l'ambito cloud-platform.

gcloud secrets create "SECRET_ID" \
    --replication-policy "automatic" \
    --ttl "DURATION"

API

Questi esempi utilizzano curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth stampa-access-token. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" \
    --request "POST" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "replication": {"automatic": {}},
  "ttl": "DURATION"
}
EOF

Aggiornare la scadenza di un token segreto

A qualsiasi secret può essere applicata una nuova scadenza, indipendentemente dal fatto che ne abbia già una. Ogni segreto può avere una sola scadenza configurata alla volta. L'aggiornamento della scadenza di un secret che ne ha già uno ne sovrascriverà la scadenza attuale.

Aggiorna la scadenza di un secret utilizzando un timestamp:

gcloud

Per utilizzare Secret Manager nella riga di comando, devi prima Installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

gcloud secrets update "SECRET_ID" \
    --expire-time "TIMESTAMP"

API

In questi esempi viene utilizzato curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth stampa-access-token. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time" \
    --request "PATCH" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "expire_time": "TIMESTAMP"
}
EOF

Aggiorna la scadenza di un secret utilizzando una durata:

gcloud

Per utilizzare Secret Manager nella riga di comando, devi prima Installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. In Compute Engine o GKE, devi eseguire l'autenticazione con l'ambito cloud-platform.

gcloud secrets update "SECRET_ID" \
    --ttl "DURATION"

API

In questi esempi viene utilizzato curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth stampa-access-token. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl" \
    --request "PATCH" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "ttl": "DURATION"
}
EOF

Rimuovere la scadenza di un secret

gcloud

Per utilizzare Secret Manager nella riga di comando, devi prima Installa o esegui l'upgrade alla versione 378.0.0 o successive di Google Cloud CLI. In Compute Engine o GKE, devi eseguire l'autenticazione con l'ambito cloud-platform.

gcloud secrets update "SECRET_ID" \
    --remove-expiration

API

In questi esempi viene utilizzato curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth stampa-access-token. In Compute Engine o GKE, devi eseguire l'autenticazione con l'ambito cloud-platform.

Includere expire_time o ttl in updateMask e fornire al contempo per nessuno dei due valori, la scadenza verrà rimossa.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl" \
    --request "PATCH" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary '{}'

Logging delle scadenze

Cloud Audit Logs non vengono generati alla scadenza automatica di un secret. Secret Manager scrive invece i log nella risorsa Secret Secret Manager a intervalli specifici che precedono la scadenza di un secret.

Tempi log Tipo di evento secret
30 giorni prima della scadenza EXPIRES_IN_30_DAYS
7 giorni prima della scadenza EXPIRES_IN_7_DAYS
1 giorno prima della scadenza EXPIRES_IN_1_DAY
6 ore prima della scadenza EXPIRES_IN_6_HOURS
1 ora prima della scadenza EXPIRES_IN_1_HOUR
alla scadenza EXPIRED

Consulta la guida rapida di Logging. per informazioni su come visualizzare i log. Puoi creare metriche basate su log e utilizzarle per creare avvisi per le scadenze imminenti.

Passaggi successivi