次の方法で共有


エージェント コンポーネント

重要

この記事の一部の情報は、市販される前に大幅に変更される可能性があるプレリリース製品に関するものです。 Microsoft は、ここに記載された情報に関して、明示または黙示を問わず、いかなる保証も行いません。

この記事では、カスタム Security Copilot エージェントの機能を定義し、その構造、動作、運用ロジックを理解するのに役立つ主要コンポーネントの概念的な概要について説明します。

エージェント

Security Copilotのエージェントは、特定の目標を達成するために機能する自己完結型の半自律型の計算エンティティです。 これは、その環境を認識して反応し、意思決定を行い、その目的を満たすために結果を生み出す能力によって定義されます。 エージェントの設計では、大規模言語モデル (LLM)、接続されたツール (スキル)、またはその両方のいずれを使用する機能を決定することで、その目標を達成する方法についてエージェントに通知します。 エージェントの決定は、その入力と指示によって導かれます。これにより、エージェントが定義済みのロジックを使用したり、LLM にそれらの命令を解釈して操作するように求めたりする可能性があります。

エージェントはトリガーを介してアクティブ化され、エージェント実行が作成され、結果が達成されるまで各ステップ (またはタスク) が実行されます。 エージェントの実行全体を通じて、手順に基づいて、LLM または接続されたツールを利用してタスクを完了するかを決定します。

エージェントは、次の 2 つの選択方法のいずれかを使用して、LLM とエージェントの指示以外のツール、外部リソースと対話できます。

  • 静的ツール: エージェント定義に記載されているように、エージェントが呼び出すために使用できる、個々のステップまたはエージェント全体の実行に使用できる固定のリソースセット。 このように定義されている場合、エージェント内の LLM は、定義されている以外のツールの呼び出しを決定できません。 これにより、速度とツールの結果の関連性が向上します。 定義済みのソースを呼び出す必要がある脅威インテリジェンス エージェントは、このように設計できます。

  • 動的ツール: ツール呼び出しは、エージェントへのコンテキスト、推論、または入力に基づいて、エージェントの実行中に選択されます。 エージェントで使用できるツールは、実行時に導入できます。 エージェントの実行で発生した条件に対応する必要があるエージェントは、このように設計できます。 たとえば、エンティティをエンリッチするエージェントは、エージェントへの入力として提供されるエンティティの種類に基づいて異なる方法で実行できます。

開発者とSecurity Copilotユーザーは、エージェントの目標に基づいて、ツールの選択にどちらの方法を使用してもエージェントを設計できます。 また、この目標は、エージェントの結果が個人、チーム、またはorganizationに対応しているかどうかを通知するのにも役立ちます。 エージェントが ID を使用して実行される場合、結果のスコープと ID のアクセス許可を調整する必要があります。

単純なアラート トリアージ エージェントを構築する場合でも、複雑な調査のためにマルチエージェント システムを調整する場合でも、この記事では、ツールの選択とマニフェスト設計からSecurity Copilotエージェント フレームワークを操作して構成とガバナンスをトリガーするために必要な基本的な知識を提供します。

Security Copilot内のエージェント コンポーネントの画像

手順

指示は、エージェントが目標を定義し、意思決定を通知し、その結果を詳しく説明するための指示です。 たとえば、トリアージ エージェントに重大度の高いインシデントに集中するように指示したり、特定のルールに従う情報のみをプルするようにデータ エージェントをガイドしたりできます。 手順は、エージェントが正確で一貫性を保つのに役立ちます。

ツール

ツール (スキル) は、Security Copilot エージェントがその結果を完了するために呼び出すことができるエージェントの指示と LLM の外部からアクセスされるリソースです。 ツールは、従来のプログラミング言語の関数と考えてください。 名前と引数がいくつかあり、呼び出されると、適切に定義されたタスクが実行され、結果が返されます。

ユーザーは、特殊なタスクを実行したり外部システムと対話したりするために呼び出Security Copilot目的のツールを作成できます。

以下に例を示します。

  • 「誰が登録したか」など、以前に見られないエンティティに関する解決または評判の質問に回答する www.contoso.com?'

  • "インシデント 1234 がユーザーに与える影響" などの顧客固有のデータに関する質問に回答する

  • 'testaccount@contoso.com のアカウント パスワードをリセットする' などの外部システムと対話します。

  • SharePoint などのナレッジ ソースから顧客固有のナレッジを取得します。

プラグイン

新しいプロンプト、プロンプトブック、またはエージェント機能の作成に関連する場合に、ユーザーがSecurity Copilotで有効にできる関連ツールのコレクション。 エージェントの場合、プラグインはエージェントと LLM の外部のリソースにアクセスできるようにすることで、エージェントができることを拡張します。 たとえば、API を使用して評判検索などの外部サービスに接続するプラグインです。このプラグインの基になるツール定義は、評判スコア、関連するマルウェア、脅威インテリジェンスなどを返す可能性があります。

ツール形式

Security Copilot プラットフォームでは、さまざまなニーズに合わせてツール (スキル) を作成およびホストする複数の方法がサポートされています。 サポートされているスキルのいずれかを使用してエージェントを構築できます。 サポートされているツール形式は次のとおりです。

ツール形式 最適な ユース ケースの例
API 外部システムまたは内部システムの統合 パスワード リセットの自動化、API からの脅威 intel のフェッチ、修復ワークフローのトリガー
GPT 基になる LLM でネイティブに使用できない自然言語処理の定義を提供します。 ドメイン固有の定義、インシデントを一意の形式で集計する
KQL Microsoft データ ソースのクエリ (Microsoft Defender、Microsoft Sentinel) サインイン ログを取得し、異常を検出する
エージェント 大規模言語モデル (LLM) と子ツールを使用したマルチステップ ワークフローの調整 調査のために複数のツールをチェーンする URL のホスティング状況を理解します。
MCP MCP サーバーによって公開される動的なマルチツール統合。セキュリティ copilot は実行時にツールを検出します。 MCP サーバーを介して、脅威 intel を集約するか、複数のツール間で修復を調整する。

エージェント定義

エージェント定義はエージェントのブループリントとして機能し、マニフェスト ファイルの重要なコンポーネントです。 これはマニフェストの最上位のキーの 1 つであり、エージェントのコア構成、機能、および動作を指定します。 次を指定します。

  • 説明/メタデータの詳細 (名前、説明など)。
  • エージェントの実行の原因となるイベントを記述するトリガー定義。
  • エージェントが作業を完了するために使用する関連ツールまたはツール参照。

Security Copilot開発者は、作成したエージェント定義をアナリストが実行して結果を確認できます。

エージェント インスタンス

エージェント インスタンスは、特定のワークスペース内のエージェント定義のデプロイ済みバージョンです。 各インスタンス:

  • 独自の ID または資格情報を保持します。
  • インスタンス固有のメモリとフィードバックを格納します。
  • 複数のテナントとワークスペースは、同じエージェント定義の独自のインスタンスを持つことができます。 1 つのインスタンスの構成の変更やメモリ更新は、他のインスタンスには影響しません。

マニフェスト

マニフェストは、エージェントの定義、ID、ツール、運用ロジックを構造化された YAML または JSON 形式で定義します。 従来のソフトウェア システムの構成ファイルと同様に、マニフェストは次を指定します。

  • エージェントの固有の目的とタスク
  • 一般的な運用ガイドライン
  • 意思決定ロジック
  • 呼び出す必要があるツール
  • 実行中に呼び出される可能性があるその他のエージェント

マニフェストには、エージェントが使用できるメタデータ (エージェントの定義とスキル)、それらのスキルのグループ化方法、実行できるアクションが含まれます。 マニフェスト ファイルは、Security Copilot プラットフォーム上のエージェントのワークフローの一部としてパッケージ化され、デプロイされます。 SOC アナリストはこのプラットフォームを介してエージェントと対話し、エージェントはマニフェストの構成とツール ロジックに基づいてプロンプトまたはイベントに応答します。

注:

この例では、人間が読み取りやすく、コメントを含めることができるため、YAML 形式が一覧表示されていますが、どちらの形式でも同様に機能します。 JSON 形式は YAML 形式と同じですが、代わりに JSON 構文を使用します。

エージェント YAML

これは、サンプル manifest.yaml ファイルの例です。


Descriptor:
  Name: Contoso.SecurityOperations.Samples-090925
  Description: DCA URL Geolocation Agent
  DisplayName: DCA URL Geolocation Agent

SkillGroups:
- Format: AGENT
  Skills:
  - Name: URL_Location_DCA_Agent_Entrypoint-090925
    Description: The entrypoint into the URL Location Agent
    Interfaces:
    - Agent
    Inputs:
    - Required: true
      Name: URL
      Description: A URL the agent should investigate
    Settings:
      Model: gpt-4.1
      Instructions: |
            <|im_start|>system
            You are an AI agent that helps a security analyst understand the hosting situation of a URL (the input).
            You'll do this by following a three-step process:
            1) Use ExtractHostname to find the hostname from the URL provided as input
            2) Use GetDnsResolutionsByIndicators to extract IP Addresses that the hostname has been observed resolving to. This may produce a list of IP Addresses.
            3) One-at-a time, use lookupIpAddressGeolocation to look up the geolocation of an IP address.

            Produce a simply formatted response telling the security analyst which locations that URL is being served from.  
            If you encounter an error share that.  
            Always return something the user knows that something happened.
            
            <|im_end|>
            <|im_start|>user
            {{URL}}
            <|im_end|>

    ChildSkills:
    - lookupIpAddressGeolocation
    - ExtractHostname_DCA-090925
    - GetDnsResolutionsByIndicators
- Format: GPT
  Skills:
  - Name: ExtractHostname_DCA-090925
    DisplayName: ExtractHostname_DCA-090925
    Description: ExtractHostname_DCA-090925
    Inputs:
    - Name: URL
      Description: A URL string
      Required: true
    Settings:
      ModelName: gpt-4.1
      Template: |-
        <|im_start|>system
        Return the hostname component of the URL provided as input.  For example:
        - If the input is 'https://www.mlb.com/', return 'www.mlb.com'
        - If the input is 'http://dev.mycompany.co.uk/sign-up/blah?a=12&b=12&c=32#23', return 'dev.mycompany.co.uk'
        - If the input is 'ftp:/x.espon.com', return 'x.espon.com'
        <|im_end|>
        <|im_start|>user
        {{URL}}
        <|im_end|>
- Format: KQL
  Skills:
    - Name: RecentUrlClicks_DCA-090925
      Description: Returns 10 recently clicked URLs
      Settings:
        Target: Defender
        Template: UrlClickEvents | sort by TimeGenerated desc | limit 10 | project Url

AgentDefinitions:
  - Name:  URLLocationAgent-090925
    DisplayName: URLLocationAgent
    Description: An agent to help an analyst understand URL hosting 
    Publisher: Contoso
    Product: SecurityOperations
    RequiredSkillsets:
      - Contoso.SecurityOperations.Samples-090925
      - ThreatIntelligence.DTI
      - DCA_SampleAPIPlugin
    AgentSingleInstanceConstraint: None
    Settings:
      - Name: LookbackWindowMinutes
        Label: Max Lookback Window in minutes
        Description: The maximum number of minutes to find clicked URLs
        HintText: You should probably enter 5
        SettingType: String
        Required: true
    Triggers:
      - Name: Default
        DefaultPeriodSeconds: 300
        FetchSkill: Contoso.SecurityOperations.Samples-090925.RecentUrlClicks_DCA-090925
        ProcessSkill: Contoso.SecurityOperations.Samples-090925.URL_Location_DCA_Agent_Entrypoint-090925

エージェントは、子スキルを呼び出す 3 つの手順に従います。

  • ExtractHostname: GPT ツール ExtractHostname_DCA-090925 を使用して、URL からホスト名を解析します。

  • GetDnsResolutionsByIndicators: Microsoft Threat Intelligence スキル セットを使用して、ホスト名に関連付けられている IP アドレスを取得します。 [ソースの管理] > [カスタム] でプラグインを有効にする必要があります。 GetDnsResolutionsByIndicators ツールが呼び出されないRequiredSkillsets: ThreatIntelligence.DTIを追加する必要があることを確認します。

  • lookupIpAddressGeolocation: OpenAPI 仕様の operationId です。これは、各 IP アドレスの位置情報データを検索するために API プラグイン DCA_SampleAPIPlugin で参照されます。 リファレンスについては、「 ビルド API サンプル」を参照してください。

トリガー

トリガーとは、エージェントのワークフローを開始するトリガーです。 手動で開始することも、スケジュールに従って実行するように設定することもできます。 トリガーがアクティブになると、エージェントはそのプランに従い、アクションを自動的に実行します。

エージェントは、構造化されたアクション 計画に基づいて動作し、その計画に対して実行します。 たとえば、フィッシングトリアージ エージェントは、事前に構成された機能のセットから呼び出すツールやその他のエージェントを決定できます。 トリガーで定義されている FetchSkill や ProcessSkill などのツールは、タスクの実行をガイドするエージェントのワークフローへのエントリ ポイントとして機能します。

次の例では、

Triggers:
      - Name: Default
        DefaultPeriodSeconds: 300
        FetchSkill: Contoso.SecurityCopilot.Samples-090925_1b.RecentUrlClicks_DCA-090925_1b
        ProcessSkill: Contoso.SecurityCopilot.Samples-090925_1b.URL_Location_DCA_Agent_Entrypoint-090925_1b
        Settings:

1.5 分ごとに、 RecentUrlClicks_DCA-090925_1b が呼び出されて新しいデータが取得されます。

2.その後、返された各アイテムで ProcessSkill URL_Location_DCA_Agent_Entrypoint-090925_1b が呼び出され、データに対して動作します。

これらの各サイクルはトリガー実行であり、ProcessSkill の各呼び出しはトリガー実行です。 これらのスキル呼び出しは、エージェント インスタンスとトリガーに関連付けられているセッションで実行され、エージェントの関連付けられた ID を使用します。

FetchSkill と ProcessSkill

FetchSkill

エージェントの実行でトリガーがアクティブ化されると、構成されている場合は FetchSkill によってデータが収集されます。 ProcessSkill は、実行中にそのデータに対するエージェントの動作を定義します。 データがフェッチされると、ProcessSkill が引き継ぎ、そのデータを入力として使用して特定のアクションまたは分析を実行します。 これら 2 つのコンポーネントは、動的なデータドリブン ワークフローを有効にするために連携して機能します。 FetchSkill 値が設定されている場合、トリガーは最初に FetchSkill を呼び出します。

重要

フェッチと ProcessSkills は、スキルセットによって名前空間化する必要があります。 形式 Skillset name.Skill nameに従う必要があります。

トリガーの例では、 Skill nameRecentUrlClicks_DCASkillset nameは Descriptor.name です (たとえば、Contoso.SecurityCopilot.Samples-090925_1b)。 そのため、完全修飾スキル名は Contoso.SecurityCopilot.Samples-090925_1bです。RecentUrlClicks_DCA。

ProcessSkill

FetchSkill が定義されている場合、出力オブジェクトごとに、ProcessSkill の入力として出力値を使用して ProcessSkill が呼び出されます。 FetchSkill が定義されていない場合、ProcessSkill が呼び出されます。

{
    [
        {
            "Incident": 1,
            "name": "Item One",
            "created_at": "2024-02-17T12:34:56Z"
        },
        {
            "Incident": 2,
            "name": "Item Two",
            "created_at": "2024-02-17T12:35:30Z"
        },
        {
            "Incident": 3,
            "name": "Item Three",
            "created_at": "2024-02-17T12:36:10Z"
        }
    ]
}

この例では、ProcessSkill は、 Incidentnamecreated_at を入力として 3 回呼び出されます。

ワークスペース

作業用のコンテナー。 エージェントは、ワークスペースのコンテキスト内で動作します。 ワークスペースは、アクセス、構成、消費、およびデータ処理の制御単位を提供します。

メモリ

メモリを使用すると、エージェントは対話の間でコンテキストを保持し、よりインテリジェントでパーソナライズされた応答を可能にします。 エージェントは、過去のアクション、ユーザー設定、インシデント履歴などの関連情報を格納することで、継続性を提供し、時間の経過と同時に意思決定を改善できます。