Jaminan integritas data

Topik ini menjelaskan cara menggunakan checksum untuk mempertahankan dan memverifikasi integritas data secret Anda saat menambahkan dan mengakses versi secret.

Saat menambahkan versi secret, Anda memiliki opsi untuk meneruskan checksum CRC32C dengan data, yang kemudian diverifikasi oleh Secret Manager untuk memastikan integritas data.

Checksum harus dienkode dalam format desimal, agar cocok dengan encoding int64-nya di SecretPayload. SecretVersion yang ditampilkan menunjukkan apakah checksum telah diterima oleh server.

API

Contoh ini menggunakan curl untuk menunjukkan penggunaan API. Anda dapat membuat token akses dengan gcloud auth print-access-token. Di Compute Engine atau GKE, Anda harus melakukan autentikasi dengan cakupan cloud-platform.

Dengan data rahasia yang disimpan dalam file data, hitung checksum, menggunakan gcloud storage hash. Checksum harus dikonversi ke format desimal; checksum dienkode sebagai int64 dalam proto SecretPayload.

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

Dengan data secret yang diteruskan di command line, hitung checksum sebagai berikut:

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

Enkode data rahasia dengan base64 dan simpan sebagai variabel shell.

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

Panggil API menggunakan curl.

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

Saat versi secret diakses, SecretPayload yang ditampilkan berisi data beserta checksum-nya. Contoh respons:

{
  "name": "projects/123/secrets/my_secret/versions/2",
  "payload": {
    "data": "YQo=",
    "dataCrc32c": "163439259"
  }
}

Di konsol , saat Anda menambahkan versi secret, checksum akan otomatis dihitung saat Anda memasukkan nilai untuk secret.

Versi secret yang dienkripsi dengan kunci enkripsi yang dikelola pelanggan (CMEK) dan dibuat sebelum 16 Juli 2021 tidak memiliki checksum yang disimpan, sehingga checksum tidak ditampilkan saat diakses.

Langkah selanjutnya