Kirim log dari Simple Log Service (SLS) ke platform Security Information and Event Management (SIEM) lokal, seperti Splunk atau QRadar. Hal ini memungkinkan Anda mengonsolidasikan log cloud dengan platform analitik keamanan lokal yang ada untuk pemantauan, audit, dan analisis ancaman terpadu.
Cara kerjanya
Aplikasi konsumen yang berada di dalam jaringan lokal Anda bertanggung jawab untuk mengambil data log. Aplikasi ini menggunakan kelompok konsumen SLS untuk menarik log secara real-time dan meneruskannya ke SIEM melalui protokol seperti Kolektor Peristiwa HTTP Splunk (HEC) atau Syslog melalui TCP/TLS.
Proses ini didasarkan pada arsitektur tarik, yang memberikan manfaat utama berikut:
Keamanan: Model tarik memastikan semua koneksi dimulai dari jaringan aman Anda. Tidak perlu membuka port masuk firewall, sehingga menjaga postur keamanan lokal Anda.
Throughput Tinggi dan Skalabilitas: Throughput tinggi dicapai melalui penskalaan horizontal. Anda dapat menjalankan beberapa instance konsumen secara bersamaan, dan kelompok konsumen secara otomatis menyeimbangkan beban kerja di seluruh semua instance aktif.
Reliabilitas: Kelompok konsumen menjamin pengiriman setidaknya sekali. Jika sebuah instance konsumen gagal, shard yang sedang diproses akan dialokasikan ulang ke instance sehat lainnya dalam kelompok. Konsumsi dilanjutkan dari checkpoint terakhir yang disimpan, mencegah kehilangan data.
Prasyarat
Izin: Buat Pengguna Resource Access Management (RAM), dan lampirkan kebijakan
AliyunLogFullAccesskepada pengguna tersebut. Untuk informasi lebih lanjut, lihat dokumen terkait.Persyaratan Jaringan: Mesin tempat program berjalan harus dapat mengakses titik akhir SLS dan berada di jaringan yang sama dengan SIEM.
Untuk mendapatkan titik akhir:
Masuk ke Konsol SLS. Di daftar proyek, klik proyek target.
Klik ikon
di sebelah kanan nama proyek untuk pergi ke halaman gambaran proyek.Di bagian Endpoint, lihat titik akhir publik. Titik akhir adalah
https://+ titik akhir publik.
Persyaratan Lingkungan: Lingkungan runtime Python 3 dan SDK Python SLS.
Instal SDK Python SLS:
pip install -U aliyun-log-python-sdk.Verifikasi instalasi:
pip show aliyun-log-python-sdk. Jika informasi berikut dikembalikan, instalasi berhasil.Nama: aliyun-log-python-sdk Versi: 0.9.12 Ringkasan: Aliyun log service Python client SDK Halaman Utama: https://github.com/aliyun/aliyun-log-python-sdk Penulis: Aliyun
Prosedur
Langkah 1: Persiapkan aplikasi
SLS menyediakan dua metode pengiriman:
Splunk HEC: HEC adalah mekanisme berbasis token yang memungkinkan Anda mengirim log dalam berbagai format data langsung ke Splunk melalui HTTP secara aman dan efisien.
Syslog: Saluran log umum yang kompatibel dengan sebagian besar SIEM dan mendukung format teks.
Splunk HEC
Untuk mengirimkan data log ke Splunk, konfigurasikan sync_data.py. Kode ini memiliki tiga bagian utama:
Metode main(): Titik masuk program utama.
Metode get_option(): Opsi konfigurasi konsumsi.
Opsi konfigurasi dasar: Termasuk pengaturan koneksi untuk SLS dan pengaturan kelompok konsumen.
Opsi lanjutan untuk kelompok konsumen: Parameter penyetelan performa. Jangan ubah kecuali diperlukan.
Parameter dan opsi terkait SIEM (Splunk).
Untuk melakukan pembersihan data selama proses pengiriman (seperti penyaringan baris, pemotongan kolom, atau normalisasi data), tambahkan aturan menggunakan kueri SPL. Contohnya:
# Pernyataan SPL query = "* | where instance_id in ('instance-1', 'instance-2')" # Buat konsumen berdasarkan aturan. Dibandingkan dengan konsumsi normal, parameter query ditambahkan di akhir daftar parameter. option = LogHubConfig(endpoint, accessKeyId, accessKey, project, logstore, consumer_group, consumer_name, cursor_position=CursorPosition.SPECIAL_TIMER_CURSOR, cursor_start_time=cursor_start_time, heartbeat_interval=heartbeat_interval, data_fetch_interval=data_fetch_interval, query=query)
SyncData(ConsumerProcessorBase): Berisi logika untuk mengambil data dari SLS dan mengirimkannya ke Splunk. Tinjau komentar dalam kode dengan cermat dan buat penyesuaian jika diperlukan.
Kode lengkapnya adalah sebagai berikut:
Syslog
Syslog mendefinisikan spesifikasi format log terutama berdasarkan RFC5424 dan RFC3164. Kami merekomendasikan menggunakan protokol RFC 5424. Meskipun TCP dan UDP dapat mentransmisikan Syslog, TCP menyediakan transmisi data yang lebih andal daripada UDP. Protokol RFC 5424 juga mendefinisikan lapisan transport aman menggunakan TLS. Jika SIEM Anda mendukung saluran TCP atau TLS untuk Syslog, kami merekomendasikan menggunakan saluran tersebut.
Untuk mengirimkan data log ke SIEM menggunakan Syslog, konfigurasikan sync_data.py. Kode ini memiliki tiga bagian utama:
Metode main(): Titik masuk program utama.
Metode get_monitor_option(): Opsi konfigurasi konsumsi.
Opsi konfigurasi dasar: Termasuk pengaturan koneksi untuk SLS dan pengaturan kelompok konsumen.
Opsi lanjutan untuk kelompok konsumen: Parameter penyetelan performa. Jangan ubah kecuali diperlukan.
Parameter dan opsi terkait server Syslog SIEM.
Fasilitas Syslog: Komponen program. Contoh menggunakan
syslogclient.FAC_USERsebagai default.Tingkat keparahan Syslog: Tingkat log. Atur tingkat log untuk konten tertentu sesuai kebutuhan. Di sini,
syslogclient.SEV_INFOdipilih.Jika SIEM mendukung saluran Syslog berbasis TCP atau TLS, atur proto ke TLS dan konfigurasikan Sertifikat SSL yang benar.
SyncData(ConsumerProcessorBase): Berisi logika tentang cara mengambil data dari SLS dan mengirimkannya ke server Syslog SIEM. Baca komentar dalam kode dengan cermat dan buat penyesuaian jika diperlukan.
Kode lengkapnya adalah sebagai berikut:
Langkah 2: Konfigurasikan variabel lingkungan
Setelah mengonfigurasi aplikasi, atur variabel lingkungan sistem seperti yang dijelaskan dalam tabel berikut.
Variabel lingkungan | Nilai | Contoh |
SLS_ENDPOINT |
Jika titik akhir diawali dengan |
|
SLS_PROJECT | Di Konsol SLS, salin nama proyek target. | my-sls-project-one |
SLS_LOGSTORE | Di Konsol SLS, salin nama logstore target. | my-sls-logstore-a1 |
SLS_AK_ID | Gunakan ID AccessKey dari pengguna RAM. Penting
| L***ky |
SLS_AK_KEY | Gunakan Rahasia AccessKey dari pengguna RAM. | x***Xl |
SLS_CG | Nama kelompok konsumen. Jika kelompok yang ditentukan tidak ada, aplikasi akan membuatnya secara otomatis. | syc_data |
Langkah 3: Mulai dan verifikasi
Mulai beberapa konsumen untuk konsumsi bersamaan. Jumlah maksimum konsumen sama dengan jumlah total shard.
# Mulai proses konsumen pertama nohup python3 sync_data.py & # Mulai proses konsumen kedua nohup python3 sync_data.py &Periksa status kelompok konsumen di Konsol SLS.
Di daftar proyek, klik proyek target. Pada tab , klik ikon
di sebelah logstore target, lalu klik ikon
di sebelah Data Consumption.Di daftar kelompok konsumen, klik yang Anda inginkan. Pada halaman Consumer Group Status, lihat klien dan waktu konsumsi data untuk setiap shard.
FAQ
Kesalahan ConsumerGroupQuotaExceed terjadi
Kesalahan ini menunjukkan bahwa batas telah terlampaui. Sebuah logstore dapat memiliki maksimal 30 kelompok konsumen. Hapus kelompok konsumen yang tidak digunakan di Konsol SLS.