Mengembangkan tindakan kustom pertama
Dalam integrasi kustom pertama, Anda menentukan parameternya, dan membuat tindakan Ping untuk menguji koneksi. Dokumen ini memandu Anda cara membuat dua tindakan baru untuk integrasi kustom:
- Mendapatkan detail domain: Mengambil informasi domain dan menampilkan hasilnya dalam format JSON.
- Memperkaya entity: Memperkaya entity dengan detail domain.
Membuat tindakan kustom
Untuk membuat tindakan kustom, ikuti langkah-langkah berikut:
- Buka Integrated Development Environment (IDE), lalu klik Tambahkan untuk menambahkan item IDE baru.
- Pilih tombol pilihan Tindakan.
- Beri nama tindakan
Get Domain Details, lalu pilih integrasi. - Klik Buat. IDE akan membuat template baru dengan komentar dan penjelasan kode bawaan.
Mengonfigurasi parameter tindakan
Berdasarkan dokumentasi WHOIS XML API, tindakan Get Domain Details memerlukan dua parameter: Check Availability dan Domain Name. Untuk mengonfigurasi parameter ini, ikuti langkah-langkah berikut:
- Di modul IDE, klik Tambahkan.
- Buat parameter pertama: Isi kolom untuk Check Availability , lalu klik Simpan. Parameter ini menunjukkan apakah domain tersedia atau tidak dan hasilnya akan digunakan dalam otomatisasi yang Anda buat nanti.
- Buat parameter kedua: Isi kolom untuk Domain Name , lalu klik Simpan. Gunakan kolom ini untuk memasukkan domain yang ingin Anda periksa.
Mengedit tindakan Get Domain Details
Untuk mengedit tindakan Get Domain Details, ikuti langkah-langkah berikut:
-
Salin kode yang disediakan untuk Get Domain Details, lalu tempelkan ke
IDE. Tinjau kode. Objek harus menggunakan metode
endclass untuk menampilkan pesan output dan nilai hasil, misalnya:
siemplify.end(msg, None) -
Ekstrak parameter integrasi & tindakan: Parameter integrasi,
seperti API Key, diekstrak menggunakan fungsi
siemplify.extract_configuration_param. Demikian pula, parameter tindakan yang Anda konfigurasi, termasukDomain NamedanCheck availability, diekstrak dengan fungsisiemplify.extract_action_param.api_key = siemplify.extract_configuration_param(provider_name=INTEGRATION_NAME, param_name="API Key") url = f"https://www.whoisxmlapi.com/whoisserver/WhoisService?apiKey={api_key}&outputFormat=json" domain = siemplify.extract_action_param(param_name="Domain Name", print_value=True) availability_check = siemplify.extract_action_param(param_name="Check availability", is_mandatory=False, print_value=True) - Buat permintaan dan proses hasilnya:
- Setelah mengekstrak parameter integrasi dan tindakan, Anda dapat membuat URL permintaan. URL dibuat berdasarkan nilai Boolean parameter
availability_check. - Setelah URL siap, kirim permintaan ke situs WHOIS.
- Uraikan respons situs dan tambahkan data yang relevan ke hasil tindakan.
- Tentukan pesan output yang akan ditampilkan kepada pengguna dan sertakan hasil JSON.
# Add domain to scan url = f"{url}&domainName={domain}" # Determine availability check if availability_check.lower() == 'true': availability_check_qs = 1 else: availability_check_qs = 0 url = f"{url}&da={availability_check_qs}" response = requests.get(url) response.raise_for_status() # Add a Json result that can be used in the next steps of the playbook. siemplify.result.add_result_json(response.json()) # Add the Json to the action result presented in the context details. siemplify.result.add_json("WhoisDetails", response.json()) msg = f"Fetched data for {domain}" siemplify.end(msg, None) if __name__ == "__main__": main()
Menambahkan hasil JSON ke tindakan
Sebagai bagian dari tindakan Get Domain Details, klik Get Domain Details untuk menambahkan contoh JSON. Gunakan contoh JSON di desainer playbook dalam prosedur "Membuat otomatisasi pertama" untuk mengekstrak kolom tertentu dalam JSON.
- Dapatkan JSON: Salin JSON dari contoh JSON situs WHOIS.
- Aktifkan ikon JSON: Di tab Details IDE, aktifkan tombol Include JSON Result untuk membuat ikon JSON terlihat di bagian atas IDE.
- Impor JSON: Klik file_json Manage JSON Sample > login Import JSON Example.
Menguji tindakan
Untuk menguji tindakan yang telah Anda buat, ikuti langkah-langkah berikut:
- Buka tab Testing.
- Di Scope , pilih Test Case dan Integration Instance.
- Klik slideshow Play di IDE.
- Lihat hasil tindakan di tab Testing. Anda juga dapat meninjau log dan cetakan dengan memeriksa tab Debug Output setelah pengujian selesai.
Membuat kasus pengujian
Jika Anda tidak memiliki kasus pengujian di lingkungan Anda, buka Cases > Ingest alert as test case untuk membuatnya. Tindakan ini akan membuat kasus pengujian yang muncul dengan label Test di antrean kasus Anda. Setelah membuat kasus pengujian, kembali ke IDE dan pilih kasus pengujian dari daftar.
Untuk membuat kasus pengujian, ikuti langkah-langkah berikut:
- Buka halaman Cases , lalu pilih kasus.
- Serap pemberitahuan sebagai kasus pengujian. Tindakan ini akan membuat kasus baru dengan label Test di antrean kasus Anda.
Setelah membuat kasus pengujian, kembali ke IDE dan pilih dari daftar.
Membuat tindakan pengayaan
Bagian prosedur ini berfokus pada pembuatan tindakan pengayaan untuk menambahkan data baru ke entity. Data yang diperkaya kemudian dapat dilihat di Entity Explorer. Untuk membuat tindakan pengayaan, ikuti langkah-langkah berikut:
-
Di IDE, buat tindakan baru dan beri nama
Enrich Entities. - Salin dan tempel kode berikut ke dalam tindakan:
from SiemplifyAction import SiemplifyAction from SiemplifyUtils import output_handler from SiemplifyDataModel import EntityTypes import requests # Example Consts: INTEGRATION_NAME = "My first Integration - Whois XML API" SCRIPT_NAME = "WHOIS XML API EnrichEntities" @output_handler def main(): siemplify = SiemplifyAction() siemplify.script_name = SCRIPT_NAME siemplify.LOGGER.info("================= Main - Param Init =================") api_key = siemplify.extract_configuration_param(provider_name=INTEGRATION_NAME, param_name="API Key") url = f"https://www.whoisxmlapi.com/whoisserver/WhoisService?apiKey={api_key}&outputFormat=json" siemplify.LOGGER.info("----------------- Main - Started -----------------") output_message = "output message :" # human readable message, showed in UI as the action result successful_entities = [] # In case this actions contains entity based logic, collect successful entity.identifiers for entity in siemplify.target_entities: siemplify.LOGGER.info(f"processing entity {entity.identifier}") if (entity.entity_type == EntityTypes.HOSTNAME and not entity.is_internal) or entity.entity_type == EntityTypes.URL: entity_to_scan = entity.identifier scan_url = f"{url}&domainName={entity_to_scan}" response = requests.get(scan_url) response.raise_for_status() register_details = response.json().get("WhoisRecord", {}).get("registrant", {}) if register_details: entity.additional_properties.update(register_details) successful_entities.append(entity) if successful_entities: output_message += "\n Successfully processed entities:\n {}".format("\n ".join([x.identifier for x in successful_entities])) siemplify.update_entities(successful_entities) # This is the actual enrichment (this function sends the data back to the server) else: output_message += "\n No entities where processed." result_value = len(successful_entities) siemplify.LOGGER.info("----------------- Main - Finished -----------------") siemplify.end(output_message, result_value) if __name__ == "__main__": main() - Ekstrak parameter. Skrip ini mengekstrak Kunci API dari konfigurasi integrasi. Kunci ini diperlukan untuk mengautentikasi permintaan ke WHOIS XML API.
- Identifikasi entity target. Skrip ini mengidentifikasi entity mana yang akan diproses. Skrip ini melakukan iterasi melalui semua entity dan hanya berfokus pada dua jenis:
- Nama host non-internal
- URL
-
Pindai domain dan tentukan langkah pengayaan tindakan dan pesan output. Tindakan ini berjalan pada cakupan Entity dan, oleh karena itu, Anda tidak perlu mengonfigurasi parameter tertentu; parameter ini sudah disematkan dalam kode:
scan_url = f"{url}&domainName={entity_to_scan}" response = requests.get(scan_url) response.raise_for_status() register_details = response.json().get("WhoisRecord", {}).get("registrant", {}) if register_details: entity.additional_properties.update(register_details) successful_entities.append(entity) if successful_entities: output_message += "\n Successfully processed entities:\n {}".format("\n ".join([x.identifier for x in successful_entities])) siemplify.update_entities(successful_entities) # This is the actual enrichment (this function sends the data back to the server) else: output_message += "\n No entities where processed." result_value = len(successful_entities) - Aktifkan tindakan, lalu klik Simpan. Anda kini telah membuat integrasi kustom dengan tiga tindakan kustom:
- Tindakan Ping untuk menguji koneksi ke produk WHOIS XML API.
- Tindakan Get Domain Details untuk mengekstrak data tentang domain dan menampilkannya sebagai hasil JSON.
- Tindakan Enrich Entities untuk menambahkan data tambahan ke entity target, yang dapat Anda lihat di modul Entity Explorer.
for entity in siemplify.target_entities:
siemplify.LOGGER.info(f"processing entity {entity.identifier}") if
(entity.entity_type == EntityTypes.HOSTNAME and not entity.is_internal) or
entity.entity_type == EntityTypes.URL: entity_to_scan = entity.identifier
Anda kini siap membuat otomatisasi pertama menggunakan tindakan yang Anda sesuaikan.
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.