Garanzia dell'integrità dei dati

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.

Considera un checksum come un'impronta digitale univoca per i tuoi dati. Si tratta di un codice breve generato dai dati del secret utilizzando l'algoritmo CRC32C. Se anche un singolo bit nei dati del secret cambia, cambia anche il checksum. In questo modo, Secret Manager rileva eventuali modifiche o danneggiamenti accidentali.

Secret Manager utilizza i checksum nei seguenti modi:

  1. Quando aggiungi una versione del secret:

    • Secret Manager calcola il checksum CRC32C dei dati del secret.

    • Questo checksum viene archiviato insieme ai dati del secret.

  2. Quando accedi a una versione del secret:

    • Secret Manager restituisce i dati del secret insieme al relativo checksum.

    • Puoi utilizzare questo checksum per verificare che i dati ricevuti siano esattamente gli stessi archiviati in Secret Manager.

Per assicurarti che il checksum sia compatibile con la SecretPayload, il checksum dei dati del secret deve essere calcolato utilizzando l'algoritmo CRC32C e codificato come un 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 del secret archiviati in un file di dati, calcola il checksum, utilizzando gcloud storage hash. Il checksum deve essere convertito in formato decimale; viene codificato come int64 nel proto SecretPayload.

$ gcloud storage hash "/path/to/file.txt" --hex

Codifica i dati del secret in Base64 e salvali come variabile shell.

$ SECRET_DATA=$(echo "seCr3t" | base64)

Con i dati del secret passati nella riga di comando, calcola il checksum nel seguente modo:

$ gcloud storage hash --hex cat <(echo ${SECRET_DATA})

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 relativo checksum. Di seguito è riportata una risposta di esempio:

{
  "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 del secret criptate con chiavi di crittografia gestite dal cliente (CMEK) e create prima del 16 luglio 2021 non hanno checksum archiviati.

Passaggi successivi