全部产品
Search
文档中心

Security Center:Parameter dan Eksekusi Komponen SOAR

更新时间:Jul 18, 2025

Parameter komponen playbook mendukung format seperti konstanta, variabel, ekspresi, dan fungsi. Pemrosesan parameter mencakup ekstraksi, deduplikasi, eksekusi loop, serta langkah-langkah lainnya.

Kategori parameter

  • Berdasarkan fungsinya, parameter dibagi menjadi parameter input playbook (parameter input node awal), parameter output playbook (parameter output node awal), parameter input komponen, dan parameter output komponen.

  • Berdasarkan tipenya, parameter dibagi menjadi parameter sistem dan parameter komponen.

    Catatan

    Selama eksekusi komponen, Anda dapat mengakses parameter default sistem dari node mana pun, tetapi tidak parameter komponen.

Parameter input dan output

Parameter input komponen dapat didefinisikan secara kustom atau berupa output dari node hulu. Jika Anda memilih output node hulu, node tersebut harus merupakan node sebelumnya yang dapat dicapai pada jalur orkestrasi.

Penting

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

Mengambil Node B dalam diagram berikut sebagai contoh: Node ini dapat mengakses output dari Node Hulu A dan parameter input playbook. Node ini tidak dapat mengakses output dari Node D karena mereka tidak berada di cabang yang sama. Node ini juga tidak dapat mengakses output dari Node C karena Node C bukan node sebelumnya dari Node B.

Parameter sistem

Parameter sistem dalam playbook (parameter default node awal)

Parameter default sistem dapat diakses dari node mana pun menggunakan ekspresi dalam tabel berikut. "event" dapat dianggap sebagai nama node awal. Anda dapat mengakses parameter sistem playbook menggunakan format ${event.nama_parameter}.

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 peran pengguna yang masuk.

  • 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 akan dikembalikan.

_region_id

String

${event._region_id}

ID wilayah.

_req_uuid

String

${event._req_uuid}

Pengenal 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 parameter output komponen

Hasil output dari komponen apa pun mencakup parameter sistem berikut. Parameter kustom dienkapsulasi dalam datalist. Anda dapat menggunakan ${nama_node.datalist.*} untuk mendapatkan semua parameter output.

Parameter

Tipe data

Deskripsi

datalist

JSONArray

Parameter output setelah komponen dieksekusi.

Penting

Parameter output kustom dari komponen juga disimpan dalam datalist.

total_data_successful

Int

Jumlah data yang berhasil diproses selama eksekusi komponen.

total_data

Int

Jumlah data yang diproses selama eksekusi.

total_data_with_dup

Int

Jumlah data yang berhasil diproses setelah deduplikasi selama eksekusi.

total_exe_successful

Int

Jumlah kali komponen saat ini berhasil dieksekusi.

total_exe

Int

Jumlah kali komponen saat ini telah dieksekusi.

status

Boolean

Status keberhasilan eksekusi. Nilai valid: true dan false.

messageForUser

String

Pesan kesalahan yang perlu diperhatikan pengguna saat eksekusi gagal.

message

String

Pesan kesalahan yang dikembalikan oleh sistem saat eksekusi gagal.

failed_exe_detail

String

Informasi kesalahan detail saat eksekusi gagal.

Format parameter

Parameter mendukung tiga format dasar: konstanta, variabel, dan ekspresi. Mereka juga mendukung kombinasi dari ketiga format ini dan nesting yang lebih kompleks.

Format

Deskripsi

Contoh

Konstanta

String tetap

Ali.

Variabel

Mengekstrak nilai dari parameter input playbook dan parameter output node sebelumnya

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

Ekspresi

Menggunakan ekspresi tersemat dan fungsi untuk menghasilkan nilai. Formatnya adalah <%=ekspresi|fungsi%>. Untuk fungsi yang didukung, lihat Fungsi bawaan dalam ekspresi.

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

Fungsi: <%=currentTime()%>.

Kombinasi

Konstanta_Variabel_Ekspresi

Contoh kombinasi:

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

Contoh nesting: (Ekspresi dapat menyematkan variabel) <%=formatTimeStamp(secondstamp_add(${DateTime:event.datalist.*.gmt_create},-600L),"yyyy-MM-dd'T'HH:mm:ss.SSSXXX")%>, yang mendapatkan nilai gmt_create dari ${DateTime:event.datalist.*.gmt_create}, mengurangi 600, dan akhirnya memformatnya sebagai tanggal.

Fungsi bawaan dalam ekspresi

Fungsi

Deskripsi

Contoh

Contoh output

currentTime

Mengembalikan timestamp saat ini.

<%=currentTime()%>

2025-06-05 10:30:00

secondstamp_add

Menambahkan detik ke timestamp saat ini.

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

2025-06-05 10:30:09

formatTimeStamp

Memformat timestamp input sesuai dengan format yang ditentukan.

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

20250605

timestampToseconds

Menambahkan detik ke timestamp saat ini dan mengonversinya ke detik untuk output.

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

1749099848

splitStr

Memisahkan string input menjadi daftar berdasarkan splitStr.

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

[test, value]

parseTimeMs

Mengonversi string format waktu ke milidetik.

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

1749090632000

currentTimeToMs

Mengonversi timestamp saat ini ke milidetik.

<%=currentTimeToMs()%>

1749091369688

currentHourToMs

Mengonversi timestamp jam saat ini ke milidetik, dihitung dari menit 0 dan detik 0 dari jam saat ini.

<%=currentHourToMs()%>

1749088800000

currentDayToMs

Mengonversi timestamp hari saat ini ke milidetik, dihitung dari jam 0, menit 0, dan detik 0 dari hari saat ini.

<%=currentDayToMs()%>

1749052800000

parseTimeMsWDefault

Menguraikan timestamp menjadi milidetik dengan nilai default yang didukung. Jika parameter 1 kosong, parameter 2 digunakan sebagai nilai default.

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

1749090632000

splitStrToJsonArray

Memisahkan string input menjadi JSONArray berdasarkan splitStr.

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

["test","value"]

concatListStr

Menggabungkan string menggunakan konektor. Harus digunakan dengan fungsi splitStr.

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

test|value

substring

Mengekstrak substring.

Parameter 1: String untuk diekstrak.

Parameter 2: Indeks awal.

Parameter 3: Indeks akhir.

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

012

remainStrStartEnd

Mempertahankan karakter di luar indeks awal dan akhir. Secara khusus, ia mempertahankan beginSize karakter dari awal inputStr dan endSize karakter dari akhir, menghubungkannya dengan lima garis bawah.

  • Parameter 1: String untuk 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 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

Menjalankan pengkodean Base64 pada string.

<%=base64encode("abc")%>

YWJj

base64decode

Menjalankan dekode Base64 pada string.

<%=base64decode("YWJj")%>

abc

replace

Mengganti string.

  • Parameter 1: String yang akan dimodifikasi.

  • Parameter 2: String yang akan diganti.

  • Parameter 3: String baru.

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

aaa123

isNull

Menentukan apakah suatu objek kosong.

<%=isNull("")%>

true

Parameter variabel

Selama eksekusi komponen playbook, jika Anda ingin mendapatkan parameter dari node sebelumnya dalam alur, Anda dapat menggunakan parameter variabel dalam komponen. Untuk parameter input playbook, gunakan event sebagai nama node. Anda dapat memahaminya sebagai parameter output node awal. Oleh karena itu, jangan menetapkan nama komponen menjadi "event" selama orkestrasi playbook.

Penting
  • Saat ini, hanya mendukung pengambilan data berdasarkan parameter output node.

  • Parameter input playbook = Parameter output node awal.

  • Parameter input node saat ini = Parameter output node sebelumnya.

Format sintaksis

Sintaks untuk mendapatkan parameter output node adalah ${nama_node.path_parameter}, di mana path menggunakan metode jsonpath dan mendukung format JSON dengan jumlah lapisan apa pun.

  • Untuk format JSONObject, gunakan "." untuk langsung mendapatkan data dari node tingkat lebih rendah. Untuk format JSONArray, * mewakili mendapatkan semua data, dan indeks numerik juga didukung untuk mendapatkan satu data. Contoh berikut menunjukkan cara mendapatkan parameter output setelah eksekusi:

    Tipe

    Sintaks

    Deskripsi

    Mendapatkan parameter dalam JSON

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

    Catatan

    Sintaks parameter output node awal: ${event.parameter1.parameter2}.

    Mendapatkan data parameter2 di bawah parameter1.

    Catatan

    Nilai parameter1 harus dalam format JSONObject.

    Mendapatkan semua data dalam array JSON

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

    Catatan

    Sintaks parameter output node awal: ${event.parameter1.*.parameter2}.

    Mendapatkan data parameter2 dari semua JSONObject di bawah parameter1.

    Catatan

    Nilai parameter1 harus dalam format JSONArray.

    Mendapatkan satu data dalam array JSON

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

    Catatan

    Sintaks parameter output node awal: ${event.parameter1.[0].parameter2}.

    Mendapatkan data parameter2 dari JSONObject pertama di bawah parameter1

    Catatan

    Nilai parameter1 harus dalam format JSONArray.

  • Selain menulis aturan sintaks secara manual, sistem juga mendukung pembuatan sintaks yang sesuai dengan memilih parameter dari daftar dropdown di kotak input, yang direkomendasikan setelah debugging selesai. Seperti ditunjukkan pada gambar berikut: image

Mendapatkan parameter variabel

Menggunakan node1 sebagai contoh, parameter output-nya 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}

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

${event.parentTaskUuid}

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

${node1.total_data_successful}

Mendapatkan jumlah item data yang berhasil dieksekusi dari node1.

Nilai output: 2.

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

Mendapatkan semua data usia person di bawah datalist dari node1.

Nilai output: {12,13}.

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

Mendapatkan data usia person dari item pertama di bawah datalist dari node1.

Nilai output: 12.

Konversi tipe data parameter

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

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

Tipe Data

Deskripsi

Tipe Sumber yang Didukung

Boolean

Mengonversi ke tipe Boolean. Nilai valid: true dan false.

  1. Tipe numerik seperti Long, Int, dan Double. Nilai 1 dikonversi menjadi true, jika tidak false.

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

Long

Mengonversi ke tipe Long.

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

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

Int

Mengonversi ke tipe Int.

Double

Mengonversi ke tipe Double.

String

Mengonversi ke tipe String.

Semua tipe didukung untuk konversi.

DateTime

Mengonversi ke tipe tanggal.

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

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

JSONObject

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

Hanya tipe JSONObject yang didukung.

JSONArray

Mengekstrak kunci dan nilai dari JSONObject untuk membentuk JSONArray. Mengemas data multi-baris dan multi-kolom dalam format [{}]. Data dikeluarkan sebagai data single-baris dan single-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: {"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 JSON single-baris, single-kolom dari src_ip dalam event. Hasil: {"src_ip":"127.0.0.1"}.

    • ${JSONObject:event.src_ip|msg}: Membuat string JSON single-baris, single-kolom 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 single-baris, single-kolom dari src_ip dalam event. Hasil: [{"src_ip":"127.22.22.1"}].

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

  • Contoh JSONArray: Parameter input playbook: {"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, dengan setiap baris menghasilkan: {"src_ip":"127.x.0.1"}.

    • ${JSONObject:event.datalist.*.src_ip|msg}: Diperluas menjadi beberapa baris, dengan setiap baris menjadi string JSON: {"src_ip":"127.x.0.1","msg":"hello"}.

    • ${JSONArray:event.datalist.*.src_ip}: Diperluas menjadi satu baris. Hasil: [{"src_ip":"127.0.0.1"},{"src_ip":"127.1.0.1"}].

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

Alur kerja

  1. Ekstraksi Parameter Node: Setelah semua node hulu selesai dieksekusi, data input untuk node saat ini diekstraksi berdasarkan konfigurasi input node tersebut. Proses ekstraksi dijelaskan secara rinci di bawah ini.

  2. Eksekusi Komponen Node: Setelah parameter input untuk node terbentuk dan semua bidang sama, komponen node dieksekusi setelah deduplikasi otomatis.

    Catatan

    Ketika suatu aksi menerima beberapa set nilai sebagai parameter, untuk menyederhanakan operasi, aksi tersebut akan dieksekusi beberapa kali.

    Sebagai contoh: Untuk menemukan semua server (beberapa) dari aplikasi yang terganggu dan menjalankan aksi "Pembersihan File Jahat" pada masing-masing server tersebut. Pengguna hanya perlu memilih "IP Server" (${node1.datalist.*.ip}) dalam parameter, dan sistem akan secara otomatis menjalankan aksi "Pembersihan File Jahat" pada semua IP. Tidak perlu menulis loop untuk menjalankan aksi pembersihan satu per satu.

  3. Aggregasi Hasil Output dan Deduplikasi: Setelah beberapa kali eksekusi node, hasilnya diagregasi dan secara otomatis dideduplikasi. Untuk deduplikasi, entri dianggap duplikat ketika semua bidang 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"
        }
    ]

Ekstrak parameter

Proses satu sumber data

Format JSON kompleks dengan kedalaman apa pun dapat dilihat sebagai struktur pohon. Prinsip untuk mengekstrak parameter dari JSON adalah: hubungan saudara pada kedalaman yang sama tetap tidak berubah, node leluhur diperluas, dan node yang bukan saudara atau leluhur menjalani produk Kartesius.

  1. Secara otomatis mengekstrak data dengan kedalaman apa pun. Contoh: image

  2. Hubungan saudara pada kedalaman yang sama tetap tidak berubah. Contoh:

    image

  3. Ekspansi leluhur. Contoh:

    image

  4. Untuk node yang bukan saudara atau leluhur, lakukan produk Kartesius. Contoh: image

Proses beberapa sumber data

Lakukan produk Kartesius pada hasil pemrosesan dari setiap sumber data individu.

image