Communityライティング&編集github.com

microsoft/azure-kusto-irql-graph

IRQLグラフ関数をKQLまたはIRQLのクエリ結果に適用し、Kusto Explorerで可視化します。Lift_To_Graphマッピングを生成し、Graph_Render_View、Graph_Fold_By_Property、Extract_Node_*、Enrich_Node_*、Enrich_Graph_*の呼び出しを構成します。

azure-kusto-irql-graph とは?

このスキルは、Kusto Explorerのグラフ可視化機能を強化するために設計された、IRQLグラフ関数ファミリーを適用する専門的なツールです。指定されたKQLまたはIRQLのクエリ結果を入力として、Lift_To_Graphマッピングを自動生成し、ノードのフォールディング、抽出、エンリッチメントなどのグラフ関数を適切に構成します。これにより、開発者やセキュリティアナリストは、クエリ結果を直感的なアイコンデコレーション付きのグラフに変換し、ネットワークトラフィックの分析や認証イベントの可視化など、複雑な関係性を迅速に把握できます。Azure MCP Serverを介して動作し、Kusto Explorerデスクトップアプリケーション上で視覚化をレンダリングします。ただし、このスキルは一般的な自然言語からKQL/IRQLへの変換ツールではなく、既存のクエリ結果をグラフ可視化に特化して変換するものです。ネイティブなグラフ分析(make-graph、graph-match、最短経路など)が必要な場合は、別のスキル(azure-kusto-graph)を使用する必要があります。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/microsoft/agent-skills/tree/main/.github/plugins/azure-kusto-graph-skills/skills/azure-kusto-irql-graph

Installed? Explore more ライティング&編集 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

IRQLグラフ関数 -- クエリ結果を可視化へ

IRQLグラフ関数ファミリーを表形式の結果に適用します。KQLまたはIRQLクエリとユーザーのグラフ記述が与えられた場合、Lift_To_Graphマッピングを生成し、Kusto Explorerでグラフを可視化、フォールド、抽出、またはエンリッチするために必要なストアドグラフ関数のみを構成します。ソースクエリはIRQLを使用する必要はありません。

スコープとルーティング

リクエスト使用先
指定されたKQL/IRQLの行をアイコンデコレーション付きのビジュアルグラフに変換このスキル: Lift_To_Graph + Graph_Render_View
ノードのフォールド、またはExtract_Node_*、Enrich_Node_*、Enrich_Graph_*の適用このスキル
make-graph、graph-match、最短経路、連結成分、グラフモデル、スナップショットの使用azure-kusto-graph
自然言語から非自明なKQL/IRQL調査クエリの作成KustoまたはIRQLクエリ生成スキル、次にこのスキル

リクエストが可視化とネイティブグラフ分析を混合している場合は、リフト/レンダリング部分にこのスキルを使用し、演算子のセマンティクスにはazure-kusto-graphを使用してください。ユーザーがネイティブグラフ演算子を要求しない限り、グラフリフト関数を手動で構築されたエッジ優先グラフに置き換えないでください。

入力契約

  • 推奨される入力: 表形式の結果を生成する動作するKQL/IRQLクエリと、目的のノード、エッジ、ラベル、アイコン、抽出、エンリッチメント、またはフォールドの自然言語による説明。
  • このスキルは自然言語からKQLまたはIRQLへの変換ツールではありません。既存のクエリ結果をグラフ可視化に変換します。一般的なNL-to-KQLまたはNL-to-IRQL変換には、専用のクエリ生成スキル(別途利用可能)を使用してください。
  • 指定されたクエリの取得、結合、フィルター、集計を保持します。グラフマッピングに必要な射影または合成IDのみを追加します。
  • 基本的な自然言語ソースリクエストは、既知の1つのテーブルまたはIRQL Get_*セレクターに直接マッピングされ、明白な列と単純なフィルターを持つ場合にのみサポートされます。想定されるソースを明記し、結合、スキーマ、または調査ロジックを発明しないでください。
  • 非自明なクエリ構築には、最初に別のKusto/IRQLクエリ生成スキルを使用し、次にその出力にこのスキルを適用してください。
  • クエリも出力スキーマも利用できず、ソースが自明でない場合は、マッピングを生成する前にKQLクエリまたはその結果列を要求してください。

アクティベーショントリガー

ユーザーが次のことを行った場合にこのスキルを使用します。

  • KQL/IRQLの結果を提供し、IRQLグラフの可視化またはマッピングを要求する
  • Lift_To_Graph、Graph_Render_View、またはGraph_Fold_By_Propertyに言及する
  • Kusto Explorerでのアイコンデコレーション付きノード/エッジマッピングを要求する
  • 共有プロパティによるノードのフォールド/折りたたみを希望する
  • Extract_Node_*、Enrich_Node_*、またはEnrich_Graph_*を通じたグラフ抽出またはエンリッチメントを要求する

graph-match、グラフパス/コンポーネント、永続グラフ、または一般的なmake-graph構築のみのためにこのスキルをアクティベートしないでください。これらはazure-kusto-graphに属します。

自然言語からKQL/IRQLへの変換ツールではありません。 入力は通常、結果をグラフ可視化する必要がある動作するKQLまたはIRQLクエリである必要があります。基本的なNLソースリクエストは、自明な単一テーブル/セレクターの場合にのみ機能します。一般的なNL-to-KQLまたはNL-to-IRQLには、専用のクエリ生成スキル(別途利用可能)を使用してください。

環境

  • クラスター: https://kc7001.eastus.kusto.windows.net
  • データベース: ValdyTimes、JoJosHospital(グラフ関数が事前デプロイ済み)
  • レンダリング: Kusto Explorerデスクトップアプリ(make-graph可視化ウィンドウ)
  • ツール: kusto_query(Azure MCP Server経由)

関数プリフライト

Lift_To_GraphおよびGraph_Render_Viewはストアド関数であり、組み込みのKusto演算子ではありません。ターゲットデータベースに対してリフトパイプラインを生成または実行する前に、デプロイされているものを確認してください。

.show functions
| where Name in~ ("Lift_To_Graph", "Graph_Render_View", "Graph_Fold_By_Property")
| project Name
  • Lift_To_GraphとGraph_Render_Viewは必須です。
  • Graph_Fold_By_Propertyは、フォールドが要求された場合にのみ必須です。
  • 使用する前にExtract_Node_*、Enrich_Node_*、またはEnrich_Graph_*関数を確認してください。利用できない場合はオプションのエンリッチメントを省略します。ただし、ユーザーがそのデプロイを希望する場合は除きます。
  • 必須関数が欠落しており、データベースを変更する権限がある場合は、デプロイ前にユーザーに確認を求めてください。次に、references/DEPLOY_IRQL_FUNCTIONS.mdの.create-or-alter function定義を使用します。関連する.create-or-alterブロックを実行し、プリフライトチェックを再実行して確認します。
  • 変更権限がない場合は、欠落している関数をユーザーに伝え、手動デプロイのためにreferences/DEPLOY_IRQL_FUNCTIONS.mdを参照するように指示してください。

IRQLグラフ関数ファミリー

Lift_To_Graph(T, mappingJson)

任意の表形式KQL結果を、統一されたノード+エッジテーブルに変換します。

入力: 任意のテーブルT + JSONマッピング文字列。 出力: EntityType = "node"または"edge"の行。make-graphの準備ができています。

Graph_Render_View(T)

Lift_To_Graphの出力を受け取り、ノード/エッジを分割し、make-graphを呼び出してKusto Explorerのグラフウィンドウを開きます。

Graph_Fold_By_Property(T, NodeType, PropertyName)

指定されたプロパティ値を共有する特定のタイプのノードを単一のノードに折りたたみます。エッジを自動的に再配線します。

グラフ抽出およびエンリッチメント関数

これらは追加のストアド関数であり、ターゲットデータベースに既にデプロイされている必要があります。references/DEPLOY_IRQL_FUNCTIONS.mdにはバンドルされていません。パイプラインに含める前に、.show functionsを使用して可用性を確認してください。

関数操作キープロパティ
Extract_Node_Email_Sender_Domain(T, displayName)ノードプロップにDomainを追加EmailSender
Extract_Node_Employee_Firstname(T, displayName)ノードプロップにFirstnameを追加Name
Extract_Node_Event_Network_Domain(T, displayName)ノードプロップにDomainNameを追加Url
Enrich_Node_Ip_Employee(T, displayName)従業員情報をIPノードに追加ClientIp
Enrich_Node_Username_Employee(T, displayName)従業員情報をユーザーノードに追加Username
Enrich_Node_Event_Authentication_Username(T, displayName)認証コンテキストを追加Username
Enrich_Node_Ip_Domain(T, displayName)DNSドメインを追加ClientIp
Enrich_Node_Ip_Event_NetworkOutbound(T, displayName)送信イベントを追加ClientIp
Enrich_Graph_Ip_Employee(T, mappingJson)従業員ノードでグラフを拡張ClientIp
Enrich_Graph_Username_Employee(T, mappingJson)従業員ノードでグラフを拡張Username
Enrich_Graph_Event_Authentication_Username(T, mappingJson)認証ノードで拡張Username

マッピングJSONスキーマ

JSONマッピングには、node_typesとedgesの2つの配列があります。

node_types[]

フィールド必須説明
typeはいノードタイプラベル(例:"User"、"Host"、"IP")
idはいノードIDのプレフィックス。通常はtypeと同じ
keyはいノードのIDとなる列名
propsはいノードプロパティとして保持する列の配列
defaultsいいえnull/空のプロパティのフォールバック値のオブジェクト
defIconいいえこのノードタイプのデフォルトアイコンURL
displayNameいいえ表示ラベルに使用する列(デフォルトはid)
colorいいえ色を取得する列
sizeいいえサイズを取得する列

edges[]

フィールド必須説明
typeはいエッジタイプラベル(例:"AuthenticatesTo"、"SentEmail")
sourceはい{"id": "<prefix>", "type": "<NodeType>"}
targetはい{"id": "<prefix>", "type": "<NodeType>"}
propsいいえエッジプロパティとして保持する列の配列
displayNameいいえエッジラベル用の列
colorいいえエッジカラー用の列

アイコンリポジトリ

https://raw.githubusercontent.com/benc-uk/icon-collection/master/azure-icons/のアイコンを使用します。

  • IP: Public-IP-Addresses-(Classic).svg
  • ホスト/VM: Virtual-Machine.svg
  • ユーザー: Users.svg
  • メール: Mailbox.svg(またはazure-cds/command-1070-Mail.svg)
  • プロセス: App-Services.svg
  • ファイル: Storage-Accounts.svg
  • アラート: Activity-Log.svg
  • ドメイン: DNS-Zones.svg

マッピング生成ルール

指定されたクエリ列とユーザーのグラフ記述に基づいて、次のようにマッピングJSONを生成します。

  1. エンティティを特定 -> 個別の名詞ごとにnode_typeになる
  2. 関係を特定 -> 動詞/前置詞ごとにedgeになる
  3. 列にマッピング -> 指定されたクエリが生成する実際の列を使用します。利用できない列を想定しないでください。
  4. 方向を設定 -> sourceはアクター、targetは作用される側
  5. プロパティを追加 -> 調査に関連する列(タイムスタンプ、結果、ハッシュ)を含めます
  6. アイコンを割り当て -> 上記のアイコンセットからエンティティタイプに基づいて選択します

列リファレンス(IRQL統一スキーマ)

エンティティキー列利用可能なプロップ
ユーザーUsernameUsername、Name、Role、Email
ホストHostnameHostname
IPClientIpClientIp
メールメッセージSubjectEnvTime、Subject、Verdict、Url
送信者EmailSenderEmailSender、Domain
受信者EmailRecipientEmailRecipient
プロセスProcessNameEnvTime、ProcessName、ProcessCommandLine、ProcessHash
ファイルFilenameEnvTime、Filename、Path、Sha256
ドメインDomainNameDomainName
認証イベント(合成ID)EnvTime、UserAgent、Result、Description

関数選択

  1. 指定されたKQL/IRQL表形式パイプラインから開始します。
  2. Lift_To_Graph(mapping)を使用してグラフエンティティを作成します。
  3. 要求され、マップされたキーと互換性がある場合にのみ、Extract_Node_*、Enrich_Node_*、またはEnrich_Graph_*を追加します。
  4. グループ化/折りたたみが要求された場合にのみGraph_Fold_By_Property()を追加します。
  5. 視覚出力はGraph_Render_View()で終了します。
  6. パイプライン用に選択された正確なストアド関数をプリフライトします。

パイプラインパターン

// 1. 指定されたKQLまたはIRQLクエリを保持
<input query>
// 2. グラフにリフト
| invoke Lift_To_Graph(<mapping_json>)
// 3. オプションでグラフエンティティを抽出またはエンリッチ
| invoke <Extract_Node_* | Enrich_Node_* | Enrich_Graph_*>()
// 4. 要求された場合、オプションでノードをフォールド
| invoke Graph_Fold_By_Property("<NodeType>", "<PropertyName>")
// 5. レンダリング
| invoke Graph_Render_View()

例

追加のプロンプトと実際の例については、references/EXAMPLES.mdを参照してください。

認証グラフ:IP -> AuthEvent -> User -> Host

入力クエリ: Get_Event_Authentication_All | where Result == "Failed Login" | take 200

グラフリクエスト: "IP、認証イベント、ユーザー、ホストを表示し、結果でイベントをフォールドします。"

let auth_mapping = '{"node_types":[{"type":"SrcIp","id":"SrcIp","key":"ClientIp","props":["ClientIp"],"defaults":{},"defIcon":"https://raw.githubusercontent.com/benc-uk/icon-collection/master/azure-icons/Public-IP-Addresses-(Classic).svg"},{"type":"Host","id":"Host","key":"Hostname","props":["Hostname"],"defaults":{},"defIcon":"https://raw.githubusercontent.com/benc-uk/icon-collection/master/azure-icons/Virtual-Machine.svg"},{"type":"User","id":"User","key":"Username","props":["Username"],"defaults":{},"defIcon":"https://raw.githubusercontent.com/benc-uk/icon-collection/master/azure-icons/Users.svg"},{"type":"AuthEvent","id":"AuthEvent","key":"AuthEventId","props":["AuthEventId","EnvTime","UserAgent","Result","Description"],"defaults":{"Result":"unknown"},"defIcon":"https://raw.githubusercontent.com/benc-uk/icon-collection/master/azure-icons/Activity-Log.svg"}],"edges":[{"type":"RequestsAuth","source":{"id":"SrcIp","type":"SrcIp"},"target":{"id":"AuthEvent","type":"AuthEvent"},"props":["EnvTime"]},{"type":"TargetsUser","source":{"id":"AuthEvent","type":"AuthEvent"},"target":{"id":"User","type":"User"},"props":["EnvTime"]},{"type":"AgainstHost","source":{"id":"AuthEvent","type":"AuthEvent"},"target":{"id":"Host","type":"Host"},"props":["EnvTime"]}]}';
Get_Event_Authentication_All
| extend AuthEventId = strcat(Username, "_", Hostname, "_", EnvTime)
| where Result == "Failed Login"
| take 200
| invoke Lift_To_Graph(auth_mapping)
| invoke Graph_Fold_By_Property("AuthEvent", "Result")
| invoke Graph_Render_View()

メールグラフ:送信者 -> メッセージ -> 受信者

入力クエリ: Get_Email_All | take 400

グラフリクエスト: "送信者からメッセージ、受信者へのフローを可視化し、判定でメッセージをフォールドします。"

let mail_mapping = '{"node_types":[{"type":"EmailMessage","id":"Message","key":"Subject","props":["EnvTime","Subject","Verdict"],"defaults":{},"defIcon":"https://raw.githubusercontent.com/benc-uk/icon-collection/master/azure-icons/Media-File.svg"},{"type":"Sender","id":"Email","key":"EmailSender","props":["EmailSender"],"defaults":{},"defIcon":"https://raw.githubusercontent.com/benc-uk/icon-collection/master/azure-cds/command-1070-Mail.svg"},{"type":"Recipient","id":"Email","key":"EmailRecipient","props":["EmailRecipient"],"defaults":{},"defIcon":"https://raw.githubusercontent.com/benc-uk/icon-collection/master/azure-cds/command-1070-Mail.svg"}],"edges":[{"type":"SentBy","source":{"id":"Message","type":"EmailMessage"},"target":{"id":"Email","type":"Sender"},"props":["EnvTime","Verdict"]},{"type":"DeliveredTo","source":{"id":"Message","type":"EmailMessage"},"target":{"id":"Email","type":"Recipient"},"props":["EnvTime","Verdict"]}]}';
Get_Email_All
| take 400
| invoke Lift_To_Graph(mail_mapping)
| invoke Graph_Fold_By_Property("EmailMessage", "Verdict")
| invoke Graph_Render_View()

不審なドメイン調査(エンドツーエンド)

基本的なソースリクエスト: "これらの不審なドメインに対して送信ネットワークイベントを使用し、従業員名でエンリッチされたIP-to-ドメイン接続をグラフ化します。"

これは制限されたフォールバックです:1つの既知のセレクター、1つの抽出器、および1つの直接フィルター。

let suspicious_domain_mapping = '{"node_types":[{"type":"IP","id":"IP","key":"ClientIp","props":["ClientIp"],"defaults":{},"defIcon":"https://raw.

…

[翻訳のため省略]

Individual skills in this repo

This repo contains 12 individual skills — each has its own dedicated page.

microsoft/azure-ai-agents-persistent-dotnet

Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: "PersistentAgentsClient", "persistent agents", "agent threads", "agent runs", "streaming agents", "function calling agents .NET".

microsoft/azure-ai-document-intelligence-dotnet

Azure AI Document Intelligence SDK for .NET. Extract text, tables, and structured data from documents using prebuilt and custom models. Use for invoice processing, receipt extraction, ID document analysis, and custom document models. Triggers: "Document Intelligence", "DocumentIntelligenceClient", "form recognizer", "invoice extraction", "receipt OCR", "document analysis .NET".

microsoft/azure-ai-openai-dotnet

Azure OpenAI SDK for .NET. Client library for Azure OpenAI and OpenAI services. Use for chat completions, embeddings, image generation, audio transcription, and assistants. Triggers: "Azure OpenAI", "AzureOpenAIClient", "ChatClient", "chat completions .NET", "GPT-4", "embeddings", "DALL-E", "Whisper", "OpenAI .NET".

microsoft/azure-ai-projects-dotnet

Azure AI Projects SDK for .NET. High-level client for Azure AI Foundry projects including agents, connections, datasets, deployments, evaluations, and indexes. Use for AI Foundry project management, versioned agents, and orchestration. Triggers: "AI Projects", "AIProjectClient", "Foundry project", "versioned agents", "evaluations", "datasets", "connections", "deployments .NET".

microsoft/azure-ai-voicelive-dotnet

Azure AI Voice Live SDK for .NET. Build real-time voice AI applications with bidirectional WebSocket communication. Use for voice assistants, conversational AI, real-time speech-to-speech, and voice-enabled chatbots. Triggers: "voice live", "real-time voice", "VoiceLiveClient", "VoiceLiveSession", "voice assistant .NET", "bidirectional audio", "speech-to-speech".

microsoft/azure-eventgrid-dotnet

Azure Event Grid SDK for .NET. Client library for publishing and consuming events with Azure Event Grid. Use for event-driven architectures, pub/sub messaging, CloudEvents, and EventGridEvents. Triggers: "Event Grid", "EventGridPublisherClient", "CloudEvent", "EventGridEvent", "publish events .NET", "event-driven", "pub/sub".

microsoft/azure-eventhub-dotnet

Azure Event Hubs SDK for .NET. Use for high-throughput event streaming: sending events (EventHubProducerClient, EventHubBufferedProducerClient), receiving events (EventProcessorClient with checkpointing), partition management, and real-time data ingestion. Triggers: "Event Hubs", "event streaming", "EventHubProducerClient", "EventProcessorClient", "send events", "receive events", "checkpointing", "partition".

microsoft/azure-identity-dotnet

Azure Identity library for .NET. Authentication library for Azure SDK clients using Microsoft Entra ID. Use for DefaultAzureCredential, managed identity, service principals, and developer credentials. Triggers: "Azure Identity", "DefaultAzureCredential", "ManagedIdentityCredential", "ClientSecretCredential", "authentication .NET", "Azure auth", "credential chain".

microsoft/azure-kusto-graph

Build and query Kusto graphs from natural language. Covers transient graphs (make-graph), persistent graph models/snapshots, pattern matching (graph-match), shortest paths, connected components, and graph-to-table export. Generates the edges-first thinking: define edges, define node lookups, union, make-graph. WHEN: make-graph, graph-match, graph-shortest-paths, graph-to-table, graph-mark-components, persistent graph, graph model, graph snapshot, build a graph from data, find paths between nodes, pattern matching in graph, connected components, transient graph, Kusto graph, KQL graph.

microsoft/azure-kusto-irql

Compose IRQL (Incident Response Query Language) queries for Kusto cybersecurity investigations. Translates natural language hunting questions into composable IRQL pipelines using Get_*, Extract_*, and Enrich_* functions. WHEN: IRQL query, security hunt, threat hunting KQL, incident response query, compose hunting pipeline, failed logins, phishing investigation, lateral movement, process execution, file creation events.

microsoft/azure-local

Plan, deploy, operate, and troubleshoot Azure Local (formerly Azure Stack HCI): sizing and prerequisites, Arc registration, lifecycle updates, workloads (Azure Local VMs, AKS on Azure Local, images, disks, logical networks), SDN and network security, and failure triage — starting read-only and confirming before risky changes. WHEN: Azure Local, Azure Stack HCI, Arc resource bridge, custom location, Azure Local VM, Arc VM, AKS on Azure Local, AKS hybrid, SDN, Lifecycle Manager, Azure Local update, disconnected site.

microsoft/azure-local-multi-rack

Plan, deploy, operate, and troubleshoot multi-rack (rack scale) deployments of Azure Local — preintegrated racks scaling to hundreds of machines, built on Network Fabric Controller, Cluster Manager, SAN storage, and managed network fabric. Use for the Microsoft.NetworkCloud and Microsoft.ManagedNetworkFabric control plane. NOT for standard 1-16 node Azure Local, and NOT for rack-aware clusters (two racks as availability zones, up to 8 nodes, synchronous replication) — those are standard scale. WHEN: multi-rack, rack scale Azure Local, aggregation rack, compute rack, Network Fabric Controller, NFC, Cluster Manager, network fabric, isolation domain, az networkcloud, az networkfabric, multi-rack logical network, multi-rack Arc VM.

関連スキル