Menyiapkan penerapan kebijakan Otorisasi Biner

Otorisasi Biner untuk GKE di Bare Metal adalah fitur Google Cloud yang memperluas penerapan Otorisasi Biner yang dihosting dan dilakukan waktu deployment ke cluster lokal Anda. Kasus penggunaan utama untuk Otorisasi Biner di GKE pada Bare Metal adalah untuk mengamankan workload, tetapi Otorisasi Biner berfungsi dengan semua jenis cluster. Ikuti langkah-langkah dalam panduan ini untuk menerapkan aturan penerapan kebijakan Otorisasi Biner yang dikonfigurasi di project Google Cloud ke cluster Anda. Untuk informasi lebih lanjut tentang kebijakan dan aturan Otorisasi Biner, lihat Ringkasan Otorisasi Biner.

Prasyarat

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

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

  • 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 fleet host 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 tentang penggunaan konfigurasi proxy, lihat Menginstal di belakang proxy.

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

Mengaktifkan kebijakan Otorisasi Biner selama pembuatan cluster

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

bmctl

Untuk mengaktifkan Otorisasi Biner saat Anda membuat cluster dengan bmctl:

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

    ...
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: user-basic
      namespace: cluster-user-basic
    spec:
      type: user
      ...
      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 singleton project, di project Google Cloud untuk mengatur deployment image container di cluster Anda.

    • DISABLE: 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 bmctl create cluster.

Untuk mengetahui informasi selengkapnya tentang cara membuat cluster, baca Ringkasan pembuatan cluster.

gcloud CLI

  • Untuk membuat cluster pengguna dan mengaktifkan Otorisasi Biner, tambahkan flag --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE saat menjalankan perintah gcloud container bare-metal clusters create.

    Tindakan ini akan membuat cluster pengguna yang menerapkan aturan yang ditentukan dalam kebijakan Otorisasi Biner, yang juga dikenal sebagai kebijakan singleton project. Kebijakan ini dikaitkan dengan project Google Cloud Anda dan menentukan aturan untuk mengatur deployment image container. Untuk mengetahui informasi lebih lanjut tentang cara menggunakan gcloud CLI untuk membuat cluster pengguna, baca Membuat cluster pengguna menggunakan klien GKE On-Prem API. Untuk informasi selengkapnya tentang kebijakan dan aturan Otorisasi Biner, lihat Ringkasan Otorisasi Biner.

Mengaktifkan atau menonaktifkan kebijakan Otorisasi Biner untuk cluster yang ada

Jika memiliki cluster versi 1.16 atau yang lebih tinggi, Anda dapat mengaktifkan atau menonaktifkan Otorisasi Biner kapan saja, menggunakan bmctl atau gcloud CLI.

bmctl

  • Untuk mengaktifkan:

    1. Edit file konfigurasi cluster untuk menambahkan kolom binaryAuthorization:

      ...
      ---
      apiVersion: baremetal.cluster.gke.io/v1
      kind: Cluster
      metadata:
        name: user-basic
        namespace: cluster-user-basic
      spec:
        type: user
        ...
        binaryAuthorization:
          evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
      
    2. Update cluster:

      bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=CLUSTER_KUBECONFIG
      

      Ganti kode berikut:

      • CLUSTER_NAME: nama cluster yang akan diperbarui.
      • CLUSTER_KUBECONFIG: jalur ke file kubeconfig cluster.
    3. Tunggu hingga Deployment bernama binauthz-module-deployment dalam namespace binauthz-system siap.

      Setelah deployment siap, Otorisasi Biner 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 bmctl guna mengupdate cluster, lihat Mengupdate cluster. Untuk informasi selengkapnya tentang kebijakan dan aturan Otorisasi Biner, lihat Ringkasan Otorisasi Biner.

  • Untuk menonaktifkan:

    Fitur ini dapat dinonaktifkan dengan menyetel evaluationMode ke DISABLED atau menghapus bagian binaryAuthorization dari spesifikasi cluster. Setelah perubahan ini dibuat, tunggu beberapa menit sampai Deployment bernama binauthz-module-deployment dalam namespace binauthz-system dihapus.

gcloud CLI

  • Guna mengaktifkan Otorisasi Biner untuk cluster yang ada, tambahkan flag --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE saat Anda menjalankan perintah gcloud container bare-metal clusters update.

    Tindakan ini akan mengupdate cluster pengguna sehingga Otorisasi Biner 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 lebih lanjut tentang cara menggunakan gcloud CLI untuk mengupdate cluster pengguna, lihat gcloud container bare-metal clusters update di Referensi gcloud CLI. Untuk informasi selengkapnya tentang kebijakan dan aturan Otorisasi Biner, lihat Ringkasan Otorisasi Biner.

  • Untuk menonaktifkan Otorisasi Biner bagi cluster yang ada, jalankan perintah gcloud container bare-metal clusters update dengan flag --binauthz-evaluation-mode=DISABLED.

Pemecahan masalah

Jika tidak menyelesaikan semua prasyarat, Anda mungkin tidak melihat indikasi awal masalah. Jika Otorisasi Biner mulai gagal merespons permintaan pembuatan Pod, periksa ReplicaSet di status.conditions. Pesan seperti berikut menunjukkan adanya masalah dengan 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