Berikut cara mengirim data terenkripsi:
Menyiapkan antarmuka command line Google Cloud
Instal dan lakukan inisialisasi antarmuka command line Google Cloud.
Untuk memastikan komponen
gcloud
Anda sudah diupdate, jalankan perintah berikut.gcloud components update
Untuk memilih atau membuat project Google Cloud baru dan mengaktifkan Cloud Key Management Service, klik Enable Cloud KMS.
Untuk menyetel project di lingkungan Anda, gunakan perintah
gcloud config set
. Untuk memeriksa apakah project sudah disetel di lingkungan Anda, jalankangcloud config list
.Jika
project
tidak ditetapkan, atau Anda ingin menggunakan project lain untuk kunci Anda, jalankangcloud config set
:gcloud config set project PROJECT_ID
Buat kunci
Untuk mengetahui informasi selengkapnya, lihat dokumentasi Key Management Service.
Buat key ring.
gcloud kms keyrings create KEY_RING_NAME \ --location KEY_RING_LOCATION
Untuk mengetahui informasi selengkapnya, lihat Membuat ring kunci.
Buat kunci di key ring. ROTATION_PERIOD menunjukkan interval untuk merotasi kunci, dan NEXT_ROTATION_TIME menunjukkan tanggal dan waktu saat rotasi pertama harus terjadi.
Misalnya, untuk merotasi kunci setiap 30 hari dan melakukan rotasi pertama dalam 1 minggu, tetapkan ROTATION_PERIOD ke
30d
dan NEXT_ROTATION_TIME ke$(date --utc --date="next week" --iso-8601=seconds)
.gcloud kms keys create KEY_NAME \ --keyring KEY_RING_NAME \ --location KEY_RING_LOCATION \ --purpose "encryption" \ --rotation-period ROTATION_PERIOD \ --next-rotation-time "NEXT_ROTATION_TIME"
Untuk mengetahui informasi selengkapnya, lihat Membuat kunci.
Membuat penyedia workload identity pool
Bagian ini adalah ringkasan singkat tentang Workload Identity Federation. Untuk mengetahui informasi selengkapnya, lihat dokumentasi Workload Identity Federation.
Buat workload identity pool (WIP).
location
untuk pool harusglobal
.gcloud iam workload-identity-pools create WIP_ID \ --location=global \ --display-name="WIP_DISPLAY_NAME" \ --description="WIP_DESCRIPTION"
Untuk mengetahui informasi selengkapnya, lihat Mengelola workload identity pool dan penyedia.
Buat penyedia workload identity pool. Argumen
--attribute-condition
memverifikasi bahwa pemanggil adalah akun layanan pencocokan rahasia.gcloud iam workload-identity-pools providers create-oidc PROVIDER_ID \ --location=global \ --workload-identity-pool=WIP_ID \ --display-name="PROVIDER_DISPLAY_NAME" \ --description="PROVIDER_DESCRIPTION" \ --attribute-mapping="google.subject=assertion.sub,google.groups=[\"PROVIDER_ID\"]" \ --attribute-condition="assertion.swname == 'CONFIDENTIAL_SPACE' && 'STABLE' in assertion.submods.confidential_space.support_attributes && ['[email protected]'].exists( a, a in assertion.google_service_accounts) && 'ECDSA_P256_SHA256:6b1f357b59e9407fb017ca0e3e783b2bd5acbfea6c83dd82971a4150df5b25f9' in assertion.submods.container.image_signatures.map(sig, sig.signature_algorithm+':'+sig.key_id)" \ --issuer-uri="https://confidentialcomputing.googleapis.com" \ --allowed-audiences="https://sts.googleapis.com"
Berikan peran pendekripsi kunci kepada penyedia WIP.
# Grants the role to the WIP provider. gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING_NAME \ --location KEY_RING_LOCATION \ --member "principalSet://iam.googleapis.com/projects/PROJECT_ID/locations/global/workloadIdentityPools/WIP_ID/group/PROVIDER_ID" \ --role "roles/cloudkms.cryptoKeyDecrypter"
Mengenkripsi data
Enkripsi di Data Manager API memerlukan kunci enkripsi data (DEK). DEK adalah kunci simetris yang Anda gunakan untuk mengenkripsi data. DEK Anda dienkripsi menggunakan kunci Google Cloud KMS Anda. Anda mengirim DEK terenkripsi sebagai bagian dari permintaan.
Untuk menyiapkan data dalam permintaan enkripsi, ikuti panduan pemformatan dan hashing yang sama dengan yang Anda gunakan untuk data yang tidak dienkripsi.
Jangan mengenkripsi nilai yang tidak di-hash. Misalnya, region_code
atau postal_code
dari AddressInfo
.
Setelah data untuk setiap kolom diformat dan di-hash, enkripsi nilai yang di-hash menggunakan langkah-langkah berikut:
- Enkode byte hash menggunakan encoding Base64.
- Enkripsi hash yang dienkode Base64 menggunakan DEK Anda.
- Enkode output dari proses enkripsi menggunakan encoding hex atau Base64.
- Gunakan nilai yang dienkode untuk kolom.
- Tetapkan
encryption_info
danencoding
pada permintaan.
Untuk menyelesaikan langkah terakhir, ubah
IngestAudienceMembersRequest
atau
IngestEventsRequest
untuk menunjukkan bahwa Anda mengenkripsi
data Anda:
- Tetapkan kolom
encryption_info
. - Tetapkan kolom
encoding
ke encoding yang digunakan untuk mengenkode nilai kolom terenkripsi.
Berikut cuplikan permintaan dengan setelan kolom enkripsi dan encoding:
{
...
"encryptionInfo": {
"gcpWrappedKeyInfo": {
"kekUri": "gcp-kms://projects/PROJECT_ID/locations/KEY_RING_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME",
"wipProvider": "projects/PROJECT_ID/locations/global/workloadIdentityPools/WIP_ID/providers/PROVIDER_ID",
"keyType": "XCHACHA20_POLY1305",
"encryptedDek": "ENCRYPTED_DEK"
}
},
"encoding": "ENCODING"
}
Untuk menggunakan library dan utilitas Data Manager API guna membuat dan mengirim permintaan, lihat contoh kode IngestAudienceMembersWithEncryption
untuk Java atau contoh kode ingest_audience_members_with_encryption
untuk Python.