Questa pagina descrive come utilizzare i checksum per mantenere e verificare l'integrità dei dati del secret quando aggiungi e accedi alle versioni del secret.
Pensa a un checksum come a un'impronta univoca per i tuoi dati. Si tratta di un codice breve generato dai dati segreti utilizzando l'algoritmo CRC32C. Se anche un solo bit dei tuoi dati segreti cambia, cambia anche il checksum. In questo modo, Secret Manager rileva eventuali modifiche o danneggiamenti accidentali.
Secret Manager utilizza i checksum nei seguenti modi:
-
Quando aggiungi una versione del secret:
-
Secret Manager calcola il checksum CRC32C dei dati secret.
-
Questo checksum viene memorizzato insieme ai dati del secret.
-
-
Quando accedi a una versione del secret:
-
Secret Manager restituisce i dati del secret insieme al checksum.
-
Puoi utilizzare questo checksum per verificare che i dati ricevuti siano esattamente gli stessi di quelli archiviati in Secret Manager.
-
Per garantire che il checksum sia compatibile con la struttura SecretPayload, il checksum dei dati del secret deve essere calcolato utilizzando l'algoritmo CRC32C e codificato come numero intero decimale. La risposta SecretVersion include un campo che indica se il server ha ricevuto e convalidato correttamente questo checksum.
Il seguente esempio mostra come funzionano i checksum in Secret Manager:
API
Questi esempi utilizzano curl per mostrare l'utilizzo dell'API. Puoi generare token di accesso con gcloud auth print-access-token. Su Compute Engine o GKE, devi eseguire l'autenticazione con l'ambito cloud-platform.
Con i dati secret archiviati in un file di dati, calcola il checksum utilizzando gcloud storage hash. Il checksum deve essere convertito in formato decimale; è codificato come int64 in SecretPayload proto.
$ gcloud storage hash "/path/to/file.txt" --hex
Con i dati secret passati nella riga di comando, calcola il checksum nel seguente modo:
$ gcloud storage hash --hex cat <(echo ${SECRET_DATA})
Codifica in base64 i dati del secret e salvali come variabile shell.
$ SECRET_DATA=$(echo "seCr3t" | base64)
Richiama l'API utilizzando curl.
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id:addVersion" \
--request "POST" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
--data "{\"payload\": {\"data\": \"${SECRET_DATA}\", \"data_crc32c\": $CHECKSUM}}"
Quando si accede alla versione del secret, il SecretPayload restituito contiene i dati insieme al checksum. Di seguito è riportato un esempio di risposta:
{ "name": "projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID", "payload": { "data": "YQo=", "dataCrc32c": "163439259" } }
Nella console, quando aggiungi una versione del secret, il checksum viene calcolato automaticamente quando inserisci un valore per il secret.
Le versioni dei secret criptate con chiavi di crittografia gestite dal cliente (CMEK) e create prima del 16 luglio 2021 non hanno checksum memorizzati.
Passaggi successivi
- Scopri come configurare le notifiche per un secret.
- Scopri come analizzare i secret con Cloud Asset Inventory.