Memecahkan masalah error izin di Backup for GKE


Halaman ini menjelaskan error izin yang mungkin Anda alami saat menggunakan Pencadangan untuk GKE, hal-hal yang perlu dipertimbangkan saat melakukan tindakan, dan cara menyelesaikan error.

Error 100010101: Gagal mencadangkan PersistentVolumeClaim - Binding IAM untuk project tenant tidak ada

Error 100010101 terjadi saat upaya mencadangkan PersistentVolumeClaim gagal karena binding Identity and Access Management untuk project tenant Anda tidak ada, sehingga menghasilkan pesan error yang menyatakan Failed to backup PersistentVolumeClaim - Missing IAM binding for tenant project.

Backup for GKE membuat snapshot Persistent Disk cluster GKE Anda. Snapshot berada di project Google Cloud Anda, yang juga dikenal sebagai project konsumen, dan Google Cloud membuatnya dalam project tenant yang dikelolanya. Project tenant ada dalam organisasi google.com, terpisah dari organisasi Anda sendiri.

Agen layanan dalam project tenant memerlukan izin tertentu untuk menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) yang mengenkripsi Persistent Disk yang dirujuk oleh PersistentVolumeClaim kluster Anda. Izin ini mengenkripsi dan mendekripsi data snapshot. Jika agen layanan service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com tidak memiliki peran roles/cloudkms.cryptoKeyEncrypterDecrypter di CMEK disk Anda, operasi pencadangan akan gagal.

Untuk mengatasi error ini, gunakan petunjuk berikut:

  1. Pastikan Anda memiliki izin IAM yang memadai untuk mengubah kebijakan IAM pada kunci Cloud Key Management Service di konsol, seperti roles/cloudkms.admin atau roles/owner. Google Cloud

  2. Temukan agen layanan Compute Engine project tenant menggunakan nilai TENANT_PROJECT_NUMBER yang ada dalam pesan status reason dari operasi pencadangan yang gagal. Contohnya, service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com.

  3. Temukan informasi CMEK berikut yang digunakan untuk Persistent Disk terenkripsi Anda:

    • Nama kunci: nama kunci enkripsi Anda.

    • Key ring: nama key ring tempat kunci Anda berada.

    • Lokasi: lokasi Google Cloud tempat kunci Anda berada. Misalnya, global atau us-central1.

  4. Untuk memberikan peran roles/cloudkms.cryptoKeyEncrypterDecrypter pada CMEK Anda kepada agen layanan Compute Engine project tenant, jalankan perintah gcloud kms keys add-iam-policy-binding menggunakan Google Cloud CLI:

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Ganti kode berikut:

    • KEY_NAME: nama kunci enkripsi Anda.

    • KEY_RING: nama key ring.

    • LOCATION: Google Cloud lokasi kunci Anda. Misalnya, global atau us-central1.

    • TENANT_PROJECT_NUMBER: nomor project tenant yang Anda peroleh dari pesan status reason dari operasi pencadangan yang gagal.

    Jika perintah berhasil, output-nya akan terlihat seperti berikut:

    - members:
    - serviceAccount:service-987654321098@compute-system.iam.gserviceaccount.com
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  5. Uji ulang operasi pencadangan. Jika operasi masih gagal, hubungi Cloud Customer Care untuk mendapatkan bantuan lebih lanjut.

Error 100010104: Gagal mencadangkan PersistentVolumeClaim - Pelanggaran batasan kebijakan org saat membuat snapshot

Error 100010104 terjadi saat upaya mencadangkan PersistentVolumeClaim gagal karena pelanggaran batasan kebijakan organisasi selama pembuatan snapshot, sehingga menghasilkan pesan error yang menyatakan Failed to backup PersistentVolumeClaim - Org policy constraint violation while creating snapshot.

Backup for GKE membuat snapshot Persistent Disk cluster GKE Anda. Snapshot berada di project Google Cloud Anda, yang juga dikenal sebagai project konsumen, dan dibuat dalam project tenant yang dikelola oleh Google Cloud. Project tenant ada dalam organisasi google.com, terpisah dari organisasi Anda sendiri.

Kebijakan organisasi Anda menentukan tempat Anda dapat membuat resource penyimpanan. Error Constraint constraints/compute.storageResourceUseRestrictions violated berarti bahwa resource atau snapshot melanggar kebijakan karena dibuat di project tenant yang bukan bagian dari struktur organisasi yang diizinkan. Karena project tenant berada dalam organisasi Google, project tersebut berada di luar kebijakan yang Anda tetapkan, sehingga menyebabkan kegagalan pencadangan.

Untuk mengatasi error ini, gunakan petunjuk berikut:

  1. Temukan kebijakan organisasi yang menerapkan batasan constraints/compute.storageResourceUseRestrictions. Untuk mengetahui informasi selengkapnya tentang cara melihat kebijakan organisasi menggunakan konsol Google Cloud , lihat Melihat kebijakan organisasi.

  2. Ubah kebijakan constraints/compute.storageResourceUseRestrictions untuk menyertakan folder project tenant folders/77620796932 yang digunakan oleh Backup untuk GKE dalam daftar yang diizinkannya.

  3. Simpan perubahan kebijakan setelah Anda menambahkan folder ke daftar yang diizinkan.

  4. Uji ulang operasi pencadangan setelah kebijakan organisasi diperbarui dan diterapkan, yang biasanya memerlukan waktu beberapa menit. Pencadangan harus dilanjutkan tanpa melanggar batasan penggunaan resource penyimpanan. Jika operasi masih gagal, hubungi Cloud Customer Care untuk mendapatkan bantuan lebih lanjut.

Error 100010106: Gagal mencadangkan PVC - Binding IAM untuk agen layanan Backup for GKE tidak ada

Error 100010106 terjadi saat upaya mencadangkan PersistentVolumeClaim gagal karena binding Identity and Access Management untuk agen layanan Backup for GKE Anda tidak ada, sehingga muncul pesan error yang menyatakan Failed to backup PVC - Missing IAM binding for Backup for GKE service agent.

Pencadangan untuk GKE memerlukan izin untuk menggunakan kunci enkripsi yang dikelola pelanggan (CMEK) BackupPlan's Anda untuk mengenkripsi dan mendekripsi volume Persistent Disk. Jika agen layanan Backup for GKE tidak memiliki peran roles/cloudkms.cryptoKeyEncrypterDecrypter di CMEK BackupPlan Anda, operasi pencadangan akan gagal.

Untuk mengatasi error ini, gunakan petunjuk berikut:

  1. Identifikasi agen layanan Backup for GKE yang dikelola Google khusus untuk project Anda. Misalnya, service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com. Anda dapat menemukan nomor project menggunakan metode berikut:

    • Gunakan dasbor project Google Cloud di konsol Google Cloud .

    • Jalankan perintah gcloud projects describe menggunakan Google Cloud CLI:

      gcloud projects describe PROJECT_ID –format="value(projectNumber)"
      

      Ganti PROJECT_ID dengan nama unik project Anda.

  2. Identifikasi detail CMEK berikut:

    • Nama kunci: nama kunci enkripsi Anda.

    • Key ring: nama key ring tempat kunci Anda berada.

    • Lokasi: lokasi Google Cloud tempat CMEK BackupPlan Anda berada. Contohnya, global atau us-central1.

  3. Untuk memberikan peran roles/cloudkms.cryptoKeyEncrypterDecrypter ke agen layanan Pencadangan untuk GKE di CMEK Anda, gunakan Google Cloud CLI untuk menjalankan perintah gcloud kms keys add-iam-policy-binding:

    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 enkripsi Anda.

    • KEY_RING: nama key ring.

    • LOCATION: Google Cloud lokasi kunci Anda. Misalnya, global atau us-central1.

    • PROJECT_NUMBER: nomor project Google Cloud Anda.

  4. Pastikan Anda memiliki izin Identity and Access Management yang diperlukan pada kunci Cloud Key Management Service. Misalnya roles/cloudkms.admin atau roles/owner.

  5. Verifikasi bahwa Anda memiliki izin yang diberikan. Di output perintah gcloud kms keys add-iam-policy-binding sebelumnya, cari entri yang mirip dengan berikut ini:

    -members:
    -serviceAccount:service-123456789012@gcp-sa-gkebackup.iam.gserviceaccount.com
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  6. Uji ulang operasi pencadangan setelah Anda memberikan izin yang diperlukan. Jika operasi tidak berhasil diselesaikan, hubungi Cloud Customer Care untuk mendapatkan bantuan lebih lanjut.

Error 100010107: Gagal mencadangkan PVC - Binding IAM tidak ada - akun layanan agen (KCP)

Error 100010107 terjadi saat Anda mencoba melakukan operasi pencadangan Pencadangan untuk GKE dan agen layanan cluster Google Kubernetes Engine tidak memiliki akses ke kunci enkripsi yang dikelola pelanggan (CMEK), sehingga menghasilkan pesan yang menyatakan Failed to backup PVC - Missing IAM binding - agent service account (KCP).

Agen layanan cluster Google Kubernetes Engine, biasanya dalam format service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com, sangat penting agar cluster GKE Anda dapat berinteraksi dengan layanan Google Cloud. Saat paket pencadangan Anda menggunakan kunci enkripsi yang dikelola pelanggan (CMEK). Agen layanan ini memerlukan izin untuk mengenkripsi dan mendekripsi data cadangan Anda menggunakan CMEK Anda. Jika paket pencadangan tidak memiliki peran roles/cloudkms.cryptoKeyEncrypterDecrypter di CMEK Anda, operasi pencadangan yang dimulai dari cluster akan gagal dengan error permission denied.

Untuk mengatasi error ini, gunakan petunjuk pemecahan masalah berikut:

  1. Pastikan Anda memiliki izin yang benar untuk mengubah kebijakan IAM pada kunci Cloud Key Management Service. Misalnya, cloudkms.admin atau roles/owner.

  2. Identifikasi agen layanan cluster Google Kubernetes Engine. Agen layanan ini dibuat dan dikelola secara otomatis oleh Google Cloud untuk cluster GKE Anda. Contoh, service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com. Anda memerlukan nomor project untuk menyusun akun layanan lengkap. Anda dapat menemukan nomor project menggunakan salah satu metode berikut:

    • Gunakan dasbor project Google Cloud di konsol Google Cloud .

    • Jalankan perintah gcloud projects describe menggunakan Google Cloud CLI:

      gcloud projects describe PROJECT_ID –-format="value(projectNumber)"
      

      Ganti PROJECT_ID dengan project ID Anda.

  3. Cari informasi CMEK berikut:

    • Nama kunci: nama kunci enkripsi Anda.

    • Key ring: nama key ring tempat kunci Anda berada.

    • Lokasi: lokasi Google Cloud tempat kunci Anda berada. Misalnya, global atau us-central1.

  4. Berikan peran roles/cloudkms.cryptoKeyEncrypterDecrypter di tingkat CMEK. Agen layanan Google Kubernetes Engine memerlukan izin pada kunci enkripsi Anda. Untuk memberikan peran roles/cloudkms.cryptoKeyEncrypterDecrypter di CMEK Anda, gunakan Google Cloud CLI untuk menjalankan perintah gcloud kms key add-iam-policy-binding:

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Ganti kode berikut:

    • KEY_NAME: nama kunci enkripsi Anda.

    • KEY_RING: nama key ring.

    • LOCATION: Google Cloud lokasi kunci Anda. Misalnya, global atau us-central1.

    • PROJECT_NUMBER: nama project.

    Outputnya mirip dengan hal berikut ini:

     - members:
     - serviceAccount:service-123456789012@container-engine-robot.iam.gserviceaccount.com
     role: roles/cloudkms.cryptoKeyEncrypterDecrypter
     ```
    
  5. Coba lagi operasi Backup for GKE. Jika operasi terus gagal, hubungi Cloud Customer Care untuk mendapatkan bantuan lebih lanjut.

Langkah berikutnya