7 poin oleh ironlung 2023-10-05 | Belum ada komentar. | Bagikan ke WhatsApp
  • Tujuan konten ini adalah untuk mengingatkan pentingnya keamanan Kubernetes
  • Lokasi penyimpanan Secret
    • Saat pengguna mendeklarasikan resource melalui perintah kubectl, Kubernetes membuat file manifest yang mendefinisikan resource tersebut lalu menyimpannya ke etcd
    • Saat pengguna mendeklarasikan resource Secret, Secret juga disimpan di etcd
    • Saat pengguna membuat pod yang membaca Secret sebagai volume atau variabel lingkungan, Secret disimpan pada pod tersebut
    • Jika etcd tempat Secret disimpan dan pod yang menggunakan Secret diretas, kata sandi yang disimpan di Secret bisa diketahui
  • Persiapan awal
    • Membuat cluster dengan kubeadm
    • Untuk praktik, tiga resource dibuat terlebih dahulu: Secret credit-card, pod app1, pod app2
  • Meretas etcd
    • etcd: penyimpanan data key-value yang menyimpan status cluster Kubernetes. Semua informasi yang dideklarasikan di Kubernetes disimpan di sini. Secret juga bisa diketahui dengan memeriksa etcd
    • 1.1 Mencari kata sandi dengan etcdctl
      • Memeriksa manifest kube-apiserver untuk mengambil certificate authority, kunci publik, dan kunci privat server etcd
      • Menemukan kata sandi melalui perintah etcdctl, yang memudahkan manipulasi etcd
    • 1.2 Mengambilnya dengan mengakses langsung DB etcd
      • Menemukan proses tempat etcd berjalan, lalu menelusuri seluruh data proses tersebut untuk mencari kata sandi
        • ps aux | grep etcd - mengambil PID etcd
        • ll /proc/<pid>/fd lalu akan terlihat file link bertuliskan db
        • cat /proc/<pid>fd/<db> | grep -A10 -B10 credit-card melalui perintah ini kata sandi yang dibuat sebelumnya dapat ditemukan
  • Meretas pod
    • Mengambilnya melalui kubectl exec
      • Jika memiliki izin yang sesuai untuk melihat Kubernetes, kata sandi bisa diambil melalui perintah kubectl
    • Mengambilnya dengan mengakses langsung kontainer
      • Jika dapat bebas menggunakan perintah Docker pada worker node, kata sandi bisa diekstrak
      • Pada worker node tempat pod app1 dijadwalkan, kontainer dapat ditemukan dan daftar variabel lingkungan yang terdaftar pada kontainer dapat diekstrak
        • crictl pods - mencari Pod ID milik app1
        • crictl ps - mencari kontainer yang sesuai dengan Pod ID
        • crictl inspect <container id> | grep -A16 env - melihat detail kontainer tersebut untuk mengekstrak variabel lingkungan
    • Mengambilnya dengan ServiceAccount yang memiliki izin akses ke Secret
      • Jika ServiceAccount milik Pod memiliki izin untuk mengakses Secret, kata sandi dapat ditemukan dari dalam pod melalui pemanggilan API
  • Cara mencegah peretasan yang dijelaskan di atas
    • Mengikuti 'prinsip hak akses minimum' dan tidak membuat service account dengan izin yang tidak perlu
    • Mencegah kredensial pengguna terekspos untuk menghadapi ancaman seperti rekayasa sosial
    • Mengenkripsi etcd melalui resource EncryptionConfiguration

Belum ada komentar.

Belum ada komentar.