Datenintegrität

Auf dieser Seite wird beschrieben, wie Sie Prüfsummen verwenden, um die Integrität der Daten Ihres Secrets beim Hinzufügen und Zugreifen auf Secret-Versionen zu wahren und zu prüfen.

Eine Prüfsumme ist wie ein eindeutiger Fingerabdruck für Ihre Daten. Es handelt sich um einen kurzen Code, der aus den vertraulichen Daten mit dem CRC32C-Algorithmus generiert wird. Wenn sich auch nur ein Bit in Ihren vertraulichen Daten ändert, ändert sich auch die Prüfsumme. So kann Secret Manager versehentliche Änderungen oder Beschädigungen erkennen.

Secret Manager verwendet Prüfsummen auf folgende Weise:

  1. Wenn Sie eine Secret-Version hinzufügen, gilt Folgendes:

    • Secret Manager berechnet die CRC32C-Prüfsumme Ihrer Secret-Daten.

    • Diese Prüfsumme wird zusammen mit den Secret-Daten gespeichert.

  2. Wenn Sie auf eine Secret-Version zugreifen, gilt Folgendes:

    • Secret Manager gibt die Secret-Daten zusammen mit der Prüfsumme zurück.

    • Mit dieser Prüfsumme können Sie überprüfen, ob die empfangenen Daten genau mit den in Secret Manager gespeicherten Daten übereinstimmen.

Damit die Prüfsumme mit der Struktur SecretPayload kompatibel ist, muss die Prüfsumme der vertraulichen Daten mit dem CRC32C-Algorithmus berechnet und als Dezimalganzzahl codiert werden. Die SecretVersion-Antwort enthält ein Feld, das angibt, ob der Server diese Prüfsumme erfolgreich empfangen und validiert hat.

Das folgende Beispiel zeigt, wie Prüfsummen in Secret Manager funktionieren:

API

In diesen Beispielen wird curl verwendet, um die Verwendung mit der API zu demonstrieren. Sie können Zugriffstokens mit gcloud auth print-access-token generieren. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

Berechnen Sie die Prüfsumme für die in einer Datendatei gespeicherten vertraulichen Daten mit gcloud storage hash. Die Prüfsumme muss in das Dezimalformat konvertiert werden. Sie ist im SecretPayload-Proto als int64 codiert.

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

Wenn geheime Daten in der Befehlszeile übergeben werden, berechnen Sie die Prüfsumme so:

$ gcloud storage hash --hex cat <(echo ${SECRET_DATA})

Codieren Sie die Secret-Daten und speichern Sie sie als Shell-Variable.

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

Rufen Sie die API mit "curl" auf.

$ 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}}"

Beim Zugriff auf die Secret-Version enthält die zurückgegebene SecretPayload die Daten zusammen mit ihrer Prüfsumme. Hier ist eine Beispielantwort:

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

Wenn Sie in der Konsole eine Secret-Version hinzufügen, wird die Prüfsumme automatisch berechnet, wenn Sie einen Wert für das Secret eingeben.

Für Secret-Versionen, die mit vom Kunden verwalteten Verschlüsselungsschlüsseln (Customer-Managed Encryption Keys, CMEK) verschlüsselt und vor dem 16. Juli 2021 erstellt wurden, sind keine Prüfsummen gespeichert.

Nächste Schritte