Secara default, Pencadangan untuk GKE mengenkripsi konten pelanggan dalam penyimpanan. Backup for GKE menangani enkripsi untuk Anda tanpa perlu tindakan tambahan dari Anda. Opsi ini disebut enkripsi default Google.
Jika ingin mengontrol kunci enkripsi, Anda dapat menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) di Cloud KMS dengan layanan terintegrasi CMEK, termasuk Backup untuk GKE. Menggunakan kunci Cloud KMS memberi Anda kontrol atas tingkat perlindungan, lokasi, jadwal rotasi, izin penggunaan dan akses, serta batas kriptografisnya. Dengan menggunakan Cloud KMS, Anda juga dapat melihat log audit dan mengontrol siklus proses kunci. Alih-alih Google yang memiliki dan mengelola kunci enkripsi kunci (KEK) simetris yang melindungi data Anda, Andalah yang mengontrol dan mengelola kunci ini di Cloud KMS.
Setelah Anda menyiapkan resource dengan CMEK, pengalaman mengakses resource Backup for GKE mirip dengan menggunakan enkripsi default Google. Untuk mengetahui informasi selengkapnya tentang opsi enkripsi, lihat Kunci enkripsi yang dikelola pelanggan (CMEK).
Ringkasan
Ada dua jenis artefak data pengguna yang dihasilkan dan disimpan oleh Pencadangan untuk GKE:
- Cadangan konfigurasi: sekumpulan deskripsi resource Kubernetes yang diekstrak dari server API cluster yang sedang melakukan pencadangan, yang merekam status cluster.
- Cadangan volume: sekumpulan cadangan volume yang sesuai dengan resource
PersistentVolumeClaim
yang ditemukan dalam cadangan konfigurasi.
Secara default, semua artefak cadangan yang dihasilkan oleh Pencadangan untuk GKE akan dienkripsi saat dalam penyimpanan menggunakan kunci yang disediakan oleh Google.
Namun, Anda dapat memilih untuk mengenkripsi artefak ini menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) yang dikelola dengan Cloud Key Management Service.
Mengaktifkan enkripsi CMEK
Terdapat dua langkah untuk mengaktifkan enkripsi CMEK:
Tentukan kunci untuk mengenkripsi cadangan yang dihasilkan untuk
BackupPlan
.Berikan akses ke kunci yang sesuai berdasarkan akun layanan yang sesuai.
Untuk skenario pencadangan tertentu, kemungkinan terdapat tiga kunci CMEK yang terlibat:
bplan_key
: Ini adalah kunci yang Anda referensikan saat membuat atau memperbaruiBackupPlan
. Jika memungkinkan, kunci ini akan digunakan saat mengenkripsi semua artefak cadangan. Kunci ini harus berada di region yang sama denganBackupPlan
itu sendiri (lihat Tentang lokasi resource).orig_disk_key
: Jika Anda telah mengenkripsi volume persistent disk menggunakan kunci CMEK, cadangan volume yang dihasilkan Pencadangan untuk GKE untuk volume tersebut akan dienkripsi dengan kunci ini, meskipun kunci lain didaftarkan denganBackupPlan
.new_disk_key
: Ini adalah kunci CMEK yang ingin Anda gunakan untuk mengenkripsi volume yang telah dipulihkan dari cadangan. Ini direferensikan olehStorageClass
di cluster target pemulihan.
Ada empat akun layanan berbeda yang mungkin memerlukan akses ke kunci CMEK:
agent_robot
: Akun layanan ini harus diberi akses kebplan_key
. Akun layanan ini akan memiliki format:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com
, denganPROJECT_NUMBER
sebagai nomor project Google Cloud Anda.non_cmek_service_agent
: Saat mencadangkan volume yang tidak dienkripsi CMEK, akun layanan ini harus diberi akses kebplan_key
. Akun layanan ini akan memiliki format:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com
, denganPROJECT_NUMBER
sebagai nomor project Google Cloud Anda.cmek_service_agent
: Saat mencadangkan volume yang dienkripsi CMEK, akun layanan ini harus diberi akses keorig_disk_key
. Akun layanan ini akan memiliki format:service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
, denganTENANT_PROJECT_NUMBER
adalah nomor project tenant yang ditetapkan untukBackupPlan
Anda.compute_service_agent
: Akun layanan ini digunakan saat membuat volume terenkripsi baru untuk cluster dan harus diberi akses kenew_disk_key
. Akun layanan ini akan memiliki format:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
, denganPROJECT_NUMBER
sebagai nomor project Google Cloud Anda.
Jika diskEncryptionKey.kmsKeyServiceAccount ditetapkan untuk disk, Anda harus melakukan langkah-langkah berikut sebelum membuat cadangan:
Nonaktifkan kebijakan organisasi
iam.disableCrossProjectServiceAccountUsage
untuk mengaktifkan peniruan akun layanan di seluruh project:gcloud resource-manager org-policies disable-enforce \ iam.disableCrossProjectServiceAccountUsage --project=PROJECT_ID
Berikan peran
roles/iam.serviceAccountTokenCreator
kecmek_service_agent
untuk membuat kredensial berumur pendek:gcloud iam service-accounts add-iam-policy-binding \ # Replace the email with the value from # `diskEncryptionKey.kmsKeyServiceAccount` your-kms-key-service-acount@PROJECT_ID.iam.gserviceaccount.com \ --member=service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Tabel berikut merangkum akun layanan mana yang harus diberi akses ke kunci tertentu dalam berbagai skenario:
Artefak | Akun layanan | Kunci |
---|---|---|
cluster cadangan konfigurasi | agent_robot | bplan_key |
cadangan volume yang dienkripsi CMEK | cmek_service_agent | orig_disk_key |
cadangan volume yang dienkripsi google | non_cmek_service_agent | bplan_key |
volume terenkripsi CMEK baru yang dibuat selama pemulihan | compute_service_agent | new_disk_key |
Anda dapat memilih untuk memberikan akses ke kunci pada level project, yang memberikan akses ke semua kunci dalam project tersebut, atau ke kunci individual.
Memberikan akses level project
Anda dapat memberikan akses ke kunci pada tingkat project, yang memberikan akses ke semua kunci dalam project tersebut.
Gunakan petunjuk berikut untuk memberikan akses di tingkat project.
Konsol
Di Konsol Google Cloud, buka halaman IAM.
Klik Grant access.
Di kolom New principals, masukkan alamat email akun layanan.
Dari daftar Pilih peran, pilih peran Pengenkripsi/Pendekripsi CryptoKey Cloud KMS.
Klik Simpan.
gcloud
Berikan akses di tingkat project.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Ganti kode berikut:
PROJECT_ID
: ID project yang aksesnya ingin Anda berikan.PROJECT_NUMBER
: nomor project yang aksesnya ingin Anda berikan.
Terraform
Berikan akses di tingkat project.
resource "google_project_iam_member" "example_iam_member" { project = "PROJECT_ID" role = "roles/cloudkms.cryptoKeyEncrypterDecrypter" member = "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" }
Ganti kode berikut:
PROJECT_ID
: ID project yang aksesnya ingin Anda berikan.PROJECT_NUMBER
: nomor project yang aksesnya ingin Anda berikan.
Memberikan akses di tingkat kunci
Gunakan petunjuk berikut untuk memberikan akses di tingkat kunci individual.
Konsol
Di konsol Google Cloud, buka halaman Key management.
Klik nama key ring.
Klik nama kunci.
Klik tab Izin.
Klik Grant access.
Di kolom New principals, masukkan alamat email akun layanan.
Dari daftar Pilih peran, pilih peran Pengenkripsi/Pendekripsi CryptoKey Cloud KMS.
Klik Simpan.
gcloud
Memberikan akses di tingkat kunci individual.
gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Ganti kode berikut:
KEY_NAME
: nama kunci.KEY_RING
: nama key ring yang berisi kunci.LOCATION
: lokasi Cloud KMS key ring.PROJECT_NUMBER
: nomor project yang aksesnya ingin Anda berikan.
Terraform
Memberikan akses di tingkat kunci individual.
resource "google_kms_crypto_key_iam_member" "crypto_key_iam_member" { crypto_key_id = "projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME" role = "roles/cloudkms.cryptoKeyEncrypterDecrypter" member = "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" }
Ganti kode berikut:
PROJECT_ID
: ID project yang aksesnya ingin Anda berikan.LOCATION
: lokasi Cloud KMS key ring.KEY_RING
: nama key ring yang berisi kunci.KEY_NAME
: nama kunci.PROJECT_NUMBER
: nomor project yang aksesnya ingin Anda berikan.
Pertimbangan dan batasan penggunaan
Jika ingin mencadangkan volume yang dienkripsi CMEK, Anda harus memberikan akses ke kunci disk tersebut, meskipun Anda tidak mengaktifkan enkripsi CMEK di
BackupPlan
.Kunci CMEK harus berada di region yang sama dengan
BackupPlan
untuk memastikan pemadaman layanan regional tidak akan menghapus akses ke kunci saat cadangan masih dapat diakses. Namun, batasan ini tidak dapat diterapkan untuk kunci yang dibagikan dengan volume terenkripsi. Ketika volume terenkripsi terlibat, ada kemungkinan pemulihan dapat gagal meskipun cadangan tersedia, karena kunci enkripsi disk mungkin tidak disimpan di region yang sama dengan cadangan.
Menggunakan dan mengelola kunci eksternal
Anda dapat menggunakan Cloud External Key Manager (Cloud EKM) untuk membuat dan mengelola kunci eksternal. Kunci eksternal adalah pointer ke kunci yang berada di luar Google Cloud. Kunci ini berada di partner pengelolaan kunci enkripsi eksternal yang didukung. Untuk informasi selengkapnya, lihat Cloud External Key Manager.
Setelah membuat kunci eksternal dengan Cloud EKM, Anda dapat menerapkannya ke rencana cadangan baru dengan memberikan ID kunci tersebut saat membuat rencana cadangan baru. Prosedur ini sama dengan menerapkan kunci Cloud KMS ke rencana pencadangan baru.
Anda dapat menggunakan Key Access Justifications sebagai bagian dari Cloud EKM. Key Access Justifications memungkinkan Anda melihat alasan setiap permintaan Cloud EKM. Selain itu, berdasarkan justifikasi yang diberikan, Anda dapat otomatis menyetujui atau menolak permintaan. Untuk mengetahui informasi selengkapnya, lihat Ringkasan.