Menambahkan User pada Kubernetes

Apa itu RBAC

RBAC adalah keamanan yang membatasi akses ke sumber daya berdasarkan peran yang dimiliki pengguna, oleh karena itu namanya Role-based Access Control. Untuk memahami pentingnya dan perlunya memiliki kebijakan RBAC, mari pertimbangkan sistem yang tidak menggunakannya. Katakanlah kita memiliki solusi manajemen Kemanusiaan, tetapi satu-satunya ukurannya adalah terkait dengan akses keamanan yang digunakan adalah pengguna harus mengotentikasi diri mereka sendiri melalui nama pengguna dan kata sandi. Setelah memberikan kredensial mereka, pengguna mendapatkan akses penuh ke setiap modul dalam sistem (rekrutmen, pelatihan, kinerja staf, gaji, dll.). Sistem yang sedikit lebih aman akan membedakan antara akses pengguna biasa dan akses “admin”, dengan yang terakhir memberikan hak istimewa yang berpotensi merusak. Misalnya, pengguna biasa tidak dapat menghapus modul dari sistem, sedangkan administrator dapat. Namun tetap saja, pengguna tanpa akses admin dapat membaca dan memodifikasi data modul terlepas dari apakah pekerjaan mereka saat ini memerlukan melakukan hal ini.

Jika kita bekerja sebagai administrator Linux untuk waktu yang lama, kita menghargai pentingnya memiliki sistem keamanan yang mengimplementasikan matriks keamanan akses dan otoritas. Di masa lalu Linux dan UNIX, kita bisa menjadi pengguna “normal” dengan akses minimal ke sumber daya sistem, atau kita dapat memiliki akses “root”. Akses root secara virtual memberi kita kendali penuh atas mesin sehingga kita dapat secara tidak sengaja menjatuhkan seluruh sistem. Tak perlu dikatakan bahwa jika penyusup bisa mendapatkan akses ke akun root ini, seluruh sistem kita berisiko tinggi. Oleh karena itu, sistem RBAC diperkenalkan.

Dalam sistem yang menggunakan RBAC, sangat minim penyebutan “superuser” atau administrator yang memiliki akses ke semuanya. Sebagai gantinya, ada lebih banyak referensi ke tingkat akses, peran, dan hak istimewa. Bahkan administrator dapat dikategorikan berdasarkan persyaratan pekerjaan mereka. Jadi, administrator pencadangan harus memiliki akses penuh ke alat yang mereka gunakan untuk melakukan pencadangan penuh, inkremental, dan diferensial. Tetapi mereka seharusnya tidak dapat menghentikan server web atau mengubah tanggal dan waktu sistem, misalnya.

Operasi dan Subjek pada RBAC

Operasi pada sumber daya diekspresikan melalui kata kerja HTTP yang dikirim ke API. Berdasarkan URL REST yang dipanggil, Kubernetes akan menerjemahkan kata kerja HTTP dari permintaan HTTP yang masuk ke dalam rangkaian operasi yang lebih luas. Misalnya, sementara kata kerja GET yang diterapkan ke objek Kubernetes tertentu ditafsirkan sebagai operasi “dapatkan” untuk objek itu; kata kerja GET yang diterapkan ke kelas objek di Kubernetes API ditafsirkan sebagai operasi “daftar”. Perbedaan ini penting saat menulis aturan RBAC Kubernetes, karena kami akan menjelaskannya secara rinci di bagian tiga (RBAC 101: Otorisasi).

Subjek mewakili aktor dalam Kubernetes API dan RBAC, yaitu proses, pengguna, atau klien yang memanggil API dan melakukan operasi pada objek Kubernetes. Ada tiga kategori subjek: pengguna, grup, dan akun layanan. Secara teknis, hanya akun layanan yang ada sebagai objek dalam API cluster Kubernetes, pengguna dan grup adalah virtual — mereka tidak ada di database Kubernetes, tetapi Kubernetes mengidentifikasi mereka dengan ID string.

Saat mengirim permintaan API ke Kubernetes API, Kubernetes pertama-tama akan mengautentikasi permintaan dengan mengidentifikasi pengguna dan grup pengirim. Bergantung pada otentikasi dan metode yang digunakan, Kubernetes juga dapat mengekstrak informasi tambahan dan menampilkannya sebagai peta pasangan nilai kunci yang terkait dengan subjek.

Objek dalam RBAC API

Role-based Access Control  (RBAC) adalah metode untuk mengatur akses ke komputer dan sumber daya jaringan berdasarkan peran pengguna individu dalam suatu perusahaan. Kita dapat menggunakan kontrol akses berbasis Peran pada semua sumber daya Kubernetes yang memungkinkan CRUD (Buat, Baca, Perbarui, Hapus). Contoh sumber daya:

  • Namespace
  • Pod
  • Deployment
  • Volume Persisten
  • ConfigMaps

Pre Requirement

Sebelumnya harus sudah tersedia Kubernetes klaster dengan 1 buah master dan 2 buah worker dan plugin pendukungnya. Sistem untuk menjalankan Kubernetes ini adalah salah satu distro Linux yaitu Ubuntu 20.04.

Membuat User pada Ubuntu

Pembuatan user ini dilakukan pada Kubernetes klaster pada node master. Kali ini kita akan membuat user bernama asep dengan password Asep123 dan menambahkannya ke Kubernetes. Untuk perintahnya adalah sudo useradd -m -s /bin/bash asep dan untuk mengeset passwordnya bisa dengan perintah echo “asep:Asep123” | sudo chpasswd

Lakukan test login pada user yang baru kita buat dengan kredensial asep:Asep123

Login ke user asep telah berhasil yang artinya pembuatan user telah sukses.

Generate Certificate untuk user Asep

Untuk men generate nya kita menggunakan openssl, sebelum melanjutkan ke perintahnya silahkan masuk ke folder home dari user Asep yaitu /home/asep

Bisa dilanjutkan dengan perintah untuk men generate private key nya, dengan perintah sudo openssl genrsa -out asep.key 4096

Lanjutkan dengan meng generate CSRnya dengan perintah sudo openssl req -new -key asep.key -out asep.csr -subj "/CN=asep"

Tanda tangani sertifikat yang kita buat tadi dengan kunci milik Kubernetes dengan perintah, sudo openssl x509 -req -in asep.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out asep.crt -days 500

Buat folder .certs ini akan berfungsi sebagai autentikasi untuk Kubernetes, setelah folder di buat maka pindahkan file asep.crt dan asep.key ke dalam folder tersebut. Berikut perintahnya mkdir .certs && mv asep.crt asep.key .certs

Membuat User pada Kubernetes

Langkah selanjutnya kita akan membuat user pada Kubernetes, perintahnya akan seperti ini

kubectl config set-credentials asep --client-certificate=/home/asep/.certs/asep.crt --client-key=/home/asep/.certs/asep.key

Buat juga context untuk user asep, dengan perintah kubectl config set-context asep-context --cluster=kubernetes --user=asep

Buat folder .kube pada home directory dari user Asep, lalu buat file config di dalam folder .kube jadi perintahnya mkdir /home/asep/.kube

Salin file /etc/kubernetes/admin.conf ke folder /home/asep/.kube dan ganti namanya menjadi config, lalu sesuaikan seperti dibawah ini

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: {cert}
    server: {server}
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: asep
  name: asep-context
current-context: asep-context
kind: Config
preferences: {}
users:
- name: asep
  user:
    client-certificate: /home/asep/.certs/asep.cert
    client-key: /home/asep/.certs/asep.key

dengan nama config pada folder /home/asep/.kube. Oke lalu langkah selanjutnya karena folder /home/asep bukan milik dari user Asep maka kita harus mengubah ownernya dengan perintah sudo chown -R asep:asep /home/asep

Oke menambahkan user pada Kubernetes telah selesai, dokumentasi berikutnya kita kan menambahkan role pada user yang kita buat saat ini. Mungkin demikian yang dapat saya sampaikan mohon maaf bila banyak kesalahan, sekian dan terima kasih.

Write a comment