En esta página, se describe cómo usar sumas de comprobación para mantener y verificar la integridad de los datos de tu secreto cuando agregas y accedes a versiones secretas.
Piensa en una suma de comprobación como una huella dactilar única para tus datos. Es un código corto generado a partir de los datos secretos con el algoritmo CRC32C. Si cambia un solo bit de tus datos secretos, la suma de comprobación también cambiará. Esto permite que Secret Manager detecte cualquier modificación o daño accidental.
Secret Manager usa sumas de comprobación de las siguientes maneras:
-
Cuando agregas una versión del Secret, sucede lo siguiente:
-
Secret Manager calcula la suma de verificación CRC32C de tus datos secretos.
-
Esta suma de verificación se almacena junto con los datos secretos.
-
-
Cuando accedes a una versión del secreto, sucede lo siguiente:
-
Secret Manager muestra los datos del secreto junto con su suma de verificación.
-
Puedes usar esta suma de comprobación para verificar que los datos que recibiste sean exactamente los mismos que los datos almacenados en Secret Manager.
-
Para garantizar que la suma de comprobación sea compatible con la estructura SecretPayload, la suma de comprobación de los datos secretos se debe calcular con el algoritmo CRC32C y codificarse como un número entero decimal. La respuesta de SecretVersion incluye un campo que indica si el servidor recibió y validó correctamente esta suma de comprobación.
En el siguiente ejemplo, se muestra cómo funcionan las sumas de comprobación en Secret Manager:
API
En estos ejemplos, se usa curl para demostrar el uso de la API. Puedes generar tokens de acceso con gcloud auth print-access-token. En Compute Engine o GKE, debes autenticarte con el permiso cloud-platform.
Con los datos secretos almacenados en un archivo de datos, calcula la suma de comprobación con gcloud storage hash. La suma de comprobación se debe convertir al formato decimal; se codifica como int64 en el proto SecretPayload.
$ gcloud storage hash "/path/to/file.txt" --hex
Con los datos secretos pasados en la línea de comandos, calcula la suma de comprobación de la siguiente manera:
$ gcloud storage hash --hex cat <(echo ${SECRET_DATA})
Codifica los datos secretos en Base64 y guárdalos como una variable de shell.
$ SECRET_DATA=$(echo "seCr3t" | base64)
Invoca a la API mediante 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}}"
Cuando se accede a la versión del secreto, la SecretPayload que se muestra contiene los datos junto con su suma de verificación. A continuación, se muestra una respuesta de ejemplo:
{ "name": "projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID", "payload": { "data": "YQo=", "dataCrc32c": "163439259" } }
En la consola, cuando agregas una versión del secreto, la suma de comprobación se calcula automáticamente cuando ingresas un valor para el secreto.
Las versiones secretas encriptadas con claves de encriptación administradas por el cliente (CMEK) y creadas antes del 16 de julio de 2021 no tienen sumas de comprobación almacenadas.
¿Qué sigue?
- Cómo configurar notificaciones en un secreto regional
- Cómo analizar secretos regionales con Cloud Asset Inventory