(CKS) Kubernetes Auditing Mekanizması
Esenlikler,
Auditing
dediğimiz olay, kubernetes cluster içerisinde sırasıyla güvenlikle ilgili konuları kaydeden bir loglama mekanizmasıdır.
- ne oldu?
- Ne zaman oldu?
- kim başlattı?
- ne üzerine oldu?
- nerede gözlemlendi?
- nereden başlatıldı?
- nereye gidiyordu?
gibi soruların cevaplarını sürekli kaydederek, yönetici geriye dönük istediğini bulabilmesini sağlar.
🔥 [İngilizce] Kubernetes Auditing resmi dökümantasyonu
Kullanım #
- Aşağıdaki örnek policy.yaml dosyamızı indirelim. (Sınavda hazır olarak policy.yaml dosyası veriliyor.)
wget https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/audit/audit-policy.yaml
cp -rvf audit-policy.yaml /etc/kubernetes/audit-policy.yaml #Kubernetes ana dizinine taşıyoruz.
kube-apiserver.yaml
dosyasına parametre girerek auditing aktif etmemiz gerekiyor.
cd /etc/kubernetes/manifests/ #Kube-apiserver dizinine gidiyoruz
cp -rvf kube-apiserver.yaml ~/ #kube-apiserver.yaml dosyasımızın yedeğini başka bir yere alıyoruz.
- Editör ile açarak aşağıdaki parametreleri ekliyoruz.
- --audit-policy-file=/etc/kubernetes/audit-policy.yaml #Policy.yaml dosya yolu
- --audit-log-path=/var/log/k8s-audit/k8s-audit.log #Logların yazılacağı log dosya yolu
- --audit-log-maxage=30 #Logların kaç günlük tutulacağı
- --audit-log-maxbackup=10 #Logların tutulacak yedek sayısı
Kube-apiserver’ımızın logları yazacağı ve policy leri okuyacağı dosyaların bulunduğu dizinleri tanıması gerekiyor. Bu sebeple volumeMounts ve Volumes tanımlıyoruz.
volumeMounts:
- name: audit-config
mountPath: /etc/kubernetes/audit-policy.yaml
readOnly: true
- name: audit-log
mountPath: /var/log/k8s-audit
readOnly: false
volumes:
- name: audit-config
hostPath:
path: /etc/kubernetes/audit-policy.yaml
type: File
- name: audit-log
hostPath:
path: /var/log/k8s-audit
type: DirectoryOrCreate
- Herhangi bir hata yapmadan ekleme yaptıysanız aşağıdaki komut ile logları görebilirsiniz.
cat /var/log/k8s-audit/k8s-audit.log
❗ Eğer hata kube-apiserver.yaml eklerken hata yaparsanız api-server’a bağlanamayacağız için kubectl get pod
dediğinizde hata alırsınız. Hata alıyorsanız yedek aldığınız orjinal kube-apiserver.yaml getirebilir onu tekrar editleyebilirsiniz.
❗ /etc/kubernetes/manifest
altındaki statik podları editlerken mutlaka yedek almalısınız.