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

Cette page explique comment utiliser des sommes de contrôle pour maintenir et vérifier l'intégrité des données de votre secret lorsque vous ajoutez et accédez à des versions de secret.

Considérez une somme de contrôle comme une empreinte unique pour vos données. Il s'agit d'un code court généré à partir du des données secrètes à l’aide de l’algorithme CRC32C. Si un seul bit de vos données secrètes change, la somme de contrôle change également. Cela permet à Secret Manager de détecter toute erreur de modifications ou de corruption.

Secret Manager utilise les sommes de contrôle comme suit:

  1. Lorsque vous ajoutez une version de secret :

    • Secret Manager calcule la somme de contrôle CRC32C de vos données secrètes.

    • Cette somme de contrôle est stockée avec les données secrètes.

  2. Lorsque vous accédez à une version de secret :

    • Secret Manager renvoie les données secrètes ainsi que leur somme de contrôle.

    • Vous pouvez utiliser cette somme de contrôle pour vérifier que les données que vous avez reçues sont exactement les mêmes que celles stockées dans Secret Manager.

Pour garantir que la somme de contrôle est compatible avec SecretPayload , la somme de contrôle des données du secret doit être calculée à l'aide de l'algorithme CRC32C et encodée sous forme d'entier décimal. SecretVersion La réponse contient un champ indiquant si le serveur a bien reçu et validé cette la somme de contrôle.

L'exemple suivant montre le fonctionnement des sommes de contrôle dans Secret Manager:

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.

Avec des données secrètes stockées dans un fichier de données, calculez la somme de contrôle à l'aide de la fonction de hachage gcloud Storage. Le somme de contrôle doit être converti au format décimal. Il est encodé en tant qu'int64 dans le protocole SecretPayload.

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

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

$ gcloud storage hash --hex 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.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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 SecretPayload renvoyée contient les données ainsi que leur somme de contrôle. Voici un exemple de réponse :

{
  "name": "projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID",
  "payload": {
    "data": "YQo=",
    "dataCrc32c": "163439259"
  }
}

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

Les versions de secret chiffrées avec des clés de chiffrement gérées par le client (CMEK) créées avant le 16 juillet 2021 ne sont pas stockées.

Étape suivante