Assurance de l'intégrité des données

Cet article explique comment utiliser les sommes de contrôle pour gérer et vérifier l'intégrité des données de votre secret lorsque vous ajoutez et accessing à des versions de secrets.

Lorsque vous ajoutez une version de secret, vous avez la possibilité de transmettre une somme de contrôle CRC32C avec les données, qui est ensuite validée par Secret Manager pour garantir l'intégrité des données.

La somme de contrôle doit être encodée au format décimal afin de correspondre à son encodage int64 dans SecretPayload. La valeur SecretVersion renvoyée indique si le serveur a reçu la somme de contrôle.

API

Ces exemples utilisent curl pour illustrer l'utilisation de l'API. Vous pouvez générer des jetons d'accès avec gcloud auth print-access-token. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.

Pour les données secrètes stockées dans un fichier de données, calculez la somme de contrôle à l'aide de gsutil hash. La somme de contrôle doit être convertie au format décimal. Elle est encodée au format int64 dans le fichier proto SecretPayload.

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

Avec les données secrètes transmises via la ligne de commande, calculez la somme de contrôle comme suit:

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

Encodez en base64 les données du secret et enregistrez-les comme variable d'interface système.

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

Appelez l'API à l'aide de 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}}"

Lorsque vous accédez à la version du secret, la valeur SecretPayload renvoyée contient les données ainsi que sa somme de contrôle. Exemple de réponse :

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

Dans la console , lorsque vous ajoutez une version de secret, la somme de contrôle est automatiquement calculée lorsque vous saisissez une valeur pour le secret.

Les versions des secrets chiffrées avec des clés de chiffrement gérées par le client (CMEK) et créées avant le 16 juillet 2021 n'ont pas de somme de contrôle stockées. Aucune somme de contrôle n'est donc renvoyée lorsque vous y accédez.

Étapes suivantes