Garanzia dell'integrità dei dati

Questo argomento descrive come utilizzare i checksum per mantenere e verificare l'integrità dei dati del secret durante l'aggiunta e l'accessing alle versioni dei secret.

Quando aggiungi una versione del secret, hai la possibilità di passare un checksum CRC32C con i dati, che viene poi verificato da Secret Manager per garantire l'integrità dei dati.

Il checksum deve essere codificato in formato decimale, per corrispondere alla codifica int64 in SecretPayload. Il valore SecretVersion restituito indica se il checksum è stato ricevuto dal server.

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.

Con i dati secret archiviati in un file di dati, calcola il checksum utilizzando l'hash gsutil. Il checksum deve essere convertito in formato decimale; è codificato come int64 nel protocollo SecretPayload.

$ gsutil hash -c -h "/path/to/file.txt"

Con i dati secret trasmessi nella riga di comando, calcola il checksum come segue:

$ gsutil hash -c -h cat <(echo ${SECRET_DATA})

Codifica i dati secret in Base64 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 relativo checksum. Esempio di risposta:

{
  "name": "projects/123/secrets/my_secret/versions/2",
  "payload": {
    "data": "YQo=",
    "dataCrc32c": "163439259"
  }
}

Quando aggiungi una versione del secret nella console, il checksum viene calcolato automaticamente quando inserisci un valore per il secret.

Per le versioni dei secret criptate con chiavi di crittografia gestite dal cliente (CMEK) e create prima del 16 luglio 2021 non sono archiviati checksum, quindi non viene restituito un checksum all'accesso.

Passaggi successivi