Halaman ini menjelaskan cara mengenkripsi data sensitif dalam parameter template yang disediakan Google, dengan menggunakan kunci enkripsi dengan Cloud KMS.
Ringkasan
Beberapa template yang disediakan Google memungkinkan Anda mengenkripsi data sensitif dalam parameter template, seperti nama pengguna, sandi, string koneksi JDBC, dan kunci API. Jika didukung, template ini menyertakan parameter untuk menentukan kunci enkripsi Cloud KMS, seperti:
KMSEncryptionKey
tokenKMSEncryptionKey
apiKeyKMSEncryptionKey
Untuk menggunakan kunci enkripsi Cloud KMS dengan template ini, lakukan langkah-langkah berikut:
- Berikan peran Cloud KMS CryptoKey Decrypter ke akun layanan pekerja Dataflow.
- Buat kunci enkripsi.
- Gunakan kunci untuk mengenkripsi data.
- Mengenkode data terenkripsi dengan base64.
- Saat Anda menjalankan template, tentukan kunci enkripsi dan gunakan nilai parameter yang dienkripsi.
Jika menentukan kunci enkripsi, Anda harus mengenkripsi semua parameter yang mendukung enkripsi. Untuk memahami parameter mana yang dapat dienkripsi, lihat dokumentasi untuk template tertentu.
Contoh
Contoh berikut menggunakan template MySQL ke BigQuery.
Buat key ring.
gcloud kms keyrings create "KEY_RING_NAME" \ --location "global"
Buat kunci enkripsi.
gcloud kms keys create "KEY_NAME" \ --location "global" \ --keyring "KEY_RING_NAME" \ --purpose "encryption"
Enkripsi dan enkode base64 nama pengguna, sandi, dan string koneksi JDBC.
export USER_NAME=`echo -n "USER_NAME" \ | gcloud kms encrypt --key=quickstart --keyring=test --location=global --plaintext-file=- --ciphertext-file=- \ | base64 -w 0` export PASSWORD=`echo -n "PASSWORD" \ | gcloud kms encrypt --key=quickstart --keyring=test --location=global --plaintext-file=- --ciphertext-file=- \ | base64 -w 0` export CONNECTION_STRING=`echo -n "CONNECTION_STRING" \ | gcloud kms encrypt --key=quickstart --keyring=test --location=global --plaintext-file=- --ciphertext-file=- \ | base64 -w 0`
Jalankan template.
gcloud dataflow flex-template run mysql-job \ --project=PROJECT_ID \ --region=us-central1 \ --template-file-gcs-location=gs://dataflow-templates-us-central1/latest/flex/MySQL_to_BigQuery \ --parameters \ connectionURL="$CONNECTION_STRING",\ query="SOURCE_SQL_QUERY",\ outputTable=PROJECT_ID:DATASET.TABLE_NAME,\ bigQueryLoadingTemporaryDirectory=CLOUD_STORAGE_PATH,\ username="$USER_NAME",\ password="$PASSWORD",\ KMSEncryptionKey=projects/PROJECT_ID/locations/global/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Pemecahan masalah
Bagian ini berisi informasi pemecahan masalah untuk mengenkripsi parameter template.
Izin ditolak
Saat menjalankan tugas, Anda akan melihat error PERMISSION_DENIED
dalam log tugas,
yang mirip dengan berikut ini:
PERMISSION_DENIED: Permission cloudkms.cryptoKeyVersions.useToDecrypt denied on
resource RESOURCE_PATH (or it may not exist)
Untuk mendekripsi data, akun layanan pekerja Dataflow memerlukan izin cloudkms.cryptoKeyVersions.useToDecrypt untuk kunci enkripsi. Pastikan akun layanan pekerja memiliki peran Cloud KMS CryptoKey Decrypter. Untuk mengetahui informasi selengkapnya, lihat Keamanan dan izin Dataflow.
Langkah selanjutnya
- Pelajari Cloud Key Management Service lebih lanjut.
- Lihat daftar template yang disediakan Google.