Membuat tindakan kustom
Di 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:
- Dapatkan 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
dan 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 Periksa Ketersediaan, 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 Nama Domain, lalu klik Simpan. Gunakan kolom ini untuk memasukkan domain yang ingin diperiksa oleh tindakan.
Mengedit tindakan Get Domain Details
Untuk mengedit tindakan Get Domain Details, ikuti langkah-langkah berikut:
-
Salin kode yang diberikan untuk Get Domain Details, lalu tempel ke
IDE. Tinjau kode. Objek harus menggunakan metode
end
class untuk menampilkan pesan output dan nilai hasil, misalnya:
siemplify.end(msg, None)
-
Ekstrak parameter integrasi & tindakan: Parameter integrasi,
seperti Kunci API, diekstrak menggunakan fungsi
siemplify.extract_configuration_param
. Demikian pula, parameter tindakan yang Anda konfigurasi, termasukDomain Name
danCheck 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.
- Parse 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 perancang playbook dalam prosedur "Buat otomatisasi pertama Anda" 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 agar ikon JSON terlihat di bagian atas IDE.
- Impor JSON: Klik file_json Kelola Sampel JSON > login Impor Contoh JSON.
Menguji tindakan
Untuk menguji tindakan yang telah Anda buat, ikuti langkah-langkah berikut:
- Buka tab Pengujian.
- Di bagian Cakupan, pilih Kasus Pengujian dan Instance Integrasi Anda.
- Klik slideshow Play di IDE.
- Lihat hasil tindakan di tab Pengujian. 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, 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 Kasus, 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 kasus pengujian dari daftar.
Membuat tindakan pengayaan
Bagian prosedur ini berfokus pada pembuatan tindakan pengayaan untuk menambahkan data baru ke entitas. Data yang telah di-enrich 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 mengidentifikasi entitas mana yang akan diproses. Fungsi 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 Perkaya Entity 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
Sekarang Anda siap membuat otomatisasi pertama menggunakan tindakan yang Anda sesuaikan.
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.