En esta página se describe cómo usar sumas de verificación para mantener y verificar la integridad de los datos de tu secreto al añadir y acceder a versiones del secreto.
Piensa en una suma de comprobación como una huella digital única de tus datos. Es un código corto generado a partir de los datos secretos mediante el algoritmo CRC32C. Si cambia aunque sea un solo bit de tus datos secretos, la suma de comprobación también cambiará. De esta forma, Secret Manager puede detectar cualquier modificación o corrupción accidental.
Secret Manager usa sumas de comprobación de las siguientes formas:
-
Cuando añades una versión de secreto:
-
Secret Manager calcula la suma de comprobación CRC32C de tus datos secretos.
-
Esta suma de comprobación se almacena junto con los datos secretos.
-
-
Cuando accedes a una versión de secreto:
-
Secret Manager devuelve los datos secretos junto con su suma de comprobación.
-
Puede usar esta suma de comprobación para verificar que los datos que ha recibido son exactamente los mismos que los datos almacenados en Secret Manager.
-
Para asegurarse de que la suma de comprobación sea compatible con la estructura SecretPayload, la suma de comprobación de los datos secretos debe calcularse mediante el algoritmo CRC32C y codificarse como un número entero decimal. La respuesta SecretVersion incluye un campo que indica si el servidor ha recibido y validado 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 mostrar cómo usar la API. Puedes generar tokens de acceso con gcloud auth print-access-token. En Compute Engine o GKE, debes autenticarte con el ámbito 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 debe convertirse al formato decimal. Se codifica como int64 en el proto SecretPayload.
$ gcloud storage hash "/path/to/file.txt" --hex
Si los datos secretos se transfieren 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 en Base64 los datos secretos y guárdalos como una variable de shell.
$ SECRET_DATA=$(echo "seCr3t" | base64)
Invoca 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, el SecretPayload devuelto contiene los datos junto con su suma de comprobación. A continuación, se muestra un ejemplo de respuesta:
{ "name": "projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID", "payload": { "data": "YQo=", "dataCrc32c": "163439259" } }
En la consola, cuando añades una versión de un secreto, la suma de comprobación se calcula automáticamente al introducir un valor para el secreto.
Las versiones de secretos encriptadas con claves de encriptado gestionadas por el cliente (CMEK) y creadas antes del 16 de julio del 2021 no tienen almacenadas sumas de comprobación.
Siguientes pasos
- Configurar notificaciones en un secreto regional
- Analizar secretos regionales con Inventario de Recursos de Cloud