Container Service for Kubernetes (ACK) memungkinkan pengumpulan dan analisis log audit komponen Kubernetes, termasuk log audit server API, Ingress, komponen kontrol plane, serta peristiwa penting Kubernetes. Hal ini membantu Anda mengidentifikasi penyebab masalah keamanan atau gangguan klaster dalam data log.
Menggunakan audit klaster
Log audit server API klaster Kubernetes membantu administrator melacak operasi yang dilakukan oleh berbagai pengguna. Audit memainkan peran penting dalam keamanan klaster serta operasi dan pemeliharaannya. Untuk informasi lebih lanjut tentang cara mengumpulkan dan menganalisis log audit menggunakan Simple Log Service, menetapkan aturan peringatan kustom, dan menonaktifkan audit klaster, lihat Bekerja dengan Audit Klaster.
ACK menyediakan kebijakan audit berikut:
Untuk informasi lebih lanjut tentang deskripsi field log audit, lihat audit-k8s-io-v1-Event.
apiVersion: audit.k8s.io/v1beta1 # Ini diperlukan.
kind: Policy
#Jangan buat peristiwa audit untuk permintaan pada tahap RequestReceived.
omitStages:
- "RequestReceived"
rules:
#Abaikan permintaan berikut karena permintaan tersebut diidentifikasi secara manual sebagai volume tinggi dan risiko rendah.
- level: None
users: ["system:kube-proxy"]
verbs: ["watch"]
resources:
- group: "" # core
resources: ["endpoints", "services"]
- level: None
users: ["system:unsecured"]
namespaces: ["kube-system"]
verbs: ["get"]
resources:
- group: "" # core
resources: ["configmaps"]
- level: None
users: ["kubelet"] # identitas kubelet lama
verbs: ["get"]
resources:
- group: "" # core
resources: ["nodes"]
- level: None
userGroups: ["system:nodes"]
verbs: ["get"]
resources:
- group: "" # core
resources: ["nodes"]
- level: None
users:
- system:kube-controller-manager
- system:kube-scheduler
- system:serviceaccount:kube-system:endpoint-controller
verbs: ["get", "update"]
namespaces: ["kube-system"]
resources:
- group: "" # core
resources: ["endpoints"]
- level: None
users: ["system:apiserver"]
verbs: ["get"]
resources:
- group: "" # core
resources: ["namespaces"]
#Jangan audit permintaan yang dikirim ke URL baca-saja berikut.
- level: None
nonResourceURLs:
- /healthz*
- /version
- /swagger*
#Jangan audit permintaan yang dihasilkan dari peristiwa audit.
- level: None
resources:
- group: "" # core
resources: ["events"]
#Secrets, ConfigMaps, dan token reviews dapat berisi data sensitif dan biner.
#Oleh karena itu, Anda hanya dapat mengaudit metadata dari sumber daya ini.
- level: Metadata
resources:
- group: "" # core
resources: ["secrets", "configmaps"]
- group: authentication.k8s.io
resources: ["tokenreviews"]
- level: Request
verbs: ["get", "list", "watch"]
resources:
- group: "" # core
- group: "admissionregistration.k8s.io"
- group: "apps"
- group: "authentication.k8s.io"
- group: "authorization.k8s.io"
- group: "autoscaling"
- group: "batch"
- group: "certificates.k8s.io"
- group: "extensions"
- group: "networking.k8s.io"
- group: "policy"
- group: "rbac.authorization.k8s.io"
- group: "settings.k8s.io"
- group: "storage.k8s.io"
#Tingkat audit default untuk permintaan dan respons API yang diketahui.
- level: RequestResponse
resources:
- group: "" # core
- group: "admissionregistration.k8s.io"
- group: "apps"
- group: "authentication.k8s.io"
- group: "authorization.k8s.io"
- group: "autoscaling"
- group: "batch"
- group: "certificates.k8s.io"
- group: "extensions"
- group: "networking.k8s.io"
- group: "policy"
- group: "rbac.authorization.k8s.io"
- group: "settings.k8s.io"
- group: "storage.k8s.io"
- group: "autoscaling.alibabacloud.com"
#Tingkat audit default untuk permintaan lainnya.
- level: MetadataAktifkan audit aktivitas internal untuk container exec
Penyerang sering menjalankan perintah exec untuk masuk ke container dan memulai serangan lateral di klaster Kubernetes. Setelah berhasil masuk, log audit server API default tidak dapat mencatat perintah yang diinisiasi oleh penyerang. Dalam skenario ini, menggunakan audit aktivitas internal container membantu insinyur O&M mendapatkan log audit perintah yang diinisiasi oleh penyerang setelah mereka masuk ke container. Ini membantu mengidentifikasi penyebab peristiwa keamanan dan mencegah kerugian bisnis.
Gunakan metadata log audit
Log audit Kubernetes mencakup dua anotasi: authorization.k8s.io/decision dan authorization.k8s.io/reason. Anotasi authorization.k8s.io/decision menunjukkan apakah permintaan diotorisasi, sedangkan anotasi digunakan untuk menentukan alasan operasi API tertentu dapat dipanggil.
Gunakan node-problem-detector dengan pusat acara Kubernetes dari Simple Log Service untuk mengidentifikasi peristiwa klaster abnormal
Node-problem-detector adalah alat yang dikelola oleh ACK untuk mendiagnosis node Kubernetes. Alat ini mendeteksi pengecualian node, menghasilkan peristiwa node, dan bekerja sama dengan kube-eventer untuk menghasilkan peringatan atas peristiwa tersebut, memungkinkan manajemen peringatan loop tertutup. Node-problem-detector menghasilkan peristiwa node ketika mendeteksi pengecualian seperti mesin Docker macet, kernel Linux macet, pengecualian lalu lintas arah keluar, dan pengecualian deskriptor file. Selain masalah dan pengecualian node yang dideteksi oleh node-problem-detector, klaster Kubernetes juga menghasilkan peristiwa ketika status klaster berubah, misalnya saat pod dievakuasi atau klaster gagal menarik gambar. Pusat Acara Kubernetes dari Simple Log Service mengumpulkan semua peristiwa yang dihasilkan di klaster Kubernetes dan menyediakan kemampuan penyimpanan, kueri, analitik, visualisasi, serta peringatan. Pusat acara ini membantu insinyur O&M mengidentifikasi masalah yang dapat mempengaruhi stabilitas klaster dan peristiwa abnormal, seperti pengguna reguler menjalankan perintah exec untuk masuk ke container tertentu. Untuk informasi lebih lanjut, lihat Pemantauan Peristiwa.
Aktifkan dasbor Ingress
Kontroler Ingress ACK memungkinkan pengaliran semua data log permintaan HTTP ke output standar. ACK juga terintegrasi dengan Simple Log Service, memungkinkan Anda membuat dasbor untuk memantau dan menganalisis data log. Dasbor Ingress menampilkan informasi berikut tentang status Ingress di klaster: jumlah tampilan halaman (PV), jumlah pengunjung unik (UV), lalu lintas arah masuk dan arah keluar, latensi rata-rata, serta URL teratas. Ini membantu Anda mendapatkan wawasan tentang lalu lintas layanan, serta mendeteksi lalu lintas jahat dan serangan DDoS sejak dini. Untuk informasi lebih lanjut, lihat Dasbor Ingress.
Aktifkan logging untuk CoreDNS
CoreDNS diterapkan di klaster ACK dan berfungsi sebagai server DNS. Anda dapat memeriksa log CoreDNS untuk mengidentifikasi penyebab resolusi DNS lambat atau menganalisis kueri DNS untuk nama domain berisiko tinggi. Laporan analitis log CoreDNS dapat dilihat di dasbor Simple Log Service, membantu Anda mengidentifikasi kueri DNS untuk nama domain berisiko tinggi. Untuk informasi lebih lanjut, lihat Kumpulkan dan Analisis Log CoreDNS.