Esta página descreve como usar somas de verificação para manter e verificar a integridade dos dados secretos ao adicionar e acessar versões secretas.
Pense em um checksum como uma impressão digital exclusiva para seus dados. É um código curto gerado a partir dos dados secretos usando o algoritmo CRC32C. Se um único bit nos seus dados secretos mudar, a soma de verificação também vai mudar. Isso permite que o Secret Manager detecte qualquer modificação ou corrupção acidental.
O Secret Manager usa somas de verificação das seguintes maneiras:
-
Ao adicionar uma versão do secret:
-
O Secret Manager calcula a soma de verificação CRC32C dos dados secretos.
-
Essa soma de verificação é armazenada com os dados secretos.
-
-
Ao acessar uma versão do secret:
-
O Secret Manager retorna os dados secretos com a soma de verificação.
-
É possível usar essa soma de verificação para verificar se os dados recebidos são exatamente iguais aos armazenados no Secret Manager.
-
Para garantir que a soma de verificação seja compatível com a estrutura SecretPayload, a soma de verificação dos dados secretos precisa ser calculada usando o algoritmo CRC32C e codificada como um número inteiro decimal. A resposta SecretVersion inclui um campo indicando se o servidor recebeu e validou essa soma de verificação.
O exemplo a seguir mostra como as somas de verificação funcionam no Secret Manager:
API
Esses exemplos usam curl para demonstrar o uso da API. É possível gerar tokens de acesso com o gcloud auth print-access-token. No Compute Engine ou no GKE, você precisa fazer a autenticação com o escopo do cloud-platform.
Com dados confidenciais armazenados em um arquivo de dados, calcule a soma de verificação usando gcloud storage hash. O checksum precisa ser convertido para o formato decimal. Ele é codificado como int64 no proto SecretPayload.
$ gcloud storage hash "/path/to/file.txt" --hex
Com os dados secretos transmitidos na linha de comando, calcule a checksum da seguinte maneira:
$ gcloud storage hash --hex cat <(echo ${SECRET_DATA})
Codifique os dados do secret em Base64 e salve-os como uma variável do shell.
$ SECRET_DATA=$(echo "seCr3t" | base64)
Invoque a API usando 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}}"
Quando a versão do secret é acessada, o SecretPayload retornado contém os dados com a soma de verificação. Confira a seguir um exemplo de resposta:
{ "name": "projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID", "payload": { "data": "YQo=", "dataCrc32c": "163439259" } }
No console, quando você adiciona uma versão do secret, a checksum é calculada automaticamente quando você insere um valor para o secret.
As versões secretas criptografadas com chaves de criptografia gerenciadas pelo cliente (CMEK) e criadas antes de 16 de julho de 2021 não têm checksums armazenados.
A seguir
- Configurar notificações em um segredo regional
- Analisar segredos regionais com o Inventário de recursos do Cloud