Power Automate(クラウド)とPower Automate for Desktop(PAD)を連携させ、Power Automateから入力したデータをPAD経由で SOAR の APIに渡してみた

以前、Power Automate(クラウド)から Power Automate for Desktop にてあらかじめ作成しておいた XSOAR のインシデント作成タスクを呼び出したことがありました。

しかしその時は、Power Automate(クラウド)から何もデータを渡していなかったので今回は、Power Automate(クラウド)から入力されたデータを基にXSOAR のインシデントを作成する形でタスクを呼び出してみました。

1.Power Automate for Desktopで変数などの準備

Power Automate(クラウド)からデータを受け取る場合、Power Automate for Desktop側であらかじめ入出力変数を設定しておかなければなりません。

そこで今回は以下の2つを入力用変数として作成しました。
・Detail
・Date

作成の方法ですが、Power Automate for Desktopのフロー作成画面に入ると右ペインに「入出力変数」の設定があるので、そこから「入力」を選択します。

Power Automate for Desktop – 入出力変数設定1

すると以下のようなポップアップが表示されるので、画面に表示されている項目を入力していきます。(変数名は「Detail」を設定)

Power Automate for Desktop – 入出力変数設定2

なお、これらの項目のうち、「外部名」に設定した値が、後からPower Automate(クラウド)で設定する際に設定画面に表示されます。

同様に「Date」という変数も設定したのが以下の状態です。

Power Automate for Desktop – 入出力変数設定3

この後、実際にXSOARのAPIを実行している設定(上記画面の「Webサービスを呼び出します」)を開いて、先ほど作成した変数を下図の赤線の通り設定します。

Power Automate for Desktop -「Webサービスを呼び出します」

なお、XSOAR上では、”test %Date%”がインシデント名、”Detail”がそのインシデントを開いた時の Detail の設定項目になります。

2.Power Automate(クラウド)でフロー作成

1.のPADの設定を行いセーブしたら(!)、Power Automate(クラウド)でのフローの作成に入ります。

フロー作成画面で”Desktop”で検索をかけると「Run a flow build with Power Automate for desktop」というアクションがあるので、それを選択します。

Power Automate(クラウド)1

そしてその設定画面を開くと、下図のとおり一番上に「Desktop Flow」という項目があるので、その下のプルダウンから、先ほどPAD上で作成したフロー名(ここでは「XSOAR連携 – データ受信」)を選択します。

すると、その下にある「Advanced parameters」のプルダウンを開いた際に、先ほどPADで設定した変数(外部名)が表示されるので、それぞれチェックボックスで選択します。

Power Automate(クラウド)2

そして、それそれの変数に対して渡したいデータをテキストフィールドに書き込んでいきます。

Power Automate(クラウド)3

ここでは「XSOAR Detail」には固定文字の”TEST”そ、「XSOAR Date」にはその時の日付を設定しています。

3.Power Automate(クラウド)のフローを実行

これで準備が整ったので、先ほど作成したPower Automate(クラウド)のフローを実行します。

Power Automate(クラウド)フロー実行1

どうやらうまくいったようなので、念のため、Power Automate(クラウド)のフロー実行結果を確認してみると、ちゃんと変数が設定されて正常終了しているようでした。

Power Automate(クラウド)フロー実行2

4.XSOAR側の処理状況を確認

その後、XSOAR側で正常にインシデントが登録されているか確認してみました。

するとインシデント名のところには赤線の通り、%Date%で渡した今日の日付の入ったものが登録されていました。

XSOARコンソール1

また、そのインシデントの中を見てみると、Detail の部分には%Detail%で渡した”TEST”という文字が登録されていることも確認できました。

XSOARコンソール2

Power Automate から SOAR のWeb APIをたたいてみた

XSOARには Web APIが用意されていて、コマンドプロンプトから以下のようなコマンドを実施すると、”palybookId”で指定したプレイブックを起動したり、”details”で指定した情報をインシデント情報として記録できます。(プレイブックのインプットデータとしても活用可能)

% curl -kv 'https://XX.XXX.XX.X:XXXX/incident' -X POST -H 'Authorization: XXXXXXXXXX' -H 'Accept: application/json' -H 'Content-Type: application/json,application/xml' -d '{"name": "test 20231201","type": "Access","owner": "admin","details": "http://k2-ornata.com/%22,%22playbookId": "59daa471-0cc5-495a-8567-1a252fd020c6"}'

この情報を元に Power Automate for Desktopの「Webサービスを呼び出します」を使って、同じ様に XSOAR にアクセスしてみました。

1.まずはChatGPTに相談

curlのコマンド情報からから Webリスクエストを作成してくれるサイトはいくつかあるようですが、どれも今一つだったので、そういえばと思い ChatGPT に相談してみました。(別のコマンドを相談した時のものですが。)

ChatGPT

上記は少し違うコマンドについて相談したときのものですが、かなりいい感じで答えてくれていることがわかります。

2.Power Automateを設定

そこで 上記の ChatGPT の回答も踏まえながら、以下の通り各パラメータを設定してみました。

Power Automate – Webサービスを呼び出します

3.レスポンスエラーへの対処(400, 403)

しかしながらすんなりとはいかず、SOARからの以下のようなレスポンスエラーが頻発しました。

{"id":"bad_request","status":400,"title":"Bad request","detail":"Request body is not well-formed. It must be JSON.","error":"unexpected EOF","encrypted":false,"multires":null}

こういったエラーが XSOAR から返ってくるようであれば、以下の3点を見直してみる必要があります。

<正しくWeb APIにアクセスするポイント>
1.Authorization: に認証情報が正しく設定されているか?
2.「要求本文」に記載したデータが正しく JSON フォーマットで描かれているか?
3.「詳細」設定にて以下の図の通り「要求本文をエンコードします」がOFFになっているか?

Power Automate – Webサービスを呼び出します(詳細)

特に2.のJSONフォーマットはかなりシビアな感じなので、念入りに確認する必要があります。たとえば以下のように同じ”でくくっているように見えて実は”になっていたりするので要注意です。

"59daa471-0cc5-495a-8567-1a252fd020c6”

これらを修正することで、ようやく正常に XSOAR にアクセスすることができました。

「PALO ALTO CORTEX XSOAR:A Practical Guide」はXSOAR初心者にやさしい唯一の本(だたし英語)

最近、XSOAR を触れる環境を手に入れたのですが、XSOAR については全くのど素人でしたので、右も左もわからない状態でした。

Youtube のXSOARに関するチャンネルをみたりもしていたのですが、そこで紹介されている手順が個人のPC環境ではなかなか手に入らない環境を前提としたものであり、実践が難しい状況でした。

そこで、参考になるものが他にないか探していたのですが、そんな中、英語ではありますが「PALO ALTO CORTEX XSOAR:A Practical Guide」という本がKindleで売られていることを発見しました。

まず本のサンプルでダウンロードしてみたところ、XSOAR 環境構築直後のコマンドラインやXSOARの中のPlaygroundを使った動作確認方法が書かれており、実際にそれを試したところ、コマンドの確認以上の効果を感じたので購入してみることにしました。

インシデントの取り込み方法をわかりやすく記載

SOARというとどうしてもPlaybookにフォーカスがあたりがちですが、この本ではそれを作成する前の

・マーケットプレイスからのインテグレーションの取り込み
・インテグレーションからインスタンスの作成
・インシデントタイプの作成
・データフィールドの作成
・分類(Classifier)やデータ・マッピング
・インスタンスへのインシデントタイプ、分類、マッピングの割当
・インシデントの取り込み

といったものが手順どおり1つ残らず記載されており、この通り進めていくだけで1〜日程度あればインシデントの取り込みまで完了することができます。

また当然ですが、上記以外にもPlaybookの作成やTIM(脅威情報マネジメント)の部分もしっかり書かれているようです。(まだ私はそこまでたどり着いていませんが。)

記載されている情報はやや古い

ただし、約1年前に発行された本のため、XSOAR ダッシュボードのGUIの記載については、ところどころ本の内容と実際の画面が異なっています。

もし上記の手順でひっかかってしまうことがあるとしたら、この画面の差異によるものかなと思います。

Gmail のフォルダからSpam報告メール取り込み

実際に私はこの本を見ながらXSOARでインシデント作成までの手順を実施してみましたが、XSOAR のインストールがすでに完了している状態だったので、半日かからずに完了することができました。

すこし手こずった部分があるとすると、先ほど触れた情報の古さの部分ですね。

また、私が英語を読み飛ばしてしまっただけかもしれませんが、ほんの一部、明確に記載がされていない部分があったようにも思います。

ただそれも、考えれば対応可能な範囲ですので概ね問題ないかと思います。

今後はこの本の後半戦の実践にチャレンジ

先ほど書いたように、私は今のところインシデントの作成の部分までしか読んで実践できていません。

これからもこの本を参考にしながら、そのインシデントをトリガとしたPlaybookの作成をしてみたいと考えています。