Playbook Loops でタスクを自動化する
Playbook Loops 機能は、リストを反復処理し、アイテムごとに一連のアクションを 1 回実行する for-each ループに重点を置いています。
ハンドブック ループを使用すると、単一のアクションまたは一連のアクションを複数回実行して、エンティティなどの複数のアイテムを効率的に処理できます。これにより、複数のエンティティや他のデータ型で繰り返し手順を実行する必要がある場合に、アクションをカスタマイズしたり、アクションを手動で複製したりする必要がなくなります。ループ内にブロックを配置したり、ブロック内にループを埋め込んだりすることで、ワークフローを効率化することもできます。
サポートされているループタイプ
プレイブック ループは、次のデータ型の反復処理をサポートしています。
- エンティティ: アラート内のエンティティのリストを反復処理できます。
- リスト: ユーザー定義のアイテムのリストまたは動的に解決されたリストを、プレースホルダを使用して反復処理できます。
ループを構造化する
ハンドブックのループは、ループ開始ステップと、対応するループ終了ステップで構成されます。リスト内の各アイテムに対して繰り返すアクションは、この 2 つの手順の間に配置されます。
ループの開始
[ループの開始] ステップは、ループの開始を示し、その構成を含みます。
- ループに名前を付けるには、[ループの開始] ステップを使用します。この名前は、[ループ開始] ステップと [ループ終了] ステップの両方に表示されます。
- この手順では、[ループ] パラメータ(エンティティまたはリスト)を定義し、選択したタイプの特定の設定を構成します。
- このステップでは、ループが反復上限(現在は 100 回に制限されています)に達したときや、問題が発生したときのループの動作を構成できます。
- ループが正常に開始されると、チェックマークが表示されます。
ループ終了
ループ終了ステップは、ループのエンドポイントを示します。
- [ループ終了] ステップを直接編集することはできません。このステップの設定は [ループ開始] ステップに関連付けられています。
- ループがすべての反復を正常に完了すると、ループ終了ステップは成功ステータス(チェックマークで示される)を返し、JSON 結果には実行された反復の数が含まれます。
- すべてのアイテムを処理する前にループが停止した場合(最大繰り返し回数に達したため)、JSON 結果にはスキップされたアイテムのリストが含まれます。
ループ内のアクションを定義する
[ループ開始] ステップと [ループ終了] ステップの間に配置されたアクションは、繰り返し実行されます。条件付きアクションやブロックなど、標準のハンドブック アクションをこの領域にドラッグできます。
エンティティを反復処理するループ
デフォルトでは、ループがエンティティを反復処理するとき、そのループ内のアクションは各反復の現在のエンティティにのみ適用されます。このアクションは、ループの進行に合わせて一度に 1 つのエンティティを処理します。
エンティティを操作するアクション(VirusTotal - Enrich Hash など)の場合、アクションはループ内の現在のエンティティに自動的にスコープ設定されます。ループ内で使用されるエンティティ プレースホルダも、現在のループ エンティティのみを参照します。
これを説明するために、次のユースケースを考えてみましょう。 ハッシュをスキャンして、悪意のあるハッシュのチケットを作成する。
エンティティを反復処理する高度なループ
ユースケースによっては、現在の反復エンティティの情報と他のアラート エンティティの両方にアクセスする必要がある場合があります。これを行うには、その特定のループ アクションの [Lock scope to iteration] 切り替えをオフにします。
- 切り替えがオンの場合、エンティティ データとプレースホルダは現在のループ対象エンティティのみに制限されます。
- 切り替えがオフの場合、エンティティ データとプレースホルダは、[エンティティ] メニューの構成に基づいて、すべてのアラート エンティティにアクセスできます。
Entity
プレースホルダを使用して、アラート全体のエンティティ データにアクセスします。Loop.Entity
を使用して、現在のループ エンティティのみを参照します。
この例として、ユーザーの役職に基づいて悪意のあるファイルの優先度の高いチケットを作成するユースケースを考えてみましょう。
リストを反復処理するループ
ループでは、定義されたリスト内の各アイテムに対して一連のアクションを実行できます。次の操作を行うことができます。
- リストを直接定義するか、リストに解決されるプレースホルダを使用します。
- 必要に応じて区切り文字(カンマやスラッシュなど)をカスタマイズします。
Loop.item
プレースホルダを使用して、反復処理されたアイテムを参照します。
これを説明するために、パスワードの漏洩についてユーザーに通知するというユースケースを考えてみましょう。
ループ内のブロックを操作する
ハンドブック ブロックをループ内に直接含めることができます。ブロックがループにドラッグされると、ループが処理するアイテムまたはエンティティごとにアクションが 1 回実行されます。
ループがエンティティを反復処理する場合、ブロックには [反復処理にスコープをロック] 切り替えが含まれます。この切り替えは、ブロック アクセス エンティティ内のアクションがデータにアクセスする方法を制御します。
- オンの場合: ブロック内のすべてのステップは、その特定のループの反復処理における現在のエンティティにスコープ設定されます。これにより、ブロック内のエンティティ プレースホルダとアクションは、そのイテレーションの関連データに対してのみ動作します。
- 切り替えをオフにする: ブロック内のステップは、すべてのアラート エンティティにアクセスできます。ブロックは、親ループで処理されているエンティティだけでなく、アラートからすべてのエンティティを受け取ります。この場合、メニューに
loop.entity
プレースホルダが表示され、反復処理されたエンティティへのアクセスにのみ使用できます。
ブロック内のループを操作する
ループをハンドブック ブロック内に配置して、ブロックのロジックの一部として繰り返しタスクを実行できます。これにより、プレイブックのスコープ付きセクション内のアイテムまたはエンティティを反復処理できます。
ブロック内でループを構成するプロセスは、プレイブックで他のループを設定するプロセスと同じです。
詳細については、Playbook ループ アクションを構成するをご覧ください。
Playbook Loop アクションを構成する
Playbook ループ アクションを設定する手順は次のとおりです。
- [ナビゲーション] メニューで、[レスポンス] > [ハンドブック] に移動します。
- 変更するプレイブックを開くか、新しいプレイブックを作成します。
- [+ ステップの選択を開く] をクリックします。
- [ループ] タブをクリックします。
- [For Each Loop] アクションをハンドブック キャンバスにドラッグします。これにより、ループ開始ステップとループ終了ステップが自動的に作成され、その間にアクションを追加するための指定領域が作成されます。
- [ループ開始] を構成します。
- [ループ開始] ステップをクリックして、[For Each Loop] サイド ドロワーを開きます。
- [パラメータ] タブで、ループ処理の対象(エンティティまたはリスト)を選択します。
- エンティティ: エンティティの範囲([すべてのエンティティ]、[不審なエンティティ]、カスタム範囲)を選択します。
- リスト: [アイテム] フィールドに、アイテムのリストを手動で入力するか、プレースホルダを使用して入力します。項目を区切るための区切り文字(カンマやスラッシュなど)を定義します。
- [設定] タブで、ループの動作を構成します。
- アクション タイプ: [自動](すぐに開始)または [手動](ユーザー操作が必要)を選択します。
- ステップが失敗した場合、または反復処理の最大回数を超えた場合: 残りのアイテムをスキップして続行するか、ハンドブックを停止するかを選択します。
- ループの前後にアクションを追加して、データを準備したり、ループの結果を処理したりします。
制限事項
承認リンクは、プレイブック ループ内ではサポートされていません。
ビューとハンドブックのループを操作する
このセクションでは、カスタム ウィジェットと事前構築済みウィジェットでビュー内のプレイブック ループからの情報を表示する方法について説明し、ループで生成されたデータの可視化に関する重要な側面について説明します。
カスタム ウィジェット
内部ループステップからプレースホルダを直接参照することはできませんが、ループの実行中に結果を集計してウィジェットに表示することはできます。集計結果をカスタム ウィジェットに表示するには、ループ内でコンテキスト値を使用します(たとえば、ツールのパワーアップから [コンテキスト値に追加] アクションを使用します)。
事前構築済みウィジェット
Google は、ハンドブック デザイナーでサポートされているアクションとシームレスに統合される事前構築済みのウィジェットを提供しています。サポートされているアクションをハンドブック デザイナーにドラッグすると、関連するビルド済みウィジェットがシステムによって提案されます。これらのウィジェットは、ループ内で使用されている場合でも、アクションに直接接続します。
ハンドブック シミュレータのループ
ハンドブック シミュレータは、ループとブロックを含むハンドブックの詳細な可視化を提供します。また、ブロック内のループやループ内のブロックなど、入れ子構造もサポートしています。シミュレータ ビューア内では、ステップが上から下(古い順)に表示され、最新のアクティビティを表示するために自動的にスクロールされます。
詳細については、Playbook Simulator を使用するをご覧ください。
ケースの概要
ループを含むプレイブックが実行されると、その進行状況と各イテレーションの結果に関する情報が、[ケース] ページの複数の領域に表示されます。
以降のセクションでは、ウィジェット、プレイブック ビューア、ケースウォールでこれらのループに関連する情報を表示する方法について説明します。
Widgets
[ケースの概要] の事前構築済みウィジェットは、対応するアクションの結果です。アクションがループ内で実行される場合、ウィジェットは動的に更新され、最新のループ イテレーションの結果が表示されます。
ハンドブック ビューア
ループを含むハンドブックを実行すると、ハンドブック ビューアで各イテレーションの進行状況と結果を追跡できます。これにアクセスするには、ケース内の関連するアラートを選択し、[ハンドブック] タブをクリックします。
プレイブック ビューアには、ループとブロックが階層構造で表示されます。この構成により、ネストされたプロセスのフローを可視化し、各ステップのコンテキストを理解できます。
プレイブック ビューアでは、次の操作を行うことができます。
- ループのステップはグループ化されているため、各イテレーションを確認します。
- イテレーション間を移動して、個々の結果を確認します。
- ループ内のステップを選択すると、サイド ドロワーに反復回数が表示されます。
- [結果を表示] をクリックすると、ループ名と反復回数が表示されます。
ケースウォール
ループの各イテレーションの結果は、イテレーション番号などのループの表示とともに、[ケースウォール] に表示されます。これにより、各イテレーションで実行されたアクションを追跡して区別できます。
ユースケースの例
このセクションでは、プレイブック ループを使用してさまざまなタイプのワークフローを自動化する方法の具体的な例を示します。
ハッシュをスキャンし、悪意のあるハッシュのチケットを作成する
このユースケースでは、次の手順を行います。
- VirusTotal を使用して、アラート内のすべてのファイルのハッシュをスキャンします。
- 悪意のあるファイルとして特定されたファイルごとに一意のチケットを自動的に作成します。
次の手順でハンドブックを作成します。
プレイブックを作成する手順は次のとおりです。
- VirusTotal - Enrich Hash アクションをハンドブック キャンバスにドラッグし、ループを追加する前に構成します。
- [For Each Loop] をキャンバスにドラッグします。
- [ループ開始] をクリックします。
- [パラメータ] タブで、[ループ処理] タイプとして [エンティティ] を選択します。
- [エンティティ] メニューから [不審としてマークされたすべてのエンティティ] を選択します。このステップでは、ループの実行が、前のステップの VirusTotal - Enrich Hash アクションによって不審とマークされたエンティティのみにスコープ設定されるようにします。
- チケットを作成アクションをループにドラッグします。このアクションの正確な名前と構成は、使用されているチケット発行システムの統合によって異なります。
- [Create Ticket] アクションの構成で、次の操作を行います。
- 「
Malicious File Detected
」などのチケットのタイトルを入力します。 - [説明] フィールドで、プレースホルダ メニューを使用して、ループ内の現在のエンティティに関する詳細情報(
Entity.Identifier
やEntity.Type
など)を挿入します。不審なエンティティに関連付けられている VirusTotal 拡張機能から、関連情報をすべて含めます。
- 「
VirusTotal が悪意のあるものとして識別したファイルハッシュごとに、関連する詳細情報を含む一意のチケットが作成されます。
ユーザーの役職に基づいて悪意のあるファイルの優先度の高いチケットを作成する
このユースケースでは、悪意のあるファイルを特定した後(前のユースケースで説明したとおり)、ファイルに関連付けられた内部ユーザーの役職に「CEO」が含まれているかどうかに基づいて、優先度の異なる新しいチケットを作成します。
始める前に、前のユースケースの初期手順を完了していることを確認してください。
- ループの前に、すべてのファイル ハッシュ エンティティをターゲットとする VirusTotal - Enrich Hash アクション。
- スコープが [不審としてマークされたすべてのエンティティ] に設定されたエンティティを反復処理する For Each Loop アクション。
悪意のあるファイルの優先度付きチケットを作成する手順は次のとおりです。
- ループ内に条件付きアクションを追加します。
- [Lock scope to iteration] 切り替えをオフにすると、ループされたエンティティに加えて、他のアラート エンティティにもアクセスできるようになります。
- [Entities] メニューから [Internal Users] を選択します。
Entity.job
にCEO
が含まれているかどうかを確認する条件を構成します。このアクションにより、優先度が [CRITICAL] に設定されます。CEO
が関与しないシナリオを処理するには、ELSE ブランチを使用します(これにより、優先度が HIGH に設定されます)。- [Create Ticket] アクションを最初のブランチにドラッグします。
- タイトルを作成します(例:
CRITICAL: Malicious File Detected - Potential CEO Impact
)。 - インシデントの優先度を [CRITICAL] に設定します。
- [説明] フィールドに、ユーザーに関する関連情報と VirusTotal 拡充からの情報を含めます。
- 別の [チケットを作成] アクションを [ELSE] ブランチにドラッグします。
- タイトルを作成します(例:
Attention: Malicious File Detected
)。 - インシデントの優先度を [HIGH] に設定します。
- [説明] フィールドに、ユーザーに関する関連情報と VirusTotal 拡充からの情報を含めます。
プレイブックは、悪意のあるファイルごとに、関連付けられている内部ユーザーの役職を確認します。タイトルに CEO
が含まれている場合は、優先度が CRITICAL のチケットが作成されます。それ以外の場合は、優先度「高」のチケットが作成されます。
漏洩したパスワードについてユーザーに通知する
データ漏洩検出ソリューションは、最近のデータ漏洩でパスワードが不正使用されたユーザー名(メールアドレス)のリストを提供します。すべてのユーザーに 1 通のメールを送信するのではなく、影響を受ける各ユーザーにパーソナライズされたメール通知を送信したい。影響を受けるユーザーのリストは、alert.affected_users フィールドで確認できます。
次の手順でハンドブックを作成します。
- [For Each] ループ アクションをハンドブック キャンバスにドラッグします。
- [ループ開始] ステップをクリックします。
- [パラメータ] タブで、[ループ処理] のタイプとして [リスト] を選択します。
- [Items] フィールドで、
alert.affected_users
プレースホルダを使用します。 alert.affected_users
のリストでカンマ以外の区切り文字を使用している場合は、[区切り文字] フィールドでその区切り文字を更新します。- [メール - メールを送信] アクションをループにドラッグします。
- [メール - メール送信] アクションの構成で、次の操作を行います。
- [Recipients] フィールドで、
Loop.Item
プレースホルダを使用します。リストループがalert.affected_users
リストを反復処理するとき、Loop.Item
プレースホルダは処理中の現在のメールアドレスを表します。これにより、各ユーザーに一意のメールが送信されます。 - パスワードが漏洩したことをユーザーに通知するメールの件名と内容を構成します。
- [Recipients] フィールドで、
alert.affected_users
リスト内の各ユーザー(メールアドレス)に、パスワードが漏洩したことに関するパーソナライズされたメール通知が届きます。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。