Splunk SOAR 6.3.X のVPE(Visual Playbook Editor)使える機能 Logic-loopとExternal prompt

# Splunk SOARの新しいバージョンに搭載された新機能は色々ありますが、中でもPlaybookの作成で使える機能2つを紹介します！

## Logic-loop
まず1つ目はLogic-loop機能です。
SOARのPlaybookを作っていて反復処理ができないことに結構フラストされている方々はいらっしゃると思います。
今まではAppを作ってon-pollでなんとかするとか、おなじ処理を繰り返して定義するとか、いっそのことPythonを直接書く、とかしかできませんでしたがSplunk SOARのPlaybook内でループ処理を書くことができる様になった事はなかなかGood Newsです。
VPE(Visual Playbook Editor)からPlaybook作成時に設定ができる様になり、コードをほとんど書かずにループ処理を実装できます。

![スクリーンショット 2024-11-15 14.21.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3935982/f5bc46b9-ea0f-019c-d451-f3ecc0b9af79.png)

どんな時にこれが使えるのか？というと、例えばアクションを実行する時にそのアクションが一発で成功すれば良いのですが、 **エラーが発生して同じアクションを再試行したい時** があります。そんな時に活用できます。
ループ機能というと、無限ループを作ってしまうことが心配なところですが、Logic-loop機能はループを抜ける条件やループの回数などを定義したり、タイムアウトの設定を行うことができます。

![スクリーンショット 2024-11-15 15.34.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3935982/9df78055-a0eb-b715-84ee-5724a92aa7b6.png)

:::note info
 **ループの設定**
「 **Looping** 」のセクションでは、特定の回数をループして抜けるという設定が可能です。
　また、特定回数をループするときの一時停止（ポーズ）の時間を設定することもできます。
「 **TIME-OUT SETTING** 」では、ループを一定時間行った後にループを抜ける設定ができます。
「 **Loop Exit condition** 」は、特定の条件を満たした場合にループを抜ける設定が可能です。
:::

もちろん、これらの設定を複数定義してループを活用することが可能です。

他サービスやデバイスあるいはソフトウェアとの疎連携の場合、対面からのレスポンスによっては情報がPlaybookを実行したタイミングで、エラーが発生して情報取得ができない様なことを防ぐ様に **エラー処理** を加えられる事はとても有用です。


## External Prompt
続いてExternal promptです。promptの機能はアクションなどの実行に承認や事前に許可を得る必要がある場合に、対象者（承認者）になんらかの **"アクション"** を実行しても良いかどうかを確認する機能です。

![スクリーンショット 2024-11-15 17.08.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3935982/164843e3-cd08-aa11-40f4-25aa8860a795.png)

以前からPrompt機能はあったのですが、前のバージョンではSOARのインターフェースにログイン後、Promptを確認する方法でした。

この場合SOARのライセンスがログインに必要であるため、ライセンス保持していないSOCメンバー以外のレスポンスが必要な場合（例えば、エンドポイントを隔離する場合にエンドポイント使用者の上長に確認を取る、等）には別の仕組みを考えなければなりません。

今回、External Promptが実装されたことによってライセンスユーザ以外の承認などが必要な場合でもPromptを利用できることになり、Playbookのユースケースを比較的簡単に広げることが可能です。

![スクリーンショット 2024-11-15 17.42.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3935982/0256d0e1-e2a0-00be-f52d-5d2cd54a6e10.png)

Enternal Promptは承認を求めるような場合に利用するので、なぜこのPromptが表示されているのか？どのような回答がほしいのか？という詳細な情報を含める必要がありますが、これらの必要アクションを過不足なく適用できる様になっています。

今回の例では、SMTPのAppを使ってメールを承認者に送信して特定のアクションを実行してよいかどうかを確認するとしてみました。このサンプルPlaybookを実行するとメールが送信され、メール内にあるHyperlinkからPromptの画面が開きます。
注意点としては、このExternal PromptはSOARのインスタンスに構成されているため、SOARのインスタンスにリーチャブルでなければExternal Promptにアクセスすることができません。
また、このPromptへアクセスするときにSAML認証を使用してセキュリティ強化を行うことができます。この場合でもライセンスを消費することはないそうですので安心してSOARユーザ以外に承認を行ってもらえますｗ

下記は、External PromptのURLに表示される内容のサンプルです。
![スクリーンショット 2024-11-15 18.19.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3935982/787b04ee-489f-4a72-a18c-46e659b9b010.png)

これらのメッセージや、Yes/Noなどのレスポンスは対応の種類によって変更することができるので、回答してほしい内容を定義することが可能です。（この場合はYes/Noの単純選択にしています）

:::note info
**設定可能な回答の種類**
「 **Message** 」単にメッセージの入力を促すPromptとなります。
「 **Yes/No** 」上記の例のようにYesまたはNoを選択することになります。
「 **1-100** 」1から100までの数値を入力できるようになります。
「 **Custom List** 」Yes/Noのようなデフオルトの固定値ではなく、選択肢を作成してユーザに選ばせます。例えば、Tokyo、Osaka、Nagoya などの選択肢を提供します。
「 **Custom Range** 」上記の1-100ではなく、200-500などのユーザー指定の数値レンジを設定できます。
:::
Time Outも設定可能なので、もし規定時間以内（デフォルトだと30分以内）にResponseが得られない場合の処理も定義可能です。
残念ながらPromptはLoopと組み合わせて利用することはできませんのでご注意ください。

これらの機能は新しい **Splunk SOARの6.3以降** で利用可能となっていますので、ぜひ使ってみてください。

また、OSのインスタンスを用意してインストールしなければならないオンプレ版ですが、無料で使ってみる事ができるCommutity Editon（ https://www.splunk.com/en_us/download/soar-free-trial.html ）もダウンロードできますので、試してみてくださいね！

（了）