プレイブックは、セキュリティイベントを識別、分類、評価、および対応するために使用される、事前に定義された論理フローまたはスクリプトです。プレイブックには、特定の操作を実行し、セキュリティ脅威の有無を判断し、それらにどのように対応し、軽減するかを決定するための一連のステップが含まれています。さまざまなセキュリティニーズに合わせて、異なるセキュリティイベントの種類とレベルに応じてプレイブックをカスタマイズおよび設定できます。プレイブックを応答オーケストレーションに使用することで、セキュリティ応答の効率と一貫性が向上します。
基本概念
プレイブックの種類
Security Center は、2 種類のプレイブックを提供します。
Predefined Playbook:Security Center は、一般的なセキュリティ脅威シナリオとソリューションに基づいた組み込みのプレイブックを提供します。これらのプレイブックは設定なしで直接使用できます。また、定義済みプレイブックをコピーしてカスタムプレイブックとして保存することもできます。その後、必要に応じてカスタムプレイブックを変更できます。これにより、カスタムプレイブックの設定の複雑さが軽減されます。
Custom Playbook:複雑で高度にパーソナライズされたセキュリティ脅威シナリオのために、Security Center は柔軟なカスタムプレイブックを提供します。フローエディターを使用して、さまざまなコンポーネントを自由に設定し、自動化されたセキュリティ応答ソリューションを簡単に実装できます。
プレイブックのパラメーター (入力および出力パラメーター)
入力パラメーターは、プレイブックをトリガーする条件を定義します。異なる条件を選択すると、デバッグ用のパラメーターサンプルもそれに応じて変更されます。
出力パラメーターは、プレイブックの実行後に出力されるフィールドを定義します。後続のノードはこれらのフィールドを使用できます。また、setOutput アクションを使用して、これらのフィールドを他のプレイブックから参照できるようにすることもできます。構文は `${event.parameter_path}` です。
説明カスタム出力パラメーターに加えて、システムはデフォルトのシステムパラメーターを提供します。詳細については、「プレイブックのシステムパラメーター」をご参照ください。
カスタムプレイブック設定フローチャート
フローエディターの説明
ビジュアルフローエディターを使用して、プレイブックフローの作成、変更、デバッグ、公開ができます。次の表に、フローエディターの主要部分を説明します。

順序数 | 説明 |
1-メニューバー |
|
2-フローノード | 各フローに必要な基本コンポーネントで、外部要因に依存しません。各フローには開始点として開始ノードが必須であり、複数の終了ノードを持つことができます。詳細については、「システムコンポーネント」をご参照ください。 |
3-コンポーネントアクションとプレイブック |
|
4-キャンバスエリア | キャンバスエリアです。追加したいコンポーネントをキャンバスエリアにドラッグし、それらの論理関係に基づいて接続します。
|
5-デバッグエリア | デバッグ または右下の
|
カスタムプレイブックの設定手順
ステップ 1:プレイブックの基本情報の作成
Security Center コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。コンソールの左上隅で、保護したいアセットが配置されているリージョンを選択します:Chinese Mainland または Outside Chinese Mainland。
Custom Playbook タブで、スクリプトの新規追加 をクリックします。
スクリプトの新規追加 パネルで、Playbook Name と Playbook Description を入力し、OK をクリックします。
Predefined Playbook タブに移動し、適切なプレイブックを見つけて、[操作] 列の Copy をクリックして、定義済みプレイブックを新しいカスタムプレイブックとしてコピーすることもできます。
ステップ 2:プレイブックフローの設定
ステップ 1 でプレイブックの基本情報を作成した後、自動的にプレイブックフロー設定ページにリダイレクトされます。カスタムプレイブックリストページの [操作] 列にある 編集 をクリックして設定ページに移動することもできます。
プレイブックの入力および出力パラメーターの設定
[プレイブック編集] ページで、右上隅の [設定] をクリックします。設定パネルで、Input & Output Settings をクリックします。
説明各フローには開始ノードと終了ノードが必要です。各フローは 1 つの開始ノードしか持てませんが、複数の終了ノードを持つことができます。

Input & Output Settings パネルで、プレイブックの入力および出力パラメーターを設定します。詳細については、「プレイブックのパラメーター (入力および出力パラメーター)」をご参照ください。
応答フローのオーケストレーション
これはプレイブックのコア部分です。異なる操作を表すコンポーネントをキャンバスにドラッグし、接続する必要があります。このトピックでは、DataFormat コンポーネントを例として使用します。他のコンポーネントのパラメーター設定方法については、「フローコンポーネントの説明」をご参照ください。
重要開始ノードはノード名として event を使用します。そのため、プレイブックのオーケストレーション中にコンポーネントの名前を event に設定しないでください。
必要に応じて複数のフローコンポーネントを選択し、それらの間にコンテキスト関係を確立できます。
コンポーネントアクションの選択
左側の [基本コンポーネント] セクションで、DataFormat コンポーネントを選択します。joindata や convertToJSON などの適切なアクションを選択し、キャンバスにドラッグします。
コンポーネントパラメーターの設定
キャンバスエリアで、選択した DataFormat コンポーネントをクリックするか、Basic Information 設定ページの [アクション設定] モジュールで
をクリックしてパラメーター設定ページを開きます。詳細については、「DataFormat コンポーネント」をご参照ください。定数、変数パラメーター、システムパラメーター、および式を入力できます。詳細については、「コンポーネントパラメーターとノード実行フロー」をご参照ください。
パラメーター設定を手動で入力することもできます。入力ボックスで、ドロップダウンリストからノードパラメーターを選択して、対応する構文を生成できます。次の図に例を示します。

コンポーネントの設定が完了したら、左上のメニューバーにある 保存 をクリックします。
警告保存せずに終了すると、編集したフロー情報は失われます。
ステップ 3:フローのデバッグ
プレイブックを設定した後、フローが正しく、スムーズに実行されることを確認するためにデバッグする必要があります。
ブレークポイントの設定 (オプション):
説明:複雑なフローの特定の部分を検証するために、コンポーネントにブレークポイントを設定できます。デバッグ中、フローはブレークポイントの前のノードまで実行され、一時停止します。これにより、中間結果を確認できます。
重要フローに複数のブランチがある場合、システムはブレークポイントが設定されているブランチのみをデバッグします。
同じブランチに複数のブレークポイントが設定されている場合、最後のブレークポイントのみが有効になります。
手順:フローノード上の
アイコンをクリックして、ブレークポイントとして設定します。
デバッグの実行
左上隅の
デバッグボタンをクリックして [デバッグパラメーター] パネルを開き、デバッグ ボタンをクリックします。説明デバッグパラメーターの設定は、プレイブックに設定された入力パラメーターの種類によって異なります。
パラメーターサンプルの読み込み:
Example をクリックします。
View Sample Input ページで、Load Sample をクリックします。
パラメーターの変更:必要に応じてパラメーターを変更し、OK をクリックします。
説明システムは、パラメーターの変更を支援するためにより直感的な Visual Mode を提供します。
デバッグ結果の表示
ノード上の
アイコンまたはデバッグエリアの 実行ログ をクリックして、ノードの詳細な入力データ、出力データ、および実行ステータスを表示します。次の表に、いくつかの出力パラメーターを説明します。パラメーター名
説明
datalist
結果のプレビューデータ。
重要最大 3 つのプレビューデータエントリが表示されます。完全なデータを表示するには、[完全な出力結果] タブに移動します。
total_data_successful
実行中に正常に処理されたデータの量。
total_data
実行中に処理されたデータの総量。
total_exe_successful
現在のアクションが正常に実行された回数。
total_exe
現在のアクションが実行された総回数。
total_data_with_dup
実行中に正常に処理された後の重複排除後のデータ量。

ステップ 4:保存と公開
デバッグが成功した後、左上のメニューバーにある [公開] ボタンをクリックして、プレイブックを公開バージョンに変換します。
プレイブックの使用
公開されたプレイブックのみが自動応答ルールとセキュリティイベント処理に使用できます。
プレイブックがトリガーされた後、生成された応答ポリシーとタスクを [レスポンスセンター] で表示するか、プレイブックの詳細ページで 実行レコードを表示できます。
自動応答ルールへのバインド:この方法は、特定のアラートへの応答を自動化するために使用されます。詳細については、「自動応答ルール」をご参照ください。
イベント処理中の手動実行:手動分析が必要な複雑なセキュリティイベントの場合、イベント処理センターでプレイブックを手動でトリガーして、応答操作を支援できます。詳細については、「Agentic SOC セキュリティイベントの評価と処理」の スクリプトの実行 セクションをご参照ください。
直接実行:応答オーケストレーション ページの Predefined Playbook および Custom Playbook タブで、対象のプレイブックを見つけ、操作する 列の Run をクリックして、プレイブックフローを一度実行します。
その他の操作
プレイブックのロールバック
公開されたプレイブックを以前のバージョンに戻したい場合は、ロールバック操作を実行できます。以下の手順でその方法を説明します。
Custom Playbook タブで、ロールバックしたいプレイブックを見つけます。[操作] 列の 詳細 をクリックします。詳細ページで、[基本情報] タブに移動し、公開履歴セクションでプレイブックの過去のバージョンを表示します。
テストの実行 (オプション):ロールバックしたいバージョンを選択し、[操作] 列の 表示 をクリックしてプレイブックタブに移動します。[入力パラメーター (実行)] エリアで、ロールバックバージョンのテスト実行を完了します。
ロールバックしたいバージョンを選択し、[操作] 列の ロールバックして編集する または ロールバックしてリリースする をクリックします。
ロールバックしてリリースする:編集ページのドラフトバージョンを選択したバージョンで上書きし、公開します。
ロールバックして編集する:編集ページのドラフトバージョンを選択したバージョンで上書きします。
公開バージョンからロールバックすると、保存されているドラフトバージョンが上書きされる可能性があります。ロールバックする前に、バージョン間のフローの違いを慎重に評価してください。
プレイブックのインポート
JSON ファイルのみインポートできます。
フローエディターのメニューバーで、More をクリックし、ドロップダウンリストから [JSON のインポート] をクリックします。
インポートページで、インポートしたい JSON ファイルをアップロードし、[OK] をクリックします。

プレイブック実行レコードの表示
プレイブックリストで、プレイブック ID または [操作] 列の 詳細 をクリックして、プレイブック詳細ページに移動します。履歴実行レコード タブで、基本的な実行レコードを表示できます。
プレイブックを使用してイベントやセキュリティアラートを処理すると、システムは対応するプレイブック実行レコードを自動的に生成します。
プレイブック名の変更
プレイブックリストで、プレイブック ID または [操作] 列の [詳細] をクリックして、プレイブック詳細ページに移動します。Basic Information タブで、プレイブック名の横にある 編集 ボタンをクリックします。
定義済みプレイブックの名前は変更できません。
プレイブック名は一意である必要があります。
プレイブックの実行とデバッグに関する一般的なエラーコード
エラーコードは、プレイブックのオーケストレーション中に発生するエラーと、コンポーネントの実行中に発生するエラーの 2 種類に分類されます。
プレイブックのオーケストレーションに関連するエラーコード
エラーメッセージ | 説明 | トラブルシューティングと解決策 |
The filter condition for node [%s] is invalid. It must include data from the data list of node [%s]. | フィルターノードの条件判断設定が正しくありません。設定には、フィルターしたいノードデータが含まれている必要があります。 | ノードからデータをフィルター処理する際は、フィルター条件にノードのデータ変数と対応する条件が含まれていることを確認してください。 |
The start node has no downstream configuration. | 開始ノードに子孫ノードが定義されていません。 | 開始ノードに子孫ノードを定義してください。 |
The node [nodeName] has no downstream nodes defined. | 共通ノードに子孫ノードが定義されていません。 | 共通ノードに子孫ノードを定義してください。 |
The resource in node [node] does not exist. | リソースインスタンスが設定されていますが、そのリソースインスタンスは存在しません。 | 既存のリソースインスタンスを選択してください。 |
The resource in node [node] is required but not configured. | リソースインスタンスが設定されていません。 | リソースインスタンスを選択して設定してください。 |
Multiple nodes have the same name [nodeName]. | 重複したノード名が存在します。 | 重複したノード名を見つけ、各ノード名が一意になるように修正してください。 |
The path [path] defined in node [node1] is invalid because the child flow supports only the `${<subTask>.curLoop}` and `${<subTask>.curIndex}` formats. | 子フローで、子フローの名前を使用して取得される変数の形式が正しくありません。現在、子フローでは `${<subTask>.curLoop}` と `${<subTask>.curIndex}` のみがサポートされています。 | 子フローのパラメーターの変数定義を確認し、正しくない変数定義を修正してください。 |
The path [node2.path] defined in node [node1] is invalid because node [node2] does not exist. | ノードのパラメーターで、変数が参照するノードが存在しません。 | 参照されたノードが存在しないか、削除されました。変数を再設定するか、存在しないノードを追加する必要があります。 |
The path [node2.path] defined in node [node1] is invalid because node [node2] is not an ancestor node of the current node. | ノードのパラメーターで、変数が存在するノードを参照していますが、それは現在のノードの先祖ノードではありません。 | 先祖ノードから変数を参照してください。 |
コンポーネントの実行に関連するエラーコード
エラーコード (errCode) | エラーメッセージ (errMsg) | トラブルシューティング |
sophon.Internal.Error | An internal system error occurred. | パラメーターまたはリソース設定を確認してください。詳細については、エラーメッセージを表示するか、ヘルプデスクにお問い合わせください。 |
component.Internal.ParamError | Component parameter error. | コンポーネントに設定されたパラメーターが正しいか確認してください。 |
component.Abnormal.InvokeError | Component execution error. | コンポーネントの内部実行中にエラーが発生しました。詳細については、エラーメッセージを表示するか、ヘルプデスクにお問い合わせください。 |
filter.Abnormal.Fail | The data does not meet the filter condition. Check whether the filter condition is correctly set. | データがフィルター条件を満たしていません。フィルター条件が正しく設定されているか確認してください。 |
securityGroup.Internal.HostIsOutside | Hosts outside the cloud cannot use security groups to block IP addresses. | ブロックするホストがクラウド外のホストでないことを確認してください。 |
securityGroup.Internal.NumberExceedLimit | The number of security groups or security group rules exceeds the limit. | ホストに関連付けられているセキュリティグループの数またはセキュリティグループルールの数が制限を超えていないか確認してください。 |
sts_openapi.Internal.ParamError | ParamError: The parameters of your request are invalid. | コンポーネントの実際の入力パラメーターが正しいか確認してください。 |
sts_openapi.Internal.WafRuleError | VerifyRuleCountExceed: The number of rules exceeds the limit. | WAF のカスタムルールの数が制限を超えています。 |
sts_openapi.Internal.DefenseTemplateNotExist | Defense.Control.DefenseTemplateNotExist: The protection template does not exist. | WAF テンプレートが存在しません。WAF テンプレートが誤って削除されていないか確認してください。 |
sts_openapi.Internal.DefenseTemplateBindUnbindResourceInvalid | Defense.Control.DefenseTemplateBindUnbindResourceInvalid: The resource to which the template is to be bound is unavailable. | WAF テンプレートをリソースにバインドできませんでした。関連付けられたリソースが利用可能か確認してください。 |
sts_openapi.Internal.DefenseResourceRelationExist | Defense.Control.DefenseResourceRelationExist: The resource to which the template is to be bound is already bound to another template. | WAF テンプレートをリソースにバインドできませんでした。関連付けられたリソースが既に別のテンプレートにバインドされていないか確認してください。 |
sts_openapi.Info.DefenseSceneNotSupported | Defense.Control.DefenseSceneNotSupported: This protection scenario is not supported. | WAF のバージョンが低すぎて、カスタムルール機能をサポートしていません。 |
sts_openapi.Internal.ErrorAddressGroupExist | ErrorAddressGroupExist: The address group already exists. | Cloud Firewall アドレス帳の名前が既存のものと競合しています。 |
sts_openapi.Internal.PermissionError | NoPermission: The caller does not have permission. | ユーザーには関連リソースを変更する権限がありません。 |
sts_openapi.Internal.CFWRuleError | acl or expand acl count exceed. | Cloud Firewall のルール数が制限を超えています。 |
sts_openapi.Internal.InvalidSecurityGroupId | InvalidSecurityGroupId.NotFound: The specified SecurityGroupId does not exist. | セキュリティグループが存在しません。セキュリティグループが誤って削除されていないか確認してください。 |
sts_openapi.Internal.ErrorParametersGroupAddress | ErrorParametersGroupAddress: The IP address in the address group is invalid. | 現在の IP アドレス帳は利用できません。 |
sts_openapi.Internal.notBuyUser | not buy user: The user has not purchased the product. | ユーザーは Cloud Firewall 製品を購入していません。 |
sts_openapi.Internal.Throttling | The error message contains the throttling or Throttling keyword, which indicates API throttling. | クラウド製品の OpenAPI 操作がスロットリングされています。 |
python.Info.aegis2 | The process does not exist. | プロセスが存在しません。 |
python.Internal.aegis3 | The process PID and path do not match. | プロセスの PID とパスが一致しません。 |
python.Internal.aegis4 | Process permission denied. | プロセスを処理する権限がありません。 |
python.Info.aegis5 | The file does not exist. | 処理するファイルが存在しません。 |
python.Internal.aegis6 | The file MD5 values are inconsistent. | 処理するファイルの入力 MD5 値が実際の MD5 値と一致しません。 |
python.Internal.aegis7 | File permission denied. | ファイルを処理する権限がありません。 |
python.Internal.aegis8 | The object file exists and the MD5 values are inconsistent. | オブジェクトファイルが存在し、MD5 値が一致しません。 |
python.Internal.aegis9 | The backup file does not exist. | 処理するファイルのバックアップファイルが存在しません。 |
python.Internal.aegis10 | No fencing record is found. | 関連するファイルの隔離レコードが見つかりません。 |
python.Internal.aegis11 | The AliYunDun process cannot be terminated or fenced. | AliYunDun プロセスは終了または隔離できません。 |
python.Internal.aegis91 | The host information does not exist. | ホスト情報が存在しません。 |
python.External.Fail | Python script error. | Python スクリプトの実行時にエラーが発生しました。詳細については、エラーメッセージを表示するか、ヘルプデスクにお問い合わせください。 |
python.External.Data | Python component input format error. | Python コンポーネントの入力形式でエラーが発生しました。詳細については、エラーメッセージを表示するか、ヘルプデスクにお問い合わせください。 |