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é un utente non li elimina. Se un token segreto deve essere archiviato solo per un periodo di tempo limitato e noto, puoi associargli una data di scadenza. Al momento di scadenza configurato per un segreto, viene eliminato automaticamente.
Se non hai requisiti che richiedono l'eliminazione del segreto, valuta la possibilità di utilizzare le condizioni IAM o lo stato della versione Disattivata per revocare l'accesso in modo sicuro.
Puoi inserire una data di scadenza come timestamp o come durata. Quando vengono recuperati i metadati del secret, la scadenza viene sempre restituita come timestamp, indipendentemente da come è stata specificata.
Una scadenza può essere aggiunta, aggiornata o rimossa da un secret in qualsiasi momento.
Limitazioni
La scadenza dei secret è disponibile solo nell'API Secret Manager
v1
e nello strumento gcloud riga di comando.La scadenza di un segreto non può essere inferiore a 60 secondi o superiore a 100 anni.
Utilizzare in sicurezza i secret con scadenza
Quando un secret scade in Secret Manager, viene eliminato in modo irreversibile. 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. Il vincolo deve scadere dopo che si prevede che il segreto non verrà più utilizzato, ma in tempo sufficiente per rilevare le autorizzazioni rimosse prima della scadenza del segreto. Se i flussi di lavoro che si riteneva non utilizzassero più la violazione della crittografia dopo la revoca delle autorizzazioni, le autorizzazioni possono essere aggiunte di nuovo per mitigare rapidamente il problema. Se è necessario più tempo, la scadenza del segreto può essere aggiornata o addirittura rimossa.
Ad esempio, supponiamo che un account di servizio debba accedere a una secret ogni giorno per un periodo di 30 giorni. La scadenza del secret potrebbe quindi essere impostata su 60 giorni dalla creazione e un'associazione IAM condizionale potrebbe essere utilizzata per concedere all'account di servizio il ruolo Accesso ai secret per 45 giorni. Se l'account di servizio tenta di accedere al segreto dopo 45 giorni, verrà restituito un errore di autorizzazione negata e i flussi di lavoro che richiedono il segreto verranno interrotti. Un amministratore potrebbe quindi concedere nuovamente il ruolo Accesso ai segreti all'account di servizio per mitigare rapidamente il problema durante le indagini, poiché il segreto stesso non verrebbe eliminato per altri 15 giorni.
Inoltre, è possibile creare avvisi basati su log che avvisano della scadenza imminente dei secret. Per ulteriori informazioni, consulta la sezione Log di scadenza.
Specifica timestamp e durate
I valori dei 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, incluso il suffisso "s", ad esempio
86400s
.
Creare un secret con scadenza
Crea un secret con scadenza utilizzando un timestamp:
gcloud
Per utilizzare Secret Manager sulla riga di comando, installa o esegui l'upgrade alla versione 378.0.0 o successiva di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti 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. 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": {}},
"expire_time": "TIMESTAMP"
}
EOF
Crea un secret con scadenza utilizzando una durata:
gcloud
Per utilizzare Secret Manager sulla riga di comando, installa o esegui l'upgrade alla versione 378.0.0 o successiva di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti 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. 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 secret
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à una sovrascriverà la scadenza esistente.
Aggiorna la scadenza di un secret utilizzando un timestamp:
gcloud
Per utilizzare Secret Manager sulla riga di comando, installa o esegui l'upgrade alla versione 378.0.0 o successiva 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
Questi esempi utilizzano curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth print-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 sulla riga di comando, 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" \
--ttl "DURATION"
API
Questi esempi utilizzano curl per dimostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth print-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 sulla riga di comando, installa o esegui l'upgrade alla versione 378.0.0 o successiva di Google Cloud CLI. Su Compute Engine o GKE, devi autenticarti 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. Su Compute Engine o GKE, devi autenticarti con l'ambito cloud-platform.
Se includi expire_time
o ttl
in updateMask
senza specificare valori per nessuno dei due, la scadenza non 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 '{}'
Log di scadenza
Cloud Audit Logs non vengono generati quando un segreto scade automaticamente.
Secret Manager scrive invece i log nella risorsa Secret
Secret Manager a intervalli specifici che precedono la scadenza di un secret.
Tempi di registrazione | 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 alla registrazione. Puoi creare metriche basate su log e utilizzarle per creare avvisi per le scadenze imminenti.
Passaggi successivi
- Scopri come configurare le pianificazioni di rotazione per i secret.
- Scopri come abilitare le chiavi di crittografia gestite dal cliente (CMEK) per Secret Manager.