ハンドブックでフローを使用する
対応しているプロダクト:
このドキュメントでは、Flow コンポーネントが、分岐システムを使用して意思決定を行い、プレイブックの次のステップを指示する方法について説明します。
条件フローは、ハンドブックが意思決定を行うために不可欠です。受信したアラートデータ、以前のアクションの結果、ユーザー入力に基づいて、ケースを異なるパスにルーティングします。
次のフロー オプションを使用できます。
- 条件: プレースホルダ、既存のケースデータ、前のアクション フローに基づく複雑な条件。
- 多肢選択式問題: アナリストが手動で回答する必要がある質問。
条件フローを追加する
このセクションでは、条件フローを使用して、プレイブック内に動的な分岐ロジックを作成する方法について説明します。
1 つの条件フローを追加する
単一の条件フローを追加する手順は次のとおりです。
- [レスポンス] > [ハンドブック] ページで、[ステップの選択を開く] をクリックします。
- [ステップの選択] で、[フロー] セクションを選択します。
- ハンドブックの作成方法に応じて、条件をステップまたは 2 つのアクションの間にドラッグします。
- 条件をダブルクリックしてダイアログを開きます。
- 必要なエンティティを選択します。プレースホルダを使用している場合、プレースホルダはこのエンティティ グループにスコープ設定されます。
- 作成するブランチの数を決定します。各ブランチの間には OR があります。
- 次のように、各ブランチのパラメータを選択して追加します。
- 既存のプレースホルダのリストから、評価する関連するプレースホルダを選択します。新しいユーザーの場合、アラートをまだ取り込んでいない場合は空になります。
- 必要な演算子を選択します([次と等しい]、[次を含まない] など)。
- 値を選択します。
- 条件が失敗しないように「フォールバック ブランチ」を定義します。条件が以前のアクションに基づいており、それらのアクションのいずれかが失敗(スキップ)した場合、条件は停止せずにフォールバック ブランチに進みます。フォールバック ブランチを選択するには、フォールバック ブランチを定義するをご覧ください。
- [保存] をクリックします。ハンドブックは 1、2、E(Else)の 3 つのブランチに分岐します。
- (少なくとも)1 つのブランチの結果を設定して、ハンドブックを完了としてマークします。
多肢選択式の質問フローを追加する
- [選択式問題] 条件を [最終ステップ] ボックスにドラッグします。
- [Multi-Choice Questions] をクリックしてダイアログを開きます。
- 必要な数の回答を含む質問を追加します。
- [保存] をクリックします。プレイブックは 4 つのブランチを開きます。
- 少なくとも 1 つのブランチの結果を設定して、完了マークを付けます。
条件フローを追加する
条件フローを追加する手順は次のとおりです。
- [条件] を [最終ステップ] ボックスにドラッグします。
- [条件] をクリックしてダイアログを開きます。
- 作成するブランチの数を決定します。各ブランチの間には OR があります。
- パラメータを追加する: 必要なパラメータを選択します。このリストには、このプレイブックのアクション スクリプトの結果のみが表示されます。
- 必要な演算子([次に等しい/次に等しくない]、[次を含む/次を含まない]、[次から始まる]、[次より大きい/次より小さい])を選択します。
- 値(アクションの結果)を選択します。
- 各ブランチにパラメータを追加し、論理演算子(AND または OR)を選択できます。
- [保存] をクリックします。Playbook は、1、2、Else の 3 つのブランチを開きます。
- ハンドブックを完了するには、少なくとも 1 つのブランチの結果を設定します。
フォールバック ブランチを定義する
- いずれかのフロー(条件)で、フォールバック ブランチとして使用するブランチを選択します。この例では、Branch – not risky を使用しています。フォールバック ブランチを追加する必要はありません。
- ハンドブックの実行時に、以前のアクションが失敗すると、ハンドブックはフォールバック ブランチを選択して続行します。
ステップの失敗を管理する
ハンドブックの手順は実行中に失敗することがあります。デフォルトでは、ハンドブックはステップが失敗した場合に停止するように設計されています。これは、不完全または不正確なデータで続行することを防ぐための重要な安全メカニズムです。ただし、ステップが期待どおりの結果を返さなくても、プレイブックを続行したい場合があります。これは、検索対象のデータがすべてのケースに存在するとは限らないエンリッチメント アクションに特に当てはまります。ハンドブックを停止するか、次のステップにスキップするかを決定できます。失敗したステップが意思決定に不可欠な場合は、次のステップで前のステップが失敗したかどうかを確認し、それに応じて処理方法を決定できます(たとえば、ステップが失敗した場合は、フォールバック ブランチに移動します)。
失敗時にスキップ
アクションが失敗した場合にステップをスキップするように構成できます。この設定を有効にすると、アクションの実行が失敗したり、エラーが返されたりした場合でも、ハンドブックは次のステップに進みます。
この設定を有効にする手順は次のとおりです。
- アクション ブロックをダブルクリックして、設定ドロワーを開きます。
- [設定] タブで、[ステップが失敗した場合] セクションに移動します。
- [手順をスキップ] を選択します。
高度なエラー処理に条件を使用する
「失敗した場合にスキップ」オプションは基本的なケースではうまく機能しますが、より堅牢な方法は、条件フローを使用して専用のエラー処理パスを作成することです。これにより、ステップが失敗した場合に、アナリストへの通知やエラーのロギングなど、別の処理セットをハンドブックで実行できます。
エラー処理パスを作成する手順は次のとおりです。
- 失敗する可能性があり、特定の失敗パスを定義するアクションの後に、条件フローブロックを追加します。
- [条件] ブロックをダブルクリックして、ダイアログを開きます。
- [設定] タブに移動し、[前の操作が失敗した場合] セクションで、フローをどのブランチに転送するかを選択します。重要: [前の操作が失敗した場合] 条件は、単に前の操作が失敗したかどうかをチェックするのではなく、現在の条件の評価で使用されている結果を持つ前の操作が失敗したかどうかをチェックします。その依存アクションが失敗した場合、条件を決定できず、フローは選択されたブランチに転送されます。これにより、依存関係が失敗して条件が解決されないケースを処理できます。
- この失敗ブランチでは、通知メールの送信、タスクの作成、失敗のロギングなどのアクションを追加できます。
たとえば、ユーザーの所有者の解決を試みるプレイブックを考えてみましょう。ユーザー所有者の解決アクションが失敗した場合(たとえば、ユーザーが Active Directory に存在しない場合)、プレイブックは停止しません。代わりに、条件ブロックが障害を検出し、フローを別のブランチに転送します。このブランチでは、欠落したデータについてセキュリティ チームにメールを送信し、プレイブックが中断することなく実行を継続できるようにします。<
フローを削除する
プレイブック内からフローを削除すると、ブランチ全体を削除するか、ブランチの 1 つの側面だけを削除するかを確認するメッセージが表示されます。
ブランチを統合する
ハンドブックの異なるブランチを 1 つのブランチに統合できます。これを行うには、ブランチの 1 つからアクションをドラッグして、別のブランチの [最終ステップ] ボックスにドロップします。プレイブックは、この後も続行することも、ここで終了することもできます。
条件での論理演算子の仕組み
このセクションでは、プレイブックの条件演算子が、単一または複数のアイテム(アラートのエンティティやイベントなど)を含むフィールドを評価する方法について説明します。フィールドが文字列かリストかを理解することは、プレイブックのロジックにとって非常に重要です。
条件の評価におけるデータ型の役割
演算子の動作(Equals、Contains)はデータ型によって異なります。
- 単一アイテムのコンテキスト: 1 つのエンティティを含むアラートの
[Entity.Identifier]などのフィールドは、単一の文字列として扱われます。 - 複数項目のコンテキスト: 複数のエンティティを含むアラートの同じフィールドは、文字列のリストです。
equals と contains の演算子の動作
以降のセクションでは、これらの演算子の仕組みについて説明します。
Equals 演算子
Equals 演算子は 2 つの値を直接比較します。
- 単一アイテム フィールド(文字列)は、完全一致をチェックします。
[Entity.Identifier]が"Tom"であると仮定します。- この場合、条件
if [Entity.Identifier] equals "Tom"は True になります。
- 複数項目のフィールド(リスト)は、リスト全体が指定された文字列と等しいかどうかを確認します。リストは単一の文字列と等しくなることはありません。
[Entity.Identifier]がリスト(Tom, Kai)であると仮定します。- この場合、条件
if [Entity.Identifier] equals "Tom, Kai"は常に False になります。これは、[Entity.Identifier]がリストで、「Tom, Kai」が文字列であるためです。
Contains 演算子
Contains 演算子もデータ型によって変化します。
- 単一アイテム フィールド(文字列)は、部分文字列検索を実行します。文字列に値が含まれている場合は
Trueを返します。[Entity.Identifier]が"user-1234"であると仮定します。- この場合、条件
if [Entity.Identifier] contains "user"は True になります。
- 複数項目のフィールド(リスト)では、リスト内の項目の完全一致が確認されます。部分文字列検索は実行されません。
[Entity.Identifier]がリスト("UserA@corp.com", "UserB@corp.com")であると仮定します。- この場合、条件
if [Entity.Identifier] contains "corp"は False になります。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。