Menyiapkan penerapan kebijakan Otorisasi Biner

Otorisasi Biner untuk GKE di VMware adalah fitur Google Cloud yang memperluas penerapan Otorisasi Biner yang dihosting dan memerlukan waktu deployment ke cluster pengguna lokal Anda. Kasus penggunaan utama untuk Otorisasi Biner pada GKE di VMware adalah untuk mengamankan workload di cluster pengguna Anda. Ikuti langkah-langkah dalam panduan ini untuk menerapkan aturan penerapan kebijakan Otorisasi Biner yang dikonfigurasi di project Google Cloud ke cluster pengguna Anda. Untuk informasi selengkapnya tentang kebijakan dan aturan Otorisasi Biner, lihat Ringkasan Otorisasi Biner.

Prasyarat

Sebelum dapat mengaktifkan penerapan kebijakan Otorisasi Biner untuk cluster pengguna, pastikan Anda telah memenuhi kriteria prasyarat berikut:

  • Daftarkan cluster dengan fleet: Untuk cluster yang dibuat dengan gkectl, cluster akan didaftarkan ke project Google Cloud yang Anda tentukan di kolom gkeConnect.projectID pada file konfigurasi cluster. Project ini disebut sebagai project host armada. Untuk mempelajari fleet lebih lanjut, termasuk kasus penggunaan, praktik terbaik, dan contoh, lihat dokumentasi Pengelolaan armada.

  • Aktifkan Binary Authorization API di project Google Cloud: aktifkan layanan Otorisasi Biner di project host fleet Anda.

  • Tambahkan peran Binary Authorization Policy Evaluator ke project host fleet Anda: Untuk memberikan peran Binary Authorization Policy Evaluator (roles/binaryauthorization.policyEvaluator) ke akun layanan Kubernetes di project host fleet Anda, jalankan perintah berikut:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \
        --role="roles/binaryauthorization.policyEvaluator"
    

    Jika cluster Anda berjalan di belakang server proxy, pastikan server proxy mengizinkan koneksi ke Binary Authorization API (binaryauthorization.googleapis.com). API ini menyediakan validasi deployment berbasis kebijakan dan kontrol untuk gambar yang di-deploy ke cluster Anda. Untuk mengetahui informasi selengkapnya, lihat Proxy dan proxy aturan firewall.

Setelah memenuhi prasyarat, Anda dapat mengaktifkan (atau menonaktifkan) kebijakan Otorisasi Biner saat membuat cluster baru atau memperbarui cluster yang ada.

Mengaktifkan kebijakan Otorisasi Biner selama pembuatan cluster

Anda dapat mengaktifkan penerapan kebijakan Otorisasi Biner dengan gkectl atau gcloud CLI.

gkectl

Untuk mengaktifkan Otorisasi Biner saat membuat cluster dengan gkectl:

  1. Sebelum membuat cluster, tambahkan binaryAuthorization.evaluationMode ke file konfigurasi cluster pengguna seperti yang ditunjukkan dalam contoh berikut:

    ...
    binaryAuthorization:
      evaluationMode: "project_singleton_policy_enforce"
    ...
    

    Nilai yang diizinkan untuk evaluationMode adalah:

    • project_singleton_policy_enforce: menerapkan aturan yang ditentukan dalam kebijakan Otorisasi Biner, yang juga dikenal sebagai kebijakan project singleton, di project Google Cloud untuk mengatur deployment image container pada cluster Anda.

    • disabled: menonaktifkan penggunaan Otorisasi Biner untuk cluster Anda. Ini adalah nilai defaultnya. Jika Anda menghapus binaryAuthorization, fitur tersebut akan dinonaktifkan.

  2. Buat perubahan lain yang diperlukan di file konfigurasi cluster, lalu jalankan perintah gkectl create cluster.

Untuk mengetahui informasi lebih lanjut tentang pembuatan cluster, lihat ringkasan penginstalan GKE di VMware.

Mengaktifkan atau menonaktifkan kebijakan Otorisasi Biner untuk cluster yang ada

Jika sudah memiliki cluster versi 1.28 atau yang lebih baru, Anda dapat mengaktifkan atau menonaktifkan Otorisasi Biner kapan saja, menggunakan gkectl atau gcloud CLI.

gkectl

  • Untuk mengaktifkan:

    1. Edit file konfigurasi cluster untuk menambahkan kolom binaryAuthorization:

      ...
      binaryAuthorization:
        evaluationMode: "project_singleton_policy_enforce"
      
    2. Update cluster:

      gkectl update cluster \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config USER_CLUSTER_CONFIG_FILE \
        --force

      Ganti kode berikut:

      • ADMIN_CLUSTER_KUBECONFIG: jalur file kubeconfig cluster admin
      • USER_CLUSTER_CONFIG_FILE: jalur file konfigurasi cluster pengguna Anda.
    3. Tunggu hingga Deployment bernama binauthz-module-deployment dalam namespace binauthz-system siap.

      Saat deployment siap, Otorisasi Biner akan menerapkan aturan yang ditentukan dalam kebijakan Otorisasi Biner, yang juga dikenal sebagai kebijakan project-singleton. Kebijakan ini dikaitkan dengan project Google Cloud Anda dan menentukan aturan untuk mengatur deployment image container. Untuk mengetahui informasi selengkapnya tentang cara menggunakan gkectl guna mengupdate cluster, lihat Mengupdate cluster. Untuk mengetahui informasi selengkapnya tentang kebijakan dan aturan Otorisasi Biner, baca Ringkasan Otorisasi Biner.

  • Untuk menonaktifkan:

    1. Edit file konfigurasi cluster dan hapus bagian binaryAuthorization atau dengan menetapkan evaluationMode ke disabled.

      ...
      binaryAuthorization:
        evaluationMode: "disabled"
      
    2. Update cluster:

      gkectl update cluster \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config USER_CLUSTER_CONFIG_FILE \
        --force

    Setelah melakukan perubahan ini, tunggu beberapa menit sampai Deployment bernama binauthz-module-deployment dalam namespace binauthz-system dihapus.

Pemecahan masalah

Jika tidak menyelesaikan semua prasyarat, Anda mungkin akan melihat pesan seperti berikut yang menunjukkan bahwa ada masalah pada konfigurasi Otorisasi Biner:

failed to validate Binary Authorization policy

(1) Ensure the Binary Authorization API is enabled for your Google Cloud project:
    gcloud services enable binaryauthorization.googleapis.com --project=PROJECT_ID
(2) Ensure an IAM policy binding is in place granting binaryauthorization.policyEvaluator role to the binauthz-system/binauthz-agent Kubernetes service account:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \
        --role=roles/binaryauthorization.policyEvaluator