使用英语阅读

通过


Microsoft 安全 Copilot 中的 KQL 插件

使用 Kusto 查询语言 (KQL) 查询创建功能强大的插件,以浏览数据和发现模式。

KQL 技能设置

常见设置

这些设置对所有 KQL 技能都是通用的。

Settings:
  # What type of KQL endpoint to connect to.
  # One of { Defender, Sentinel, LogAnalytics, Kusto }
  Target: Sentinel
  # A URL to download the KQL query template from.
  # Specify either TemplatUrl or Template but not both.
  TemplateUrl: https://gist.githubusercontent.com/NitinKumarGoel/c862ba63878dd2624acb1b0e260f409a/raw/3a527014757b4ee1f00302a1b34a13e7b83ff77a/gistfile1.txt
  # An inline KQL query template.
  # Specify either TemplatUrl or Template but not both.
  Template: |-
    SigninLogs
    | where UserDisplayName == '{{user}}' or UserPrincipalName == '{{user}}'
    | project TimeGenerated, OperationName, UserDisplayName, UserPrincipalName, Location, ResourceDisplayName, ConditionalAccessStatus, IsInteractive
    | top 100 by TimeGenerated desc

下表显示了可以为任何 KQL 技能目标配置的 settings

设置名称 类型 说明 必需
Template string KQL 提示模板。 最多支持 80,000 个字符。 如果未指定 TemplateUrl,则为是。
TemplateUrl string 用于从中下载 KQL 提示模板(最多 80,000 个字符)的公共 URL。 是。 指定 TemplatUrl 或 Template 其中一个,但不能同时指定两者。
PackageUrl string 包含 KQL 提示模板的 zip 文件的公共 URL。 注意:这是在 SkillGroup 级别指定的。 类似于 GPT 技能包url - 示例 是,如果未指定 Template 或 TemplateUrl。
TemplateFile string PackageUrl zip 文件中 KQL 提示模板(最多 80,000 个字符)的相对路径。 是,如果指定了 PackageUrl。

特定于目标的设置

目标:Sentinel

这些设置对 KQL 技能有效,其中 TargetSentinel

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

目标:Kusto

这些设置对 KQL 技能有效,其中 TargetKusto

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

示例

Descriptor:
  Name: SampleDefenderKQL
  DisplayName: My Sample Defender KQL Plugin
  Description: Skills to query email logs in M365 Advanced Hunting

SkillGroups:
  - Format: KQL
    Skills:
      - Name: GetLatestEmailsByRecipient
        DisplayName: Get Latest Emails By Recipient
        Description: Fetches the latest emails received by the user with the specified email address
        Inputs:
          - Name: email
            Description: The email address of the recipient
            Required: true
        Settings:
          Target: Defender
          Template: |-
            EmailEvents
            | where RecipientEmailAddress =~ '{{email}}'
            | project Timestamp, NetworkMessageId, SenderFromAddress, SenderDisplayName, Subject, DeliveryLocation
            | top 100 by Timestamp desc