All Products
Search
Document Center

Security Center:Parameter komponen dan alur eksekusi node

Last Updated:Mar 12, 2026

Aksi komponen Playbook mendukung parameter berupa konstanta, variabel, ekspresi, dan fungsi. Pemrosesan parameter mencakup langkah-langkah seperti ekstraksi, deduplikasi, dan eksekusi loop.

Kategorisasi parameter

  • Berdasarkan fungsinya, parameter dikategorikan menjadi parameter input playbook, parameter output playbook, parameter input aksi komponen, dan parameter output aksi komponen.

  • Berdasarkan tipenya, parameter dikategorikan sebagai parameter sistem dan parameter komponen.

    Catatan

    Selama eksekusi aksi komponen, Anda dapat mengambil parameter default sistem dari node mana pun. Parameter komponen tidak termasuk.

Parameter input dan output komponen (node)

Parameter input suatu komponen dapat berupa nilai kustom atau output dari node hulu. Jika menggunakan output dari node hulu, node tersebut harus mendahului node saat ini pada jalur orkestrasi.

Penting

Dalam skenario multi-jalur, pastikan nama node bersifat unik secara global.

Ambil Node B pada gambar berikut sebagai contoh. Node ini dapat mengambil output dari Node A hulu dan parameter input playbook. Namun, Node ini tidak dapat mengambil output dari Node D karena berada di cabang yang berbeda, maupun dari Node C karena Node C bukan pendahulu Node B.

image

Deskripsi parameter sistem

Parameter sistem dalam playbook

Parameter default sistem dapat diakses dari node mana pun. Gunakan ekspresi pada tabel berikut untuk mengambil parameter tersebut. Istilah "event" dapat dianggap sebagai nama node awal. Format ${event.parameter_name} digunakan untuk mengambil parameter sistem playbook.

Parameter

Tipe data

Ekspresi

Deskripsi

_tenant_id

String

${event._tenant_id}

ID akun Alibaba Cloud yang memanggil playbook.

_domain_id

String

${event._domain_id}

Status role pengguna yang login.

  • 0: Menunjukkan login akun tunggal.

  • 1: Menunjukkan login akun global.

_trigger_user

String

${event._trigger_user}

ID akun Alibaba Cloud yang memicu playbook. Jika Pengguna RAM digunakan, ID Pengguna RAM tersebut akan dikembalikan.

_region_id

String

${event._region_id}

ID Wilayah.

_req_uuid

String

${event._req_uuid}

Pengidentifikasi unik untuk tugas eksekusi playbook saat ini.

parentTaskUuid

String

${event.parentTaskUuid}

_req_uuid dari playbook induk. Parameter ini ada ketika playbook anak dipanggil.

parentTaskName

String

${event.parentTaskName}

UUID dari playbook induk. Parameter ini ada ketika playbook anak dipanggil.

Parameter sistem dalam output aksi komponen

Output dari komponen apa pun mencakup parameter berikut. Parameter kustom dikemas dalam datalist. Gunakan ${node_name.datalist.*} untuk mengambil semua nilai parameter output.

Parameter

Tipe data

Deskripsi

datalist

JSONArray

Parameter output setelah aksi dieksekusi.

Penting

Parameter output kustom dari komponen juga disimpan dalam datalist.

total_data_successful

Int

Volume data yang berhasil diproses selama eksekusi aksi.

total_data

Int

Volume data yang diproses selama eksekusi aksi.

total_data_with_dup

Int

Volume data yang berhasil diproses dan dideduplikasi selama eksekusi aksi.

total_exe_successful

Int

Jumlah kali aksi saat ini berhasil dijalankan.

total_exe

Int

Jumlah kali aksi saat ini dijalankan.

status

Boolean

Status eksekusi aksi. Nilai valid: true dan false.

messageForUser

String

Pesan error untuk pengguna jika eksekusi gagal.

message

String

Pesan error sistem jika eksekusi gagal.

failed_exe_detail

String

Informasi error detail jika eksekusi gagal.

Format parameter

Parameter mendukung tiga format dasar: konstanta, variabel, dan ekspresi. Anda juga dapat menggunakan kombinasi format ini serta struktur bersarang yang lebih kompleks.

Format dasar

Deskripsi

Contoh

Konstanta

String tetap.

Ali.

Variabel

Mengambil nilai dari parameter input playbook dan parameter output node sebelumnya.

${event.aliuid}, yang mengambil aliuid dari parameter input playbook.

Ekspresi

Menggunakan ekspresi dan fungsi tertanam untuk menghasilkan nilai. Formatnya adalah <%=expression|function%>. Untuk daftar fungsi yang didukung, lihat Daftar fungsi bawaan dalam ekspresi.

Ekspresi: Hanya sintaks Java yang didukung, seperti <%=2*60*60%>.

Fungsi: <%=currentTime()%>.

Format kombinasi

Konstanta_Variabel_Ekspresi

Contoh kombinasi:

Ali_${event.aliuid}_<%=currentTime()%>_<%=2*60*60%>. Saat aksi dieksekusi, variabel dan ekspresi diurai dan diganti dengan nilai yang sesuai: Ali_aliuid_current_time_7200.

Contoh bersarang: (Ekspresi dapat menyematkan variabel) <%=formatTimeStamp(secondstamp_add(${DateTime:event.datalist.*.gmt_create},-600L),"yyyy-MM-dd'T'HH:mm:ss.SSSXXX")%>. Ini mengambil nilai gmt_create dari ${DateTime:event.datalist.*.gmt_create}, mengurangi 600, lalu memformat hasilnya sebagai tanggal.

Daftar fungsi bawaan dalam ekspresi

Nama fungsi

Deskripsi

Contoh

Contoh keluaran

currentTime

Mengembalikan timestamp saat ini.

<%=currentTime()%>

2025-06-05 10:30:00

secondstamp_add

Menambahkan jumlah detik tertentu (secNum) ke timestamp saat ini.

<%=secondstamp_add(currentTime(),300L)%>

2025-06-05 10:30:09

formatTimeStamp

Memformat timestamp input berdasarkan format yang ditentukan.

<%=formatTimeStamp(currentTime(),"yyyyMMdd")%>

20250605

timestampToseconds

Menambahkan jumlah detik tertentu (secNum) ke timestamp saat ini lalu mengonversi hasilnya ke detik untuk output.

<%=timestampToseconds(currentTime(),300L)%>

1749099848

splitStr

Memisahkan string input (inputStr) menjadi daftar berdasarkan pembatas yang ditentukan (splitStr).

<%=splitStr("test,value",",")%>

[test,value]

parseTimeMs

Mengonversi string berformat waktu menjadi milidetik.

<%=parseTimeMs("2025-06-05 10:30:32","yyyy-MM-ddHH:mm:ss")%>

1749090632000

currentTimeToMs

Mengonversi timestamp saat ini menjadi milidetik.

<%=currentTimeToMs()%>

1749091369688

currentHourToMs

Mengonversi timestamp jam saat ini menjadi milidetik. Perhitungan dimulai dari menit 0 dan detik 0 jam saat ini.

<%=currentHourToMs()%>

1749088800000

currentDayToMs

Mengonversi timestamp hari saat ini menjadi milidetik. Perhitungan dimulai dari jam 0, menit 0, dan detik 0 hari saat ini.

<%=currentDayToMs()%>

1749052800000

parseTimeMsWDefault

Mengurai timestamp menjadi milidetik dan mendukung nilai default. Jika parameter pertama kosong, parameter kedua digunakan sebagai nilai default.

<%=parseTimeMsWDefault("2025-06-05 10:30:32",1749091369688L)%>

1749090632000

splitStrToJsonArray

Memisahkan string input (inputStr) menjadi JSONArray berdasarkan pembatas yang ditentukan (splitStr).

<%=splitStrToJsonArray("test,value",",")%>

["test","value"]

concatListStr

Menggabungkan string menggunakan pembatas tertentu. Fungsi ini harus digunakan bersama fungsi splitStr.

<%=concatListStr("|",splitStr("test,value",","))%>

test|value

substring

Mengekstrak substring.

Parameter 1: String yang akan diekstrak.

Parameter 2: Indeks awal.

Parameter 3: Indeks akhir.

<%=substring("012345",0,3)%>

012

remainStrStartEnd

Menyimpan karakter di luar penanda awal dan akhir yang ditentukan. Fungsi ini menyimpan karakter pertama sebanyak `beginSize` dan karakter terakhir sebanyak `endSize` dari `inputStr`, lalu menghubungkannya dengan lima garis bawah.

  • Parameter 1: String yang akan diekstrak.

  • Parameter 2: Indeks awal.

  • Parameter 3: Indeks akhir.

<%=remainStrStartEnd("012345",2,2)%>

01_____45

toLong

Mengonversi objek ke tipe long.

Parameter 1: Nilai input.

Parameter 2: Nilai default yang digunakan jika konversi gagal.

<%=toLong("1234",12L)%>

1234.0

toLowerCase

Mengonversi huruf Inggris dalam string menjadi huruf kecil.

<%=toLowerCase("TEST")%>

test

toUpperCase

Mengonversi huruf Inggris dalam string menjadi huruf besar.

<%=toUpperCase("test")%>

TEST

toJSONObject

Mengonversi string JSON menjadi objek JSON.

<%=toJSONObject("{\"name\":\"test\",\"age\":12}")%>

{"name":"test","age":12}

base64encode

Mengenkode string menggunakan Base64.

<%=base64encode("abc")%>

YWJj

base64decode

Mendekode string Base64.

<%=base64decode("YWJj")%>

abc

replace

Mengganti bagian dari string.

  • Parameter 1: String yang akan dimodifikasi.

  • Parameter 2: Substring yang akan diganti.

  • Parameter 3: Substring baru.

<%=replace("abc123","abc","aaa")%>

aaa123

isNull

Memeriksa apakah objek bernilai null atau kosong.

<%=isNull("")%>

true

Parameter variabel

Selama eksekusi komponen playbook, jika ingin mengambil parameter dari node sebelumnya dalam alur, gunakan format parameter variabel dalam komponen tersebut. Untuk parameter input playbook, gunakan event sebagai nama node—yang dapat dianggap sebagai parameter output dari node awal. Oleh karena itu, jangan memberi nama komponen 'event' selama orkestrasi playbook.

Penting
  • Saat ini, Anda hanya dapat mengambil data dari parameter output node.

  • Parameter input playbook sama dengan parameter output node awal.

  • Parameter input node saat ini sama dengan parameter output node sebelumnya.

Format sintaks

Sintaks untuk mengambil parameter output node adalah ${node_name.parameter_path}. Jalur ini menggunakan metode JSONPath dan mendukung format JSON dengan jumlah lapisan berapa pun.

  • Untuk format JSONObject, gunakan titik (.) untuk langsung mengambil data dari node anak. Untuk format JSONArray, tanda bintang (*) menunjukkan semua data. Anda juga dapat menggunakan indeks numerik untuk mengambil satu data. Contoh berikut menunjukkan cara mengambil parameter output setelah aksi dieksekusi:

    Tipe

    Sintaks

    Deskripsi

    Mengambil parameter dalam JSON

    ${node_name.datalist.*.parameter1.parameter2}

    Catatan

    Sintaks untuk parameter output node awal (playbook) adalah ${event.parameter1.parameter2}.

    Mengambil data parameter2 di bawah parameter1.

    Catatan

    Nilai parameter1 harus dalam format JSONObject.

    Mengambil semua data dalam array JSON

    ${node_name.datalist.*.parameter1.*.parameter2}

    Catatan

    Sintaks untuk parameter output node awal (playbook) adalah ${event.parameter1.*.parameter2}.

    Mengambil data parameter2 dari semua JSONObject di bawah parameter1.

    Catatan

    Nilai parameter1 harus dalam format JSONArray.

    Mengambil satu data dari array JSON

    ${node_name.datalist.*.parameter1.[0].parameter2}

    Catatan

    Sintaks untuk parameter output node awal (playbook) adalah ${event.parameter1.[0].parameter2}.

    Mengambil data parameter2 dari JSONObject pertama di bawah parameter1.

    Catatan

    Nilai parameter1 harus dalam format JSONArray.

  • Selain menulis aturan sintaks secara manual, Anda juga dapat menghasilkan sintaks yang sesuai dengan memilih parameter dari daftar drop-down di kotak input. Metode ini direkomendasikan setelah pengujian selesai. Gambar berikut menunjukkan contohnya. image

Contoh pengambilan parameter variabel

Ambil node bernama node1 sebagai contoh. Parameter output node ini adalah sebagai berikut:

{
  "datalist": [
    {
      "person": {
        "weight": "120",
        "age": "12"
      }
    },
    {
      "person": {
        "weight": "121",
        "age": "13"
      }
    }
  ],
  "total_data_successful": 2,
  "total_data": 2,
  "total_exe_successful": 2,
  "total_exe": 2,
  "total_data_with_dup": 2,
  "status": true
}

Sintaks

Deskripsi

${event._req_uuid}

Mengambil nilai parameter sistem _req_uuid dari node awal (parameter input).

${event.parentTaskUuid}

Mengambil _req_uuid dari playbook induk dalam playbook anak (jika playbook induk dipanggil).

${node1.total_data_successful}

Mengambil volume data yang berhasil diproses oleh node1.

Nilai output: 2.

${node1.datalist.*.person.age}

Mengambil semua data age dari objek person di bawah datalist node1.

Nilai output: {12,13}.

${node1.datalist.[0].person.age}

Mengambil data age dari objek person pada item pertama di bawah datalist node1.

Nilai output: 12.

Konversi tipe data parameter

Selama eksekusi playbook, data diproses sebagai string dalam sebagian besar skenario. Jika tipe data tidak memenuhi persyaratan, Anda dapat mengonversi data dari tipe sumber ke tipe target.

Formatnya adalah ${data_type:data}. Tabel berikut mencantumkan konversi tipe data yang didukung.

Tipe data

Deskripsi

Tipe sumber yang didukung

Boolean

Mengonversi ke Boolean. Nilai valid: true dan false.

  1. Tipe numerik, seperti Long, Int, dan Double. Nilai 1 dikonversi menjadi true, dan nilai lainnya dikonversi menjadi false.

  2. Tipe String: String "true", "1", "Y", dan "T" dikonversi menjadi true. String "false", "0", "N", dan "F" dikonversi menjadi false. String lain tidak didukung dan akan menyebabkan error.

Long

Mengonversi ke Long.

  1. Tipe numerik, seperti Long, Int, dan Double.

  2. Tipe String: String hanya boleh berisi angka dan koma, seperti 1,000,000.

Int

Mengonversi ke Int.

Double

Mengonversi ke Double.

String

Mengonversi ke String.

Semua tipe didukung.

DateTime

Mengonversi ke tanggal.

  1. Tipe numerik, seperti Long, Int, dan Double.

  2. Tipe String: Harus berupa tipe numerik, seperti 1696487400000, atau sesuai dengan format tanggal ISO 8601, seperti 2023-10-05 14:30:00.

JSONObject

Mengekstrak kunci dan nilai dari JSONObject untuk membentuk JSONObject baru. Ini digunakan untuk mengemas data multi-kolom dalam format {}. Format outputnya adalah {"fieldname":"fieldValue",...}.

Hanya tipe JSONObject yang didukung.

JSONArray

Mengekstrak kunci dan nilai dari JSONObject untuk membentuk JSONArray. Ini digunakan untuk mengemas data multi-baris dan multi-kolom dalam format [{}]. Data kemudian dikeluarkan sebagai data satu baris, satu kolom.

Hanya tipe JSONObject yang didukung.

JSONObjectStr

Mengonversi JSONObject menjadi string.

Tipe JSONObject.

JSONArrayStr

Mengonversi JSONArray menjadi string.

Tipe JSONArray.

Contoh

  • Contoh JSONObject: Parameter input playbook adalah {"src_ip":"127.0.0.1","dst_ip":"127.0.0.2","msg":"hello"}.

    • ${JSONObject:event}: Mengeluarkan seluruh event sebagai string JSON lengkap.

    • ${JSONObject:event.src_ip}: Membuat JSONObject dari bidang src_ip dalam event. Hasil: {"src_ip":"127.0.0.1"}.

    • ${JSONObject:event.src_ip|msg}: Membuat JSONObject dari bidang src_ip dan msg dalam event. Hasil: {"src_ip":"127.0.0.1","msg":"hello"}.

    • ${JSONArray:event}: Mengeluarkan seluruh event sebagai JSONArray lengkap.

    • ${JSONArray:event.src_ip}: Membuat JSONArray dari bidang src_ip dalam event. Hasil: [{"src_ip":"127.22.22.1"}].

    • ${JSONArray:event.src_ip|msg}: Membuat JSONArray dari bidang src_ip dan msg dalam event. Hasil: [{"src_ip":"127.0.0.1","msg":"hello"}].

  • Contoh JSONArray: Parameter input playbook adalah {"datalist":[{"src_ip":"127.0.0.1","dst_ip":"127.1.0.1","msg":"hello"},{"src_ip":"127.1.0.1","dst_ip":"127.1.0.1","msg":"hello"}]}.

    • ${JSONObject:event.datalist.*.src_ip}: Diperluas menjadi beberapa baris. Hasil untuk setiap baris adalah JSONObject, seperti {"src_ip":"127.x.0.1"}.

    • ${JSONObject:event.datalist.*.src_ip|msg}: Diperluas menjadi beberapa baris. Setiap baris adalah JSONObject, seperti {"src_ip":"127.x.0.1","msg":"hello"}.

    • ${JSONArray:event.datalist.*.src_ip}: Ini diperluas menjadi array JSON satu baris, seperti: [{"src_ip":"127.0.0.1"},{"src_ip":"127.1.0.1"}].

    • ${JSONArray:event.datalist.*.src_ip|msg}: Menggabungkan hasil menjadi satu JSONArray. Hasil: [{"src_ip":"127.0.0.1","msg":"hello"},{"src_ip":"127.1.0.1","msg":"hello"}].

Pemrosesan parameter dan alur eksekusi node

image
  1. Ekstraksi parameter node: Setelah semua node hulu yang diperlukan selesai dieksekusi, sistem mengekstraksi data input aktual untuk node saat ini berdasarkan konfigurasi inputnya. Proses ekstraksi dijelaskan secara rinci di bawah ini.

  2. Eksekusi node: Setelah parameter input untuk node dihasilkan, jika beberapa set parameter input identik, sistem secara otomatis melakukan deduplikasi lalu mengeksekusi aksi komponen node.

    Catatan

    Jika aksi menerima beberapa set nilai sebagai parameter, aksi dieksekusi beberapa kali untuk menyederhanakan operasi.

    Sebagai contoh, jika Anda ingin mengidentifikasi semua server dari aplikasi yang dikompromikan lalu mengeksekusi aksi "Purge Malicious File" pada setiap server, cukup pilih "Server IP" (${node1.datalist.*.ip}) dalam parameter aksi. Sistem secara otomatis mengeksekusi aksi "Purge Malicious File" pada semua alamat IP. Anda tidak perlu menulis loop untuk mengeksekusi aksi purge pada setiap server secara individual.

  3. Agregasi dan deduplikasi hasil output: Hasil dari beberapa eksekusi node diagregasi dan secara otomatis dideduplikasi. Logika deduplikasi menganggap entri sebagai duplikat jika semua bidangnya identik. Sebagai contoh:

    Sebelum deduplikasi

    Setelah deduplikasi

    [
        {
            "a":"11",
            "b":"22"
        },
        {
            "a":"11",
            "b":"22"
        },
        {
            "a":"11",
            "b":"33"
        }
    ]
    [
        {
            "a":"11",
            "b":"22"
        },
        {
            "a":"11",
            "b":"33"
        }
    ]

Proses ekstraksi parameter

Memproses satu sumber data

Format JSON kompleks dengan kedalaman berapa pun dapat dianggap sebagai struktur pohon. Prinsip-prinsip untuk mengekstraksi parameter dari JSON adalah sebagai berikut: Hubungan saudara kandung pada kedalaman yang sama dipertahankan, node leluhur diperluas, dan Produk Kartesius dibuat untuk node yang bukan saudara kandung atau leluhur.

  1. Data diekstraksi secara otomatis dari kedalaman berapa pun. Gambar berikut menunjukkan contohnya. image

  2. Hubungan saudara kandung pada kedalaman yang sama dipertahankan. Gambar berikut menunjukkan contohnya.

    image

  3. Node leluhur diperluas. Gambar berikut menunjukkan contohnya.

    image

  4. Produk Kartesius dibuat untuk node yang bukan saudara kandung atau leluhur. Gambar berikut menunjukkan contohnya. image

Memproses beberapa sumber data

Produk Kartesius dibuat dari hasil pemrosesan setiap sumber data.

image