Imposta 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 finché non vengono eliminati da un utente. Se un secret deve essere archiviato solo per un periodo di tempo noto e limitato, puoi associarlo a una scadenza. Alla scadenza configurata, il secret viene eliminato automaticamente.

Se non esistono requisiti per l'eliminazione del secret, valuta l'utilizzo delle condizioni IAM o dello stato della versione disabilitata per revocare l'accesso in modo sicuro.

Puoi inserire una scadenza come timestamp o durata. Quando vengono recuperati i metadati del secret, la scadenza viene sempre restituita come timestamp, indipendentemente da come sono stati forniti.

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

Limitazioni

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

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

Usa in sicurezza i secret in scadenza

Quando un secret scade in Secret Manager, viene eliminato irreversibilmente. 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.

A questo scopo, quando concedi le autorizzazioni su un secret, collega una condizione basata sul tempo all'associazione. L'associazione deve scadere dopo che si prevede che il secret non sarà più utilizzato, ma abbastanza presto da consentire l'individuazione delle autorizzazioni rimosse prima della scadenza del secret. Se i flussi di lavoro che si pensava non utilizzassero più l'interruzione dei secret dopo la revoca delle autorizzazioni, è possibile aggiungere nuovamente le autorizzazioni per mitigare rapidamente. Se è necessario più tempo, la scadenza del secret può essere aggiornata o addirittura rimossa.

Ad esempio, supponiamo che un account di servizio debba accedere a un secret ogni giorno in un periodo di 30 giorni. La scadenza del secret potrebbe quindi essere impostata su 60 giorni dalla creazione ed è possibile utilizzare un'associazione IAM condizionale per concedere all'account di servizio il ruolo Secret Accessor per 45 giorni. Se l'account di servizio tenta di accedere al secret dopo 45 giorni, verrà restituito un errore di autorizzazione negata e i flussi di lavoro che richiedono il secret non funzioneranno. Un amministratore potrebbe quindi concedere di nuovo il ruolo Secret Accessor all'account di servizio per mitigare rapidamente le indagini, poiché il secret stesso non verrebbe eliminato per altri 15 giorni.

Inoltre, è possibile creare avvisi basati sugli avvisi dei log relativi a secret in scadenza. Per ulteriori informazioni, consulta Logging per la scadenza.

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 il numero di secondi incluso il suffisso "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 installare Google Cloud CLI o eseguirne l'upgrade alla versione 378.0.0 o successiva. 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

Questi esempi utilizzano 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 in scadenza utilizzando una durata:

gcloud

Per utilizzare Secret Manager nella riga di comando, devi prima installare Google Cloud CLI o eseguirne l'upgrade alla versione 378.0.0 o successiva. 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 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": {}},
  "ttl": "DURATION"
}
EOF

Aggiorna la scadenza di un secret

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

Aggiorna la scadenza di un secret utilizzando un timestamp:

gcloud

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

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

API

Questi esempi utilizzano 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/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 installare Google Cloud CLI o eseguirne l'upgrade alla versione 378.0.0 o successiva. In Compute Engine o GKE, devi eseguire l'autenticazione con l'ambito cloud-platform.

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

API

Questi esempi utilizzano 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/SECRET_ID?updateMask=ttl" \
    --request "PATCH" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "ttl": "DURATION"
}
EOF

Rimuovi la scadenza di un secret

gcloud

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

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

API

Questi esempi utilizzano 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.

Se includi expire_time o ttl in updateMask e fornisci i valori per nessuno dei due, 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 di Secret Manager a intervalli specifici fino alla scadenza di un secret.

Tempi log Tipo di evento segreto
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

Per informazioni su come visualizzare questi log, consulta la guida rapida di Logging. Puoi creare metriche basate su log e utilizzarle per creare avvisi per le prossime scadenze.

Passaggi successivi