Halaman ini menjelaskan cara mengaktifkan log audit sistem operasi panjang pada node Google Kubernetes Engine yang menjalankan Container-Optimized OS. Halaman ini juga menjelaskan cara mengonfigurasi agen logging fluent-bit untuk mengirim log ke Cloud Logging. Mengaktifkan logging audit Linux tidak didukung di cluster GKE Autopilot, karena Google mengelola node dan virtual machine (VM) yang mendasarinya.
Logging audit sistem operasi berbeda dengan Cloud Audit Logs dan Kubernetes Audit Logs.
Ringkasan
Log sistem operasi di node Anda memberikan informasi berharga tentang status cluster dan workload Anda, seperti pesan error, upaya login, dan eksekusi biner. Anda dapat menggunakan informasi ini untuk melakukan debug masalah atau menyelidiki insiden keamanan.
Untuk mengumpulkan log dari setiap node dalam cluster, gunakan
DaemonSet
yang menjalankan hanya satu Pod di setiap node cluster tempat DaemonSet memenuhi syarat
untuk dijadwalkan. Pod ini mengonfigurasi daemon logging auditd
di host dan
mengonfigurasi agen logging untuk mengirim log ke Logging atau
layanan penyerapan log lainnya.
Menurut definisi, audit terjadi setelah suatu peristiwa dan merupakan tindakan keamanan postmortem. log audit saja mungkin tidak cukup untuk melakukan forensik di cluster Anda. Pertimbangkan cara terbaik untuk menggunakan logging audit sebagai bagian dari strategi keamanan Anda secara keseluruhan.
Batasan
Mekanisme logging yang dijelaskan di halaman ini hanya berfungsi pada node yang menjalankan Container-Optimized OS di cluster GKE Standard.
Cara kerja DaemonSet logging
Bagian ini menjelaskan cara kerja contoh logging DaemonSet sehingga Anda dapat mengonfigurasinya sesuai kebutuhan. Bagian berikutnya menjelaskan cara men-deploy DaemonSet.
Contoh manifes menentukan DaemonSet, ConfigMap, dan Namespace untuk memuatnya.
DaemonSet men-deploy Pod ke setiap node dalam cluster. Pod berisi dua
container. Yang pertama adalah container
init
yang memulai layanan systemd penyiapan cloud-audit yang tersedia di
node Container-Optimized OS.
Container kedua,
cos-auditd-fluent-bit
, berisi instance
fluent-bit yang dikonfigurasi
untuk mengumpulkan log audit Linux dari jurnal node dan mengekspornya ke
Cloud Logging.
Contoh logging DaemonSet mencatat peristiwa berikut:
- Modifikasi konfigurasi sistem
auditd
- Pemeriksaan izin AppArmor
- Eksekusi
execve()
,socket()
,setsockopt()
, danmmap()
- koneksi jaringan
- login pengguna
- Sesi SSH dan semua TTY lainnya (termasuk sesi
kubectl exec -t
)
Mengonfigurasi DaemonSet logging
Anda mengonfigurasi DaemonSet logging menggunakan ConfigMap,
cos-auditd-fluent-bit-config
. Contoh yang diberikan mengirimkan log audit ke
Logging, tetapi Anda dapat mengonfigurasinya untuk mengirim log ke
tujuan lain.
Volume log yang dihasilkan oleh auditd
bisa sangat besar dan dapat menimbulkan
biaya tambahan karena menggunakan resource sistem dan mengirim lebih banyak log daripada
konfigurasi logging default. Anda dapat menyiapkan filter untuk mengelola volume
logging:
- Anda dapat menyiapkan filter di ConfigMap
cos-auditd-fluent-bit-config
sehingga data tertentu tidak dicatat ke dalam log. Lihat dokumentasi fluent-bit untuk Grep, Modify, Record Modifier, dan filter lainnya. - Anda juga dapat mengonfigurasi Logging untuk memfilter log masuk. Untuk detail selengkapnya, lihat Mengonfigurasi dan mengelola sink.
Men-deploy DaemonSet logging
Anda dapat menggunakan cluster yang ada atau membuat cluster baru.
Download contoh manifes:
curl https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-node-tools/master/os-audit/cos-auditd-logging.yaml > cos-auditd-logging.yaml
Edit contoh manifes agar sesuai dengan kebutuhan Anda. Lihat bagian sebelumnya untuk mengetahui detail cara kerja DaemonSet.
Lakukan inisialisasi variabel umum:
export CLUSTER_NAME=CLUSTER_NAME export CLUSTER_LOCATION=COMPUTE_REGION
Ganti kode berikut:
CLUSTER_NAME
: nama cluster Anda.COMPUTE_REGION
: region Compute Engine untuk cluster Anda. Untuk cluster zona, gunakan zona sebagai gantinya.
Deploy Namespace, DaemonSet, dan ConfigMap logging:
envsubst '$CLUSTER_NAME,$CLUSTER_LOCATION' < cos-auditd-logging.yaml \ | kubectl apply -f -
Verifikasi bahwa Pod logging telah dimulai. Jika Anda menentukan Namespace lain dalam manifes, ganti cos-auditd dengan nama namespace yang digunakan.
kubectl get pods --namespace=cos-auditd
Jika Pod sedang berjalan, output-nya akan terlihat seperti berikut:
NAME READY STATUS RESTARTS AGE cos-auditd-logging-g5sbq 1/1 Running 0 27s cos-auditd-logging-l5p8m 1/1 Running 0 27s cos-auditd-logging-tgwz6 1/1 Running 0 27s
Satu Pod di-deploy di setiap node dalam cluster, dalam hal ini cluster memiliki tiga node.
Sekarang Anda dapat mengakses log audit di Logging. Di Logs Explorer, filter hasil menggunakan kueri berikut:
LOG_ID("linux-auditd") resource.labels.cluster_name = "CLUSTER_NAME" resource.labels.location = "COMPUTE_REGION"
Sebagai alternatif, Anda dapat menggunakan gcloud CLI (gunakan
--limit
karena set hasilnya bisa sangat besar):gcloud logging read --limit=100 "LOG_ID("linux-auditd") AND resource.labels.cluster_name = "${CLUSTER_NAME}" AND resource.labels.location = "${CLUSTER_LOCATION}""
Mengekspor log
Untuk mempelajari cara merutekan log Anda ke tujuan yang didukung, lihat Mengonfigurasi dan mengelola sink.
Pembersihan
Untuk menonaktifkan logging auditd
, hapus logging DaemonSet dan
mulai ulang node. Konfigurasi audit dikunci setelah diaktifkan dan hanya dapat
diubah dengan membuat ulang node.
Hapus DaemonSet, ConfigMap, dan Namespace-nya dari cluster:
kubectl delete -f cos-auditd-logging.yaml
Mulai ulang node cluster Anda. Pertama, dapatkan grup instance tempatnya berada:
instance_group=$(gcloud compute instance-groups managed list \ --format="value(name)" \ --filter=${CLUSTER_NAME})
Kemudian, dapatkan instance itu sendiri:
instances=$(gcloud compute instance-groups managed list-instances ${instance_group} \ --format="csv(instance)[no-heading][terminator=',']")
Terakhir, buat ulang instance:
gcloud compute instance-groups managed recreate-instances ${instance_group} \ --instances=${instances}
Langkah berikutnya
- Tonton Cloud Forensics 101 untuk memulai forensik cloud.
- Pelajari Logging Audit Kubernetes dan kebijakan audit.
- Baca Ringkasan Keamanan Kubernetes Engine.
- Pelajari Cloud Audit Logs.