次の方法で共有


エージェント マニフェスト

重要

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

Security Copilot エージェントとそのツール (スキル) を開発するには、YAML 形式または JSON 形式 (manifest.yaml など) のマニフェスト ファイルが必要です。 このファイルは、ツール セット (プラグイン) に関するメタデータを定義し、各ツールを呼び出す方法を指定します。

エージェント マニフェストには、次の 3 つの最上位のキーが含まれています。

各キーには、サブキーと値のペアの独自のセットが含まれています。その一部は、ツールの形式に応じて必須/省略可能なフィールドです。

このリファレンス ガイドでは、エージェントの作成に使用できるマニフェスト フィールドSecurity Copilot概要を示します。

エージェント 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 サンプル」を参照してください。

サンプル

Samples コレクションの完全な一覧を参照してください。

対話型エージェントのエージェント サンプルについては、「 対話型エージェント」を参照してください。

マニフェスト YAML 構文

3 つの最上位キーとそのサブキーのエージェント マニフェスト パラメーター (フィールド) を次に示します。

記述子フィールドの概要

フィールド 種類 説明 制約 必須
Name string スキル セットの内部名。 ワークスペース内の一意の名前にする必要があります。 / , \ ? # @を許可しません。空白を含めることはできません。 はい
DisplayName string スキル セットの人間が判読できる名前。 いいえ*
Description string スキル セットの人間が判読できる説明。 null または空にすることはできません。 はい
Authorization object 承認値を設定します。 詳細については、「 認証 」を参照してください。 いいえ;API ツールに必要であり、Noneと等しくないSupportedAuthTypes
SupportedAuthTypes 配列 スキル セットでサポートされている認証の種類の一覧。 詳細については、「 認証 」を参照してください。 いいえ;API ツールに必要

(* は推奨を意味しますが、必須ではありません)

AgentDefinitions フィールドの概要

フィールド 種類 説明 制約 必須
Name string エージェントのインストールに使用される名前。 空白、ピリオド (.) を含めず、null または空にすることはできません。 はい
DisplayName string UI 表示のわかりやすい名前。 はい
Description string エージェントの目的と機能の人間が判読できる概要。 はい
Publisher string エージェントの発行元の名前。 はい
Product string エージェントに関連付けられているソース製品。 エージェント定義を列挙するときにフィルター処理に使用されます。 はい
RequiredSkillsets string エージェントが機能するために必要なスキルセット。 はい
AgentSingleInstanceConstraint string エージェントをデプロイできる場所を定義します。 NoneWorkspace、またはTenantに設定できます。
- None: 制限なし。
- Workspace: ワークスペースごとに 1 つのインスタンス。
- Tenant: テナントごとに 1 つのインスタンス。
いいえ
Settings object FetchSkill 呼び出しにのみ適用されます。 いいえ
Triggers object エージェントをトリガーする方法とタイミングを定義します。 少なくとも 1 つのトリガーが必要です。
  • Name: トリガーのわかりやすい名前。
  • DefaultPeriodSeconds: スケジュールされた実行の間隔 (秒単位)。 トリガーは同時実行を妨げるわけではありません。 スケジュールされた実行を無効にするには、この値を 0 に設定します。
  • FetchSkill: 設定すると、トリガーは最初にこのスキル (ツール) を呼び出します。 トリガーはオブジェクトの配列を受け取ります。 オブジェクトごとに、オブジェクトの値をProcessSkillへの入力として使用してProcessSkillを呼び出します。 一般的なパターンは、ListAlerts FetchSkill と、InvestigateAlertAgent ProcessSkill を使用することです。 トリガーの詳細については、「 エージェント コンポーネント」を参照してください。
  • Name: 空白文字を含めることはできません はい; NameProcessSkill
    PromptSkill object エージェントで対話機能またはチャット エクスペリエンスを有効にします。 はい;対話型エージェントにのみ適用されます。

    SkillGroups フィールドの概要

    FormatSettingsSkills を含むスキル グループのリストで構成されます。

    フィールド 種類 説明 制約 必須
    Format string 利用可能なオプションについては、「形式」セクションを参照してください。 はい
    Skills object オブジェクト構造については、スキル セクションを参照してください。 はい;形式: GPTAPIKQLAGENT
    Settings object オブジェクトの構造については、「設定」セクションを参照してください。 はい;形式: APIGPTKQLAGENT

    形式 (SkillGroups フィールド)

    Format フィールドのオプション:

    API
    GPT
    AGENT
    KQL
    LogicApp

    スキル (SkillGroups フィールド)

    Skills フィールドのオブジェクト構造:

    フィールド 種類 説明 制約 必須
    Name string このツールの内部名 (スキル) 空白文字とピリオド (.) を含めることはできません。 はい
    DisplayName string このツールの人間が判読できる名前。 推奨
    Description string このツールの人間が判読できる説明 null または空にすることはできません。 推奨
    Inputs object ツールへのユーザー入力に必要な、または省略可能なオブジェクトの名前、説明、およびオプションのオブジェクトの一覧。 いいえ
    Settings object スキル [形式] に基づいたカスタム設定。 はい
    ChildSkills 文字列の配列 実行中にエージェントが依存または呼び出すツール名の一覧。 ツールは特定のタスクを実行し、その目的を達成するためにエージェントによって呼び出されます。 複数のツールのチェーンまたは構成を有効にして、より複雑なエージェントの動作を構築できます。 いいえ;ただし、 FORMAT: AGENT スキルにのみ適用され、必要です。
    Interfaces object 対話型エージェントをビルドするときに InteractiveAgent に設定します。 はい
    SuggestedPrompts object
  • Prompt: ユーザーに表示する実際のプロンプト (スターター プロンプトの場合) または推奨されるプロンプトを生成するためのテンプレートとして使用します。
  • Title: プロンプトのタイトル。
  • Personas: プロンプトが配置されているペルソナ型。
  • IsStarterAgent: スターター プロンプトの場合は true に設定します。
    推奨事項: Starter と推奨されるプロンプトの最大 2 つの文に設定します。
  • はい;対話型エージェントにのみ適用されます。 TitlePersonas (スターター プロンプトにのみ必要)。

    設定 (SkillGroups フィールド)

    Settings フィールドのオブジェクト構造は、サポートされている Formats に対して次のとおりです。 スキル (ツール) サンプルについては、「 ツール のサンプル」を参照してください。

    API

    設定名 説明 制約 必須
    OpenApiSpecUrl string パブリック OpenAPI 仕様への URL。 はい
    EndpointUrl string パブリック エンドポイントへの URL。 いいえ;OpenAPI 仕様に記載されている API サーバーを使用しない場合にのみを指定します。
    EndpointUrlSettingName string プラグインのセットアップ中にパブリック エンドポイントの URL を要求するカスタマイズ可能な設定。 いいえ;API エンドポイントを構成可能にする場合にのみを指定します。
    EnableSkillContextApi bool これは、API ツールが SkillContext API にアクセスする必要がある場合にのみ設定します。 不要

    GPT

    設定名 説明 制約 必須
    ModelName string 使用する GPT モデルを選択します。 gpt-4.1 である必要があります はい
    Template 文字列 GPT プロンプト テンプレート。 最大 80,000 文字をサポート はい

    エージェント

    設定名 説明 制約 必須
    Instructions string エージェントの動作とミッションを定義するガイダンスまたは明確な指示。 このガイダンスは、エージェントの応答を操作し、意図したユース ケースに合わせて調整するために使用されます。 通常は自然言語で記述され、マークダウンやコメントなどの書式設定が含まれます。 はい

    KQL

    設定名 説明 制約 必須
    Target string ツールが実行されるシステムまたはプラットフォームを選択します。 「 ターゲット固有の設定」を参照してください。 はい
    Template string KQL プロンプト テンプレート。 最大 80,000 文字をサポートします。 TemplateUrlが指定されていない場合ははい。
    TemplateUrl string KQL プロンプト テンプレートをダウンロードするためのパブリック URL (最大 80,000 文字)。 はい。 TemplatUrlまたはTemplateを指定しますが、両方を指定しないでください。
    PackageUrl string KQL プロンプト テンプレートが含まれる zip ファイルのパブリック URL。 注: SkillGroup レベルで指定します。 TemplateまたはTemplateUrlが指定されていない場合ははい。
    TemplateFile string zip ファイル PackageUrl 内の KQL プロンプト テンプレートへの相対パス (最大 80,000 文字)。 PackageUrlが指定されている場合ははい。

    LogicApp

    設定名 説明 必須
    SubscriptionId string Logic Apps からの Microsoft Azure サブスクリプション ID。 サブスクリプションは、Security Copilot ユーザー テナントと同じテナントに存在する必要があります。 はい
    ResourceGroup string Microsoft Azure リソースが作成される Logic App のリソース グループ。 はい
    WorkflowName string ロジック アプリ リソースの名前。 はい
    TriggerName string Logic Apps で作成されたトリガーの名前。 はい

    ターゲット固有の設定

    • Microsoft Defender

      追加の設定はありません。

    • Microsoft Sentinel

      これらの設定は、ターゲットがMicrosoft Sentinelされている KQL ツールに対して有効です。

    Settings:
      Target: Sentinel
      # The ID of the AAD Organization that the Sentinel workspace is in.
      TenantId: '{{TenantId}}'
      # The id of the Azure Subscription that the Sentinel workspace is in.
      SubscriptionId: '{{SubscriptionId}}'
      # The name of the Resource Group that the Sentinel workspace is in.
      ResourceGroupName: '{{ResourceGroupName}}'
      # The name of the Sentinel workspace.
      WorkspaceName: '{{WorkspaceName}}'
    
    • Kusto

      これらの設定は、ターゲットが Kusto である KQL ツールで有効です。

    Settings:
      # The Kusto cluster URL. 
      Cluster: 
      # The Kusto database name.
      Database: 
    

    認証

    Security Copilotでは、ツールを認証するためのいくつかのスキームがサポートされています。 「認証の種類」を参照してください。 さまざまな認証の種類の例については、「 API プラグイン」を参照してください。

    配色 説明 Copilot マニフェストのサポート OpenAI サポート +
    None 認証なし はい はい
    Basic 基本認証 はい 不要
    ApiKey ApiKey ベースの認証。 ApiKey は、カスタム ヘッダーまたはクエリ パラメーターで渡されます。 はい はい*
    ServiceHttp 指定されたトークンに基づく認証。 はい はい
    OAuthAuthorizationCodeFlow OAuth 2.0 Authorization Code Flow は、ユーザーの資格情報を共有せずにサードパーティアプリケーションへのアクセスを許可するために使用される、より安全で複雑な認証方法です。 はい はい
    OAuthClientCredentialsFlow Basic Auth に似ていますが、代わりにサーバー間通信に使用されます。または、ユーザー固有のアクセス許可を必要としないパブリック データにアクセスする場合に使用されます。 はい 不要
    OAuthPasswordGrantFlow OAuth 2.0 パスワード許可の種類を使用して、ユーザーの資格情報をアクセス トークンと交換する従来の方法。 もうお勧めできません。 はい 不要
    AAD Microsoft Entraアプリケーションのみアクセスします。 はい はい*
    AADDelegated ユーザー + Microsoft Entra アプリケーションのみアクセスします。 はい はい*
    • +このフィールドは、Security Copilotでサポートされている 2 種類のアップロードを示すために使用されます。

    • * これらは、OpenAI で最初にサポートされていた方法を超えて拡張される認証方法を表します。

    認証の種類

    次の表は、各認証の種類でサポートされている設定を示しています。

    認証の種類 Setting 説明
    AAD または AADDelegated EntraScopes 要求する Microsoft Entra スコープのコンマ区切りリスト。
    Basic または OAuthPasswordGrantFlow Username 基本認証に使用するユーザー名。
    Password 基本認証に使用するパスワード。
    ApiKey Key ヘッダー/クエリ パラメーターの名前。 既定値は Authorization ですが、カスタム値を指定できます。 たとえば、X-ApiKey です。
    AuthScheme ヘッダーで使用する場合に Value の前に付加される認証スキームの名前。 使用可能なオプションは、空の文字列、ベアラー、または Basic です。
    Location API キーの場所 (ヘッダーまたは QueryParams)。 既定値は [ヘッダー] です。
    Value 使用するキー/トークン。
    ServiceHttp AccessToken 使用するキー/トークン。 ベアラー AuthScheme は、承認要求ヘッダーのトークンの前に付加されます。
    OAuthAuthorizationCodeFlow または OAuthClientCredentialsFlow または OAuthPasswordGrantFlow TokenEndpoint トークンを要求するエンドポイント。
    Scopes 要求するスコープのコンマ区切りリスト (省略可能)。
    ClientId トークンを要求するときに使用するクライアント ID。 OAuthPasswordGrantFlowの場合は省略可能です。
    ClientSecret トークンを要求するときに使用するクライアント シークレット。 OAuthPasswordGrantFlowの場合は省略可能です。
    AuthorizationContentType トークン要求の送信時に使用されるコンテンツ タイプ。 既定値は application/x-www-form-urlencoded です。
    OAuthAuthorizationCodeFlow AuthorizationEndpoint 承認コードを要求するエンドポイント。