- 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
- Saat pengguna mendeklarasikan resource melalui perintah
- Persiapan awal
- Membuat cluster dengan kubeadm
- Untuk praktik, tiga resource dibuat terlebih dahulu: Secret
credit-card, podapp1, podapp2
- 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-apiserveruntuk mengambil certificate authority, kunci publik, dan kunci privat server etcd - Menemukan kata sandi melalui perintah
etcdctl, yang memudahkan manipulasi etcd
- Memeriksa manifest
- 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 etcdll /proc/<pid>/fdlalu akan terlihat file link bertuliskandbcat /proc/<pid>fd/<db> | grep -A10 -B10 credit-cardmelalui perintah ini kata sandi yang dibuat sebelumnya dapat ditemukan
- Menemukan proses tempat etcd berjalan, lalu menelusuri seluruh data proses tersebut untuk mencari kata sandi
- Meretas pod
- Mengambilnya melalui
kubectl exec- Jika memiliki izin yang sesuai untuk melihat Kubernetes, kata sandi bisa diambil melalui perintah
kubectl
- Jika memiliki izin yang sesuai untuk melihat Kubernetes, kata sandi bisa diambil melalui perintah
- Mengambilnya dengan mengakses langsung kontainer
- Jika dapat bebas menggunakan perintah Docker pada worker node, kata sandi bisa diekstrak
- Pada worker node tempat pod
app1dijadwalkan, kontainer dapat ditemukan dan daftar variabel lingkungan yang terdaftar pada kontainer dapat diekstrakcrictl pods- mencari Pod ID milikapp1crictl ps- mencari kontainer yang sesuai dengan Pod IDcrictl 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
- Mengambilnya melalui
- 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.