すべてのプロダクト
Search
ドキュメントセンター

Security Center:SOAR コンポーネントパラメーターと実行

最終更新日:Jul 18, 2025

プレイブックコンポーネントパラメーターは、定数、変数、式、関数などの形式をサポートしています。パラメーター処理には、抽出、重複排除、ループ実行などの手順が含まれます。

パラメーターカテゴリ

  • 機能別では、パラメーターはプレイブック入力パラメーター(開始ノード入力パラメーター)、プレイブック出力パラメーター(開始ノード出力パラメーター)、コンポーネント入力パラメーター、およびコンポーネント出力パラメーターに分類されます。

  • タイプ別では、パラメーターはシステムパラメーターとコンポーネントパラメーターに分類されます。

    説明

    コンポーネントの実行中に、任意のノードからシステムのデフォルトパラメーターにアクセスできますが、コンポーネントパラメーターにはアクセスできません。

入力パラメーターと出力パラメーター

コンポーネント入力パラメーターは、カスタム定義することも、アップストリームノードからの出力とすることもできます。アップストリームノードの出力を選択する場合、アップストリームノードは、オーケストレーションパス上で到達可能な先行ノードである必要があります。

重要

マルチパスシナリオでは、ノード名がグローバルに一意であることを確認する必要があります。

次の図の[ノード B] を例にとると、アップストリーム [ノード A] の出力とプレイブック入力パラメーターにアクセスできます。[ノード D] の出力には、同じブランチ上にないためアクセスできません。また、[ノード C] は [ノード B] の先行ノードではないため、[ノード C] の出力にもアクセスできません。

システムパラメーター

プレイブックのシステムパラメーター(開始ノードのデフォルトパラメーター)

システムのデフォルトパラメーターには、次の表の式を使用して任意のノードからアクセスできます。「event」は開始ノードの名前と見なすことができます。 ${event.parameter_name} 形式を使用してプレイブックシステムパラメーターにアクセスできます。

パラメーター

データ型

説明

_tenant_id

文字列

${event._tenant_id}

プレイブックを呼び出す Alibaba Cloud アカウント ID。

_domain_id

文字列

${event._domain_id}

ログインユーザーのロールステータス。

  • 0: 単一アカウントログインを示します。

  • 1: グローバルアカウントログインを示します。

_trigger_user

文字列

${event._trigger_user}

プレイブックをトリガーする Alibaba Cloud アカウント ID。RAM ユーザーが使用されている場合は、RAM ユーザー ID が返されます。

_region_id

文字列

${event._region_id}

リージョン ID。

_req_uuid

文字列

${event._req_uuid}

現在のプレイブック実行タスクの一意の識別子。

parentTaskUuid

文字列

${event.parentTaskUuid}

親プレイブックの _req_uuid。このパラメーターは、子プレイブックが呼び出されたときに存在します。

parentTaskName

文字列

${event.parentTaskName}

親プレイブックの UUID。このパラメーターは、子プレイブックが呼び出されたときに存在します。

コンポーネント出力パラメーターのシステムパラメーター

任意のコンポーネントの出力結果には、次のシステムパラメーターが含まれます。カスタムパラメーターは datalist にカプセル化されています。 ${node_name.datalist.*} を使用して、すべての出力パラメーターを取得できます。

パラメーター

データ型

説明

datalist

JSONArray

コンポーネントが実行された後の出力パラメーター。

重要

コンポーネントからのカスタム出力パラメーターも datalist に格納されます。

total_data_successful

Int

コンポーネントの実行中に正常に処理されたデータ量。

total_data

Int

実行中に処理されたデータ量。

total_data_with_dup

Int

実行中に重複排除後に正常に処理されたデータ量。

total_exe_successful

Int

現在のコンポーネントが正常に実行された回数。

total_exe

Int

現在のコンポーネントが実行された回数。

status

ブール値

実行の成功ステータス。有効な値: true と false。

messageForUser

文字列

実行が失敗した場合にユーザーが注目する必要があるエラーメッセージ。

message

文字列

実行が失敗した場合にシステムから返されるエラーメッセージ。

failed_exe_detail

文字列

実行が失敗した場合の詳細なエラー情報。

パラメーター形式

パラメーターは、定数変数の 3 つの基本形式をサポートしています。また、これら 3 つの形式の組み合わせと、より複雑なネストもサポートしています。

形式

説明

定数

固定文字列

Ali。

変数

プレイブック入力パラメーターと先行ノードの出力パラメーターから値を抽出します

${event.aliuid}。プレイブック入力パラメーターから aliuid を取得します。

埋め込み式と関数を使用して値を生成します。形式は <%=expression|function%> です。サポートされている関数については、「式に組み込まれている関数」をご参照ください。

式: Java 構文のみがサポートされています。例: <%=2*60*60%>。

関数: <%=currentTime()%>。

組み合わせ

定数_変数_式

組み合わせの例:

Ali_${event.aliuid}_<%=currentTime()%>_<%=2*60*60%>。コンポーネントが実行されると、変数と式が解析され、対応する値に置き換えられます: Ali_aliuid_現在の時刻_7200。

ネストの例: (式には変数を埋め込むことができます) <%=formatTimeStamp(secondstamp_add(${DateTime:event.datalist.*.gmt_create},-600L),"yyyy-MM-dd'T'HH:mm:ss.SSSXXX")%>。${DateTime:event.datalist.*.gmt_create} から gmt_create 値を取得し、600 を減算し、最後に日付としてフォーマットします。

式に組み込まれている関数

関数

説明

出力例

currentTime

現在のタイムスタンプを返します。

<%=currentTime()%>

2025-06-05 10:30:00

secondstamp_add

現在のタイムスタンプに秒を追加します。

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

2025-06-05 10:30:09

formatTimeStamp

指定された形式に従って入力タイムスタンプをフォーマットします。

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

20250605

timestampToseconds

現在のタイムスタンプに秒を追加し、出力用に秒に変換します。

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

1749099848

splitStr

入力文字列を splitStr に基づいてリストに分割します。

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

[test, value]

parseTimeMs

時間形式の文字列をミリ秒に変換します。

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

1749090632000

currentTimeToMs

現在のタイムスタンプをミリ秒に変換します。

<%=currentTimeToMs()%>

1749091369688

currentHourToMs

現在の時刻のタイムスタンプをミリ秒に変換します。現在の時刻の 0 分 0 秒から計算されます。

<%=currentHourToMs()%>

1749088800000

currentDayToMs

現在の日付のタイムスタンプをミリ秒に変換します。現在の日付の 0 時 0 分 0 秒から計算されます。

<%=currentDayToMs()%>

1749052800000

parseTimeMsWDefault

デフォルト値をサポートしてタイムスタンプをミリ秒に解析します。パラメーター 1 が空の場合、パラメーター 2 がデフォルト値として使用されます。

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

1749090632000

splitStrToJsonArray

入力文字列を splitStr に基づいて JSONArray に分割します。

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

["test","value"]

concatListStr

コネクタを使用して文字列を連結します。 splitStr 関数と組み合わせて使用する必要があります。

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

test|value

substring

部分文字列を抽出します。

パラメーター 1: 抽出元の文字列。

パラメーター 2: 開始インデックス。

パラメーター 3: 終了インデックス。

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

012

remainStrStartEnd

開始インデックスと終了インデックスの外側の文字を保持します。具体的には、inputStr の先頭から beginSize 文字と末尾から endSize 文字を保持し、5 つのアンダースコアで連結します。

  • パラメーター 1: 抽出元の文字列。

  • パラメーター 2: 開始インデックス。

  • パラメーター 3: 終了インデックス。

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

01_____45

toLong

オブジェクトを long 型に変換します。

パラメーター 1: 入力値。

パラメーター 2: 変換が失敗した場合のデフォルト値。

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

1234.0

toLowerCase

文字列の英字を小文字に変換します。

<%=toLowerCase("TEST")%>

test

toUpperCase

文字列の英字を大文字に変換します。

<%=toUpperCase("test")%>

TEST

toJSONObject

JSON 文字列を JSON オブジェクトに変換します。

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

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

base64encode

文字列に対して Base64 エンコーディングを実行します。

<%=base64encode("abc")%>

YWJj

base64decode

文字列に対して Base64 デコードを実行します。

<%=base64decode("YWJj")%>

abc

replace

文字列を置き換えます。

  • パラメーター 1: 変更する文字列。

  • パラメーター 2: 置き換える文字列。

  • パラメーター 3: 新しい文字列。

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

aaa123

isNull

オブジェクトが空かどうかを判断します。

<%=isNull("")%>

true

変数パラメーター

プレイブックコンポーネントの実行中に、フロー内の先行ノードからパラメーターを取得する場合、コンポーネントで変数パラメーターを使用できます。プレイブック入力パラメーターの場合は、ノード名として event を使用します。これは開始ノードの出力パラメーターとして理解できます。したがって、プレイブックのオーケストレーション中にコンポーネント名を「event」に設定しないでください。

重要
  • 現在、ノード出力パラメーターに基づくデータ検索のみがサポートされています。

  • プレイブック入力パラメーター = 開始ノード出力パラメーター。

  • 現在のノード入力パラメーター = 前のノード出力パラメーター。

構文形式

ノード出力パラメーターを取得するための構文は ${node_name.parameter_path} です。パスは jsonpath メソッドを使用し、任意の数のレイヤーを持つ JSON 形式をサポートしています。

  • JSONObject 形式の場合は、「.」を使用して下位レベルノードから直接データを取得します。 JSONArray 形式の場合は、「*」はすべてのデータを取得することを表し、数値インデックスも単一のデータを取得するためにサポートされています次の例は、実行後の出力パラメーターを取得する方法を示しています。

    タイプ

    構文

    説明

    JSON 内のパラメーターを取得する

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

    説明

    開始ノード出力パラメーター構文: ${event.parameter1.parameter2}。

    parameter1 の下にある parameter2 データを取得します。

    説明

    parameter1 の値は JSONObject 形式である必要があります。

    JSON 配列内のすべてのデータを取得する

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

    説明

    開始ノード出力パラメーター構文: ${event.parameter1.*.parameter2}。

    parameter1 の下のすべての JSONObject から parameter2 データを取得します。

    説明

    parameter1 の値は JSONArray 形式である必要があります。

    JSON 配列内の単一のデータを取得する

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

    説明

    開始ノード出力パラメーター構文: ${event.parameter1.[0].parameter2}。

    parameter1 の下の最初の JSONObject から parameter2 データを取得します

    説明

    parameter1 の値は JSONArray 形式である必要があります。

  • 構文規則を手動で記述するだけでなく、入力ボックスのドロップダウンリストからパラメーターを選択して対応する構文を生成することもサポートされています。デバッグが完了したら、これを行うことをお勧めします。次の図に示すように: image

変数パラメーターを取得する

[node1] を例にとると、その出力パラメーターは次のとおりです。

{
  "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
}

構文

説明

${event._req_uuid}

開始ノード(入力パラメーター)からシステムパラメーター _req_uuid の値を取得します。

${event.parentTaskUuid}

子プレイブックで親プレイブックの _req_uuid を取得します(親プレイブックが呼び出されている場合)。

${node1.total_data_successful}

[node1] から正常に実行されたデータ項目の数を取得します。

出力値: 2。

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

[node1] から datalist の下の person のすべての age データを取得します。

出力値: {12,13}。

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

[node1] から datalist の下の最初の項目から person の age データを取得します。

出力値: 12。

パラメーターデータ型の変換

プレイブックの実行中、ほとんどのシナリオではデータは文字列として処理されます。プレイブックの実行中にデータ型が要件を満たさない場合は、データ型をソース型からターゲット型に変換できます。

形式は ${data_type:data} です。次の表に、サポートされているデータ型の変換を示します。

データ型

説明

サポートされているソース型

ブール値

ブール型に変換します。有効な値: true と false。

  1. Long、Int、Double などの数値型。値 1 は true に変換され、それ以外の場合は false に変換されます。

  2. 文字列型: 文字列「true」、「1」、「Y」、「T」は true に変換されます。文字列「false」、「0」、「N」、「F」は false に変換されます。その他の文字列はサポートされておらず、エラーが発生します。

Long

Long 型に変換します。

  1. Long、Int、Double などの数値型。

  2. 文字列型: 文字列には数字とコンマのみを含めることができます。例: 1,000,000

Int

Int 型に変換します。

Double

Double 型に変換します。

文字列

文字列型に変換します。

すべての型が変換にサポートされています。

DateTime

日付型に変換します。

  1. Long、Int、Double などの数値型。

  2. 文字列型: 数値型(例: 1696487400000)であるか、ISO8601 日付形式(例: 2023-10-05 14:30:00)に準拠している必要があります

JSONObject

JSONObject からキーと値を抽出して新しい JSONObject を形成します。 {} 形式の複数列データをパッケージ化するために使用されます。出力形式: {"fieldname":"fieldValue",...}。

JSONObject 型のみがサポートされています。

JSONArray

JSONObject からキーと値を抽出して JSONArray を形成します。 [{}] 形式の複数行複数列データをパッケージ化します。データは単一行単一列データとして出力されます。

JSONObject 型のみがサポートされています

JSONObjectStr

JSONObject を文字列に変換します。

JSONObject 型。

JSONArrayStr

JSONArray を文字列に変換します。

JSONArray 型。

例:

  • JSONObject の例: プレイブック入力パラメーター: {"src_ip":"127.0.0.1","dst_ip":"127.0.0.2","msg":"hello"}。

    • ${JSONObject:event}: event 全体を完全な JSON 文字列として出力します。

    • ${JSONObject:event.src_ip}: event 内の src_ip から単一行単一列の JSON を作成します。結果: {"src_ip":"127.0.0.1"}。

    • ${JSONObject:event.src_ip|msg}: event 内の src_ip フィールドと msg フィールドから単一行単一列の JSON 文字列を作成します。結果: {"src_ip":"127.0.0.1","msg":"hello"}。

    • ${JSONArray:event}: event 全体を完全な JSONArray として出力します。

    • ${JSONArray:event.src_ip}: event 内の src_ip から単一行単一列の JSONArray を作成します。結果: [{"src_ip":"127.22.22.1"}]。

    • ${JSONArray:event.src_ip|msg}: event 内の src_ip フィールドと msg フィールドから単一行単一列の JSONArray を作成します。結果: [{"src_ip":"127.0.0.1","msg":"hello"}]。

  • JSONArray の例: プレイブック入力パラメーター: {"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}: 複数行に展開し、各行の結果は {"src_ip":"127.x.0.1"} になります。

    • ${JSONObject:event.datalist.*.src_ip|msg}: 複数行に展開し、各行は JSON 文字列 {"src_ip":"127.x.0.1","msg":"hello"} になります。

    • ${JSONArray:event.datalist.*.src_ip}: 単一行に展開します。結果: [{"src_ip":"127.0.0.1"},{"src_ip":"127.1.0.1"}]。

    • ${JSONArray:event.datalist.*.src_ip|msg}: 単一行に展開します。結果: [{"src_ip":"127.0.0.1","msg":"hello"},{"src_ip":"127.1.0.1","msg":"hello"}]

ワークフロー

  1. ノードパラメーターを抽出する: すべてのアップストリームノードの実行が完了した後、現在のノードの入力データは、現在のノードの入力構成に基づいて抽出されます。抽出プロセスについては、以下で詳しく説明します。

  2. ノードコンポーネントを実行する: ノードの入力パラメーターが形成された後、すべてのフィールドが同じ場合、ノードコンポーネントは自動重複排除後に実行されます。

    説明

    アクションが複数セットの値をパラメーターとして受け入れる場合、操作を簡素化するために、アクションは複数回実行されます

    例: 侵害されたアプリケーションのすべてのサーバー(複数)を検索し、これらの各サーバーで「悪意のあるファイルの消去」アクションを実行します。ユーザーはパラメーターで「サーバー IP」(${node1.datalist.*.ip})を選択するだけで、システムはすべての IP で「悪意のあるファイルの消去」アクションを自動的に実行します。ループを作成して消去アクションを 1 つずつ実行する必要はありません。

  3. 出力結果の集計と重複排除: ノードの複数回の実行後、結果は集計され、自動的に重複排除されます。重複排除では、すべてのフィールドが同一の場合、エントリは重複と見なされます。例:

    重複排除前

    重複排除後

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

パラメーターを抽出する

1 つのデータソースを処理する

任意の深さの複雑な JSON 形式は、ツリー構造として表示できます。JSON からパラメーターを抽出するための原則は、同じ深さの兄弟関係は変更されないままで、祖先ノードは展開され、兄弟でも祖先でもないノードは直積を受けます。

  1. 任意の深さのデータを自動的に抽出します。例: image

  2. 同じ深さの兄弟関係は変更されないままです。例:

    image

  3. 祖先の展開。例:

    image

  4. 兄弟でも祖先でもないノードの場合は、直積を実行します。例: image

複数のデータソースを処理する

個々のデータソースからの処理結果に対して直積を実行します。

image