Jaminan integritas data

Topik ini menjelaskan cara menggunakan checksum untuk menjaga dan memverifikasi integritas data rahasia Anda saat menambahkan dan accessing 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 di SecretPayload. SecretVersion yang ditampilkan menunjukkan apakah checksum telah diterima oleh server.

API

Contoh ini menggunakan curl untuk mendemonstrasikan 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 hash gsutil. Checksum harus dikonversi ke format desimal; Checksum dienkode sebagai int64 dalam proto SecretPayload.

$ gsutil hash -c -h "/path/to/file.txt"

Dengan data rahasia yang diteruskan melalui command line, hitung checksum sebagai berikut:

$ gsutil hash -c -h cat <(echo ${SECRET_DATA})

Melakukan enkode data rahasia dengan Base64 dan menyimpannya 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 rahasia diakses, SecretPayload yang ditampilkan akan 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 tersebut.

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

Langkah selanjutnya