コンテンツにスキップ

最初のプレイブックを作成する🔗

以下は、Secureworks® Taegis™ XDR テンプレートエディターを使用して「Hello World」テンプレートを作成する手順です。

注意

このページで作成するテンプレートは、RequestBin Demoコネクターを使用します。その作成手順は最初のコネクターの定義に記載されています。先にこのカスタムコネクターを作成してから進めてください。

  1. ログインしてXDRにアクセスします。

  2. Taegis Menuから自動化→プレイブックに移動し、テンプレートタブを選択します。

  3. 右上のアクションプルダウンメニューからテンプレートを選択し、新しいテンプレートの作成を選びます。

  4. テンプレートの名前を定義します。この例では Hello World とします。

    ヒント

    名前フィールドの外側をクリックすると、その値がテンプレートに保存されます。

  5. 必要なテンプレート入力値を定義します。これらの値は、このテンプレートを利用したプレイブックの設定時や実行時に指定されます。入力値を定義するには、エディターのINPUTS & OUTPUTSタブを選択します。

    テンプレート入力値はYAML形式のJSONスキーマで定義します。この例では、configurationという入力オブジェクトと、userIdという文字列入力変数を定義します。入力値は以下のようになります。

    inputs:
      type: object
      properties:
        configuration:
          type: object
          properties:
            userId:
              type: string
              title: User ID
    
  6. このプレイブックで生成される出力値を定義します。

    テンプレート出力値もyaml形式のJSONスキーマで定義します。この例では、resultという1つの文字列出力を定義します。出力値は以下のようになります。

    outputs:
      type: object
      properties:
        result:
          type: string
    
  7. 入力値と出力値の両方がINPUTS & OUTPUTSタブに表示されているはずです。全体の値は以下のようになります。

    inputs:
      type: object
      properties:
        configuration:
          type: object
          properties:
            userId:
              type: string
              title: User ID
    outputs:
      type: object
      properties:
        result:
          type: string
    
  8. エディターのDSLタブに移動してテンプレート内のタスクを定義します。タスクは最初から最後まで順番に1つずつ実行されます。最初のタスクでは、変数を設定してこのタイプのタスクを示します。

  9. タスクの名前を定義して新しいタスクを追加します。

    - name: setup

  10. タスクのタイプを定義します。変数を設定するには、タスクタイプに let を使用します。

    - name: setup
      let:
    
  11. let タスクでは、1つまたは複数の変数や複雑なデータ構造(マップやリスト)を定義できます。この例では、status という単一の変数に started というハードコード値を設定します。

    - name: setup
      let:
        status: 'started'
    

    注意

    値をシングルクォートで囲むことで、その値が変数ではなくプレーンテキストとして処理エンジンに認識されます。

  12. RequestBin DemoコネクターのPostDataアクティビティ(関数)を実行します。このアクティビティは2つの入力値、userIdstatus を必要とします。

    • userId はテンプレート入力値から取得します。
    • status は前のタスクでハードコードされた値です。
  13. タスクの名前を定義して新しいタスクを追加します。

    - name: post_data
    
  14. タスクのタイプを定義します。コネクター関数を呼び出すには、タスクタイプに action を使用します。

    - name: post_data
      action: RequestBin_Demo.PostData
    
  15. このアクティビティが必要とする入力値を定義します。

    - name: post_data
      action: RequestBin_Demo.PostData
      inputs:
        userId: inputs.configuration.userId
        status: setup.variables.status
    

    このタスクの入力値は、2つの異なる場所から変数を参照しています。inputs.configuration.userId はこのテンプレートで定義した入力フィールドです。setup.variables.status はテンプレートの最初のタスクで設定した変数です。変数へのパスは <タスク名>.variables.<変数名> という形式です。

  16. テンプレートが生成する出力値を定義します。テンプレート出力構造はすでに定義されていますが、ここで値を設定する必要があります。テンプレート出力値を設定するには、tasksと同じ階層でoutputsオブジェクトを定義します。

  17. テンプレート出力構造で、result という単一の出力フィールドに文字列値を設定します。この値には post_data タスクの出力(boolean型)を使います。文字列値にするには式を使う必要があります。

    outputs:
      result: has(post_data, outputs.result) && post_data.outputs.result ? 'success' : 'failure'
    

    この式は has() マクロを使って、post_data タスクがoutputsにresult値を生成したかどうかを判定します。生成されていれば、result変数に割り当てられた値を確認します。result値が true なら success を、そうでなければ failure を返します。

    DSLタブの全体の値は以下のようになります。

    name: Hello_World
    tasks:
      - name: setup
        let:
          status: 'started'
      - name: post_data
        action: RequestBin_Demo.PostData
        inputs:
          userId: inputs.configuration.userId
          status: setup.variables.status
    outputs:
      result: has(post_data, outputs.result) && post_data.outputs.result ? 'success' : 'failure'
    
  18. このタスクはコネクターアクションを呼び出すため、このテンプレートで必要なコネクターを要件として定義する必要があります。そのためには、エディターのコネクタータブに移動します。

  19. コネクタータブで、このテンプレートが必要とするコネクターIDのリストを定義します。この例では、必要なコネクターは1つだけで、RequestBin_Demo です。

  20. 新しいタブでTaegisポータルにアクセスし、自動化 → 接続 → コネクターライブラリに移動します。RequestBin コネクターを検索し、RequestBin_Demo コネクターカードを選択して開きます。

  21. コネクターIDのコピーを選択してコネクターIDをコピーします。

  22. テンプレートエディターに戻り、コネクターIDをコネクターリストに追加します。

    connectors:
      - id: Q29ubmVjdG9yOjQzMWI5OGYyLWVlMjMtNGM0OS05MGRiLTEzYmI4YTk5ODY4Yg==
    
  23. テンプレートを保存します。テンプレートを下書きとして保存するには、名前を付けて保存を選択し、必要な項目を入力します。本番利用を推奨する場合は、公開を選択してテンプレートを公開バージョンとして保存します。