API server menghasilkan log audit untuk mencatat permintaan dan respons API Kubernetes. Container Service for Kubernetes (ACK) memungkinkan administrator klaster menganalisis log audit dari API server untuk memeriksa operasi yang dilakukan pada sumber daya oleh pengguna yang berbeda. Ini membantu administrator melacak sejarah operasi klaster dan menyelesaikan masalah pengecualian klaster, sehingga menyederhanakan O&M keamanan klaster.
Catatan Penggunaan
Topik ini berlaku untuk klaster terkelola ACK, klaster khusus ACK, dan klaster Serverless ACK.
Untuk informasi lebih lanjut tentang cara menggunakan fitur pemeriksaan klaster dalam klaster terdaftar, lihat Gunakan pemeriksaan klaster.
Penagihan
Di halaman gambaran tagihan, Anda dapat melihat informasi penagihan tentang data log audit. Untuk informasi lebih lanjut, lihat Lihat tagihan Anda. Untuk informasi lebih lanjut tentang metode penagihan log audit, lihat Bayar-per-fitur.
Langkah 1: Aktifkan pemeriksaan cluster
Secara default, Enable Log Service secara otomatis dipilih saat Anda membuat klaster untuk mengaktifkan fitur pemeriksaan klaster. Jika fitur pemeriksaan klaster dinonaktifkan, lakukan langkah-langkah berikut untuk mengaktifkannya.
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Pada halaman Clusters, temukan klaster yang Anda inginkan dan klik namanya. Di panel di sebelah kiri, pilih .
Jika Anda belum mengaktifkan fitur log klaster atau fitur pemeriksaan klaster, ikuti petunjuk di layar untuk secara manual memilih proyek Layanan Log Sederhana dan mengaktifkan fitur tersebut.
Pastikan bahwa kuota Layanan Log Sederhana berikut dalam akun Alibaba Cloud Anda cukup. Jika tidak, Anda gagal mengaktifkan fitur pemeriksaan klaster.
Kuota pada proyek Layanan Log Sederhana.
Kuota pada penyimpanan log dalam setiap proyek Layanan Log Sederhana.
Kuota pada dasbor dalam setiap proyek Layanan Log Sederhana.
Untuk informasi lebih lanjut tentang kuota Layanan Log Sederhana dan cara menyesuaikan kuota, lihat Sesuaikan Kuota sumber daya.
Langkah 2: Lihat laporan log audit
Jangan modifikasi laporan log audit. Jika Anda ingin menyesuaikan laporan log audit, masuk ke Konsol Layanan Log Sederhana dan buat laporan baru.
ACK menyediakan empat laporan log audit bawaan, yang memberikan gambaran umum pusat audit, gambaran umum operasi sumber daya, daftar rinci operasi sumber daya, dan daftar kerentanan Common Vulnerabilities and Exposures (CVE). Di halaman Cluster Auditing, Anda dapat memfilter peristiwa audit berdasarkan namespace atau pengguna RAM dan melihat konten berikut dalam laporan.
Anda juga dapat mengklik ikon
di bagian kanan atas grafik untuk melakukan operasi lainnya, seperti melihat grafik dalam mode layar penuh atau melihat pratinjau pernyataan kueri.
Gambaran Umum
Laporan ini menampilkan semua peristiwa dalam klaster ACK saat ini dan informasi rinci tentang peristiwa penting, seperti operasi pengguna RAM, akses Internet, eksekusi perintah, penghapusan sumber daya, akses Secret, dan kerentanan CVE Kubernetes.
Gambaran Operasi
Laporan ini memberikan statistik tentang operasi umum terkait sumber daya komputasi, sumber daya jaringan, dan sumber daya penyimpanan dalam klaster. Operasi termasuk pembuatan, pembaruan, penghapusan, dan akses sumber daya.
Sumber daya komputasi: Deployment, StatefulSet, CronJob, DaemonSet, Job, dan Pod.
Sumber daya jaringan: Service dan Ingress.
Sumber daya penyimpanan: ConfigMap, Secret, dan PersistentVolumeClaim.
Sumber daya kontrol akses: Role, ClusterRole, RoleBinding, dan ClusterRoleBinding.

Rincian Operasi
Laporan ini memberikan rincian operasi pada tipe sumber daya. Anda dapat memilih atau memasukkan tipe sumber daya untuk menanyakan rincian operasi secara real-time. Laporan ini menampilkan jumlah total operasi, distribusi namespace, tingkat keberhasilan operasi, tren operasi dari waktu ke waktu, dan rincian operasi lainnya.

Untuk menanyakan operasi terkait CustomResourceDefinition (CRD) yang terdaftar di Kubernetes atau sumber daya yang tidak tercantum dalam laporan, masukkan bentuk jamak dari nama sumber daya. Misalnya, untuk menanyakan operasi terkait CRD AliyunLogConfig, masukkan AliyunLogConfigs.
Kerentanan CVE
Laporan ini menampilkan kerentanan CVE Kubernetes dalam klaster saat ini. Anda dapat memilih atau memasukkan ID pengguna RAM untuk menanyakan informasi secara real-time. Kemudian, laporan menampilkan kerentanan CVE Kubernetes yang terkait dengan pengguna RAM yang Anda tentukan. Untuk informasi lebih lanjut tentang kerentanan CVE dan solusi, lihat [CVE Securities] Perbaikan kerentanan CVE.
(Opsional) Langkah 3: Lihat data log detail
Untuk menyesuaikan kueri atau menganalisis data log audit, masuk ke Konsol Layanan Log Sederhana dan lihat data log detail.
Secara default, periode retensi log audit server API dalam klaster terkelola ACK adalah 30 hari dan periode retensi log audit server API dalam klaster khusus ACK adalah 365 hari. Untuk informasi lebih lanjut tentang cara memodifikasi periode retensi default, lihat Kelola penyimpanan log.
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Pada halaman Clusters, temukan klaster yang Anda inginkan dan klik namanya. Di panel di sebelah kiri, klik Cluster Information.
Di tab Basic Information, klik ID proyek di sebelah Log Service Project. Dalam daftar Logstores, klik Logstore bernama audit-${clustered}.
Selama proses pembuatan klaster, Logstore bernama
audit-${clustereid}secara otomatis dibuat dalam proyek.PentingSecara default, indeks dikonfigurasikan untuk Logstore. Jangan modifikasi indeks agar laporan tetap dapat dihasilkan.
Masukkan pernyataan kueri dan tentukan rentang waktu yang akan diperiksa, seperti 15 menit. Kemudian, klik Search & Analysis untuk melihat hasil kueri.
Anda dapat menanyakan log audit dengan cara berikut:
Untuk menanyakan operasi yang dilakukan oleh pengguna RAM, masukkan ID pengguna RAM dan klik Search & Analysis.
Untuk menanyakan operasi yang dilakukan pada sumber daya, masukkan nama sumber daya komputasi, jaringan, penyimpanan, atau kontrol akses dan klik Search & Analysis.
Untuk menyaring operasi terkait komponen sistem, masukkan
NOT user.username: node NOT user.username: serviceaccount NOT user.username: apiserver NOT user.username: kube-scheduler NOT user.username: kube-controller-managerdan klik Search & Analysis.
Untuk informasi lebih lanjut tentang cara menanyakan data log, lihat Metode kueri.
(Opsional) Langkah 4: Konfigurasi peringatan
Anda dapat mengkonfigurasi Layanan Log Sederhana untuk menghasilkan peringatan secara real-time ketika operasi dilakukan pada sumber daya tertentu. Metode notifikasi peringatan yang didukung termasuk
chatbot DingTalk, webhook kustom, dan Pusat Pesan Alibaba Cloud. Untuk informasi lebih lanjut, lihat Konfigurasikan aturan peringatan di Layanan Log Sederhana.
Contoh 1: Hasilkan peringatan ketika perintah dieksekusi dalam kontainer
Sebuah perusahaan ingin melarang pengguna masuk ke kontainer atau menjalankan perintah dalam kontainer. Ketika pengguna menjalankan perintah dalam kontainer, peringatan segera dihasilkan. Pesan peringatan berisi informasi tentang kontainer, perintah, pengguna, ID peristiwa, waktu, dan alamat IP sumber.
Contoh pernyataan kueri:
verb : create and objectRef.subresource:exec and stage: ResponseStarted | SELECT auditID as "ID Event", date_format(from_unixtime(__time__), '%Y-%m-%d %T' ) as "Waktu", regexp_extract("requestURI", '([^\?]*)/exec\?.*', 1)as "Sumber Daya", regexp_extract("requestURI", '\?(.*)', 1)as "Perintah" ,"responseStatus.code" as "Kode status", CASE WHEN "user.username" != 'kubernetes-admin' then "user.username" WHEN "user.username" = 'kubernetes-admin' and regexp_like("annotations.authorization.k8s.io/reason", 'RoleBinding') then regexp_extract("annotations.authorization.k8s.io/reason", ' to User "(\w+)"', 1) ELSE 'kubernetes-admin' END as "Akun pengguna", CASE WHEN json_array_length(sourceIPs) = 1 then json_format(json_array_get(sourceIPs, 0)) ELSE sourceIPs END as "Alamat IP Sumber" order by "Waktu" desc limit 10000Ekspresi kondisi adalah
Event =~ ".*".
Contoh 2: Hasilkan peringatan ketika server API gagal mengakses Internet
Sebuah klaster telah mengaktifkan akses Internet. Untuk mencegah serangan, perusahaan perlu memantau jumlah kali dan tingkat kegagalan akses Internet. Ketika jumlah kali akses Internet mencapai ambang batas (10) dan tingkat kegagalan melebihi ambang batas (50%), peringatan segera dihasilkan. Pesan peringatan berisi informasi tentang wilayah alamat IP sumber, alamat IP sumber, dan apakah alamat IP tersebut berisiko.
Contoh pernyataan kueri:
* | select ip as "Source IP address", total as "Number of times of Internet access", round(rate * 100, 2) as "Failure rate in percentage", failCount as "Number of times of illegal access", CASE when security_check_ip(ip) = 1 then 'yes' else 'no' end as "Whether the IP address is risky", ip_to_country(ip) as "Country", ip_to_province(ip) as "Province", ip_to_city(ip) as "City", ip_to_provider(ip) as "ISP" from (select CASE WHEN json_array_length(sourceIPs) = 1 then json_format(json_array_get(sourceIPs, 0)) ELSE sourceIPs END as ip, count(1) as total, sum(CASE WHEN "responseStatus.code" < 400 then 0 ELSE 1 END) * 1.0 / count(1) as rate, count_if("responseStatus.code" = 403) as failCount from log group by ip limit 10000) where ip_to_domain(ip) != 'intranet' and ip not LIKE '%,%' ORDER by "Number of times of Internet access" desc limit 10000Ekspresi kondisi adalah
Source IP address =~ ".*".
Apa yang harus dilakukan selanjutnya
Ubah Proyek Layanan Log Sederhana
Jika Anda ingin memigrasi log audit ke proyek Layanan Log Sederhana lain, Anda dapat menggunakan fitur Change Log Service Project dalam pemeriksaan klaster.
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Pada halaman Clusters, temukan klaster yang Anda inginkan dan klik namanya. Di panel di sebelah kiri, pilih .
Di sudut kanan atas halaman pemeriksaan klaster, klik Change Log Service Project untuk memigrasi log audit ke proyek Layanan Log Sederhana lain.
Nonaktifkan pemeriksaan cluster
Anda dapat melakukan langkah-langkah berikut untuk menonaktifkan pemeriksaan klaster.
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Pada halaman Clusters, temukan klaster yang Anda inginkan dan klik namanya. Di panel di sebelah kiri, pilih .
Di sudut kanan atas halaman Cluster Auditing, klik Disable Cluster Auditing.
Gunakan layanan log pihak ketiga dalam klaster khusus ACK
Kami merekomendasikan Anda menggunakan Layanan Log Sederhana untuk menyimpan log audit. Untuk menggunakan layanan log pihak ketiga, Anda dapat memilih untuk tidak menggunakan Layanan Log Sederhana saat membuat klaster dan kemudian mengintegrasikan layanan log pihak ketiga untuk mengumpulkan dan mengambil log audit. Anda dapat memperoleh file sumber log audit node master dalam jalur /var/log/kubernetes/kubernetes.audit. File-file tersebut dalam format JSON.
Pengenalan konfigurasi pemeriksaan cluster untuk klaster khusus ACK
Ketika Anda mengonfigurasi komponen klaster untuk klaster khusus ACK, konsol secara default memilih Enable Log Service untuk mengaktifkan pemeriksaan klaster. Data peristiwa dikumpulkan berdasarkan kebijakan audit dan ditulis ke backend.
Fitur ini melibatkan modifikasi parameter startup kube-apiserver dan hanya berlaku untuk klaster khusus ACK. Bidang kontrol klaster klaster terkelola ACK dan klaster Serverless ACK dikelola oleh ACK dan tidak mendukung modifikasi manual.
Kebijakan audit
Kebijakan audit mendefinisikan konfigurasi audit dan aturan pengumpulan log. Log peristiwa dari tingkat audit yang berbeda dikumpulkan berdasarkan aturan pengumpulan log yang berbeda. Tabel berikut menjelaskan tingkat audit.
Tingkat audit | Aturan pengumpulan log |
Tidak ada | Peristiwa yang sesuai dengan aturan tidak dikumpulkan. |
Metadata | Kumpulkan metadata permintaan, seperti informasi pengguna dan timestamp. Badan permintaan dan badan respons tidak dikumpulkan. |
Permintaan | Kumpulkan metadata permintaan dan badan permintaan. Badan respons tidak dikumpulkan. Aturan ini tidak berlaku untuk permintaan non-sumber daya. |
PermintaanRespons | Kumpulkan metadata permintaan, badan permintaan, dan badan respons. Aturan ini tidak berlaku untuk permintaan non-sumber daya. |
Anda dapat mengatur flag --audit-policy-file untuk menyimpan file YAML berikut sebagai konfigurasi boot server API. Setelah Anda masuk ke node master, Anda dapat melihat file kebijakan audit di direktori /etc/kubernetes/audit-policy.yml. File YAML berikut adalah contoh kebijakan audit.
Log tidak segera dihasilkan setelah permintaan diterima. Log hanya dihasilkan setelah header respons dikirim.
Sistem tidak memeriksa permintaan tonton kube-proxy, permintaan GET yang dikirim dari kubelet dan system:nodes ke node, operasi titik akhir yang dilakukan oleh komponen Kubernetes di namespace kube-system, dan permintaan GET yang dikirim dari server API ke namespace.
Sistem mencatat badan permintaan dan respons berdasarkan pembacaan dan penulisan untuk API authentication, rbac, certificates, autoscaling, dan storage.
Backend audit
Peristiwa audit yang dikumpulkan disimpan dalam sistem file log backend sebagai file log dalam format JSON. Anda dapat mengonfigurasi flag berikut sebagai konfigurasi boot server API.
Setelah Anda masuk ke node master, Anda dapat melihat file konfigurasi server API di direktori /etc/kubernetes/manifests/kube-apiserver.yaml.
Flag | Deskripsi |
| Jumlah maksimum shard log audit yang dapat disimpan. Nilai default: 10. |
| Penyimpanan memori maksimum untuk satu log audit. Nilai default: 100 MB. |
| Jalur keluaran log audit. Nilai default: |
| Periode retensi log audit dalam hari. Nilai default: 7. |
| Jalur file kebijakan audit. Nilai default: |
Referensi
Untuk menggunakan
kubectl execuntuk memeriksa eksekusi perintah di dalam kontainer, lihat Aktifkan pemeriksaan kontainer.Untuk informasi lebih lanjut tentang praktik terbaik keamanan untuk insinyur O&M keamanan perusahaan, lihat Praktik keamanan terbaik.