Langkau ke kandungan utama

Authorization of Kubernetes

K8s-authz adalah pengantara kebenaran Kubernetes (k8s) berdasarkan Casbin yang menggunakan RBAC (Kawalan Akses Berdasarkan Peranan) dan ABAC (Kawalan Akses Berdasarkan Atribut) untuk penguatkuasaan dasar. Pengantara ini bersepadu dengan webhook kebenaran pengesahan K8s untuk mengesahkan dasar yang ditakrifkan oleh Casbin untuk setiap permintaan yang dibuat kepada sumber K8s. Pengawal kebenaran tersuai didaftarkan dengan Kubernetes menggunakan ValidatingAdmissionWebhook untuk melakukan pengesahan pada objek permintaan yang dihantar oleh pelayan API dan memberikan respons yang menunjukkan sama ada permintaan itu harus dibenarkan atau ditolak.

Untuk menentukan bila hendak menghantar permintaan masuk ke pengawal kebenaran, webhook pengesahan telah dilaksanakan. Webhook ini memproksi permintaan untuk sebarang jenis sumber K8s atau sub-sumber dan melakukan pengesahan dasar. Pengguna hanya dibenarkan melakukan operasi pada sumber ini jika mereka diberi kuasa oleh penguat Casbin. Penguat menyemak peranan pengguna seperti yang ditakrifkan dalam dasar. Kluster K8s adalah sasaran penempatan untuk middleware ini.

Keperluan

Sebelum meneruskan, pastikan anda mempunyai yang berikut:

  • Kluster Kubernetes yang sedang berjalan. Anda boleh menyediakan kluster tempatan menggunakan Docker atau menyediakan ekosistem Kubernetes yang lengkap pada pelayan anda. Untuk arahan terperinci, rujuk panduan ini untuk menyediakan kluster Kubernetes tempatan pada Windows atau panduan ini untuk menyediakan kluster pada Linux.
  • Kubectl CLI. Arahan untuk memasang Kubectl pada Windows boleh didapati di sini, dan untuk Linux di sini.
  • OpenSSL

Penggunaan

Ikuti langkah-langkah ini untuk menggunakan K8s-authz:

  1. Hasilkan sijil dan kunci untuk setiap pengguna menggunakan OpenSSL. Jalankan skrip di bawah:

    ./gen_cert.sh
  2. Bina imej Docker dari Dockerfile secara manual dengan menjalankan perintah berikut. Ingatlah untuk mengubah versi binaan dalam perintah dan dalam fail penempatan sesuai.

    docker build -t casbin/k8s_authz:0.1 .
  3. Tentukan polisi Casbin dalam fail model.conf dan policy.csv. Untuk maklumat lanjut mengenai bagaimana polisi ini berfungsi, rujuk dokumentasi.

  4. Sebelum menerapkan, anda boleh mengubah port dalam fail main.go, serta dalam konfigurasi webhook pengesahan fail, berdasarkan keperluan khusus anda.

  5. Terapkan pengawal pengesahan dan webhook pada kelompok Kubernetes dengan menjalankan perintah berikut:

    kubectl apply -f deployment.yaml
  6. Untuk pelayan pengeluaran, disarankan untuk membuat secret Kubernetes untuk mengamankan sijil:

    kubectl create secret generic casbin -n default \
    --from-file=key.pem=certs/casbin-key.pem \
    --from-file=cert.pem=certs/casbin-crt.pem
  7. Selepas melengkapkan langkah-langkah di atas, anda perlu mengemas kini direktori sijil dalam main.go dan manifes dengan direktori secret yang telah dibuat.

Sekarang, pelayan ini sepatutnya sudah berjalan, bersedia untuk mengesahkan permintaan yang dibuat kepada sumber K8s dan menguatkuasakan dasar mengikut situasi.