중요
이 게시물의 일부 정보는 상용으로 출시되기 전에 실질적으로 수정될 수 있는 사전 릴리스된 제품과 관련이 있습니다. Microsoft는 여기에서 제공하는 정보와 관련하여 명시적이거나 묵시적인 어떠한 보증도 제공하지 않습니다.
이 문서에서는 사용자 지정 Security Copilot 에이전트가 작동하는 방식을 정의하는 주요 구성 요소의 개념적 개요를 제공하여 구조, 동작 및 운영 논리를 이해하는 데 도움이 됩니다.
에이전트
Security Copilot 에이전트는 특정 목표를 달성하기 위해 작동하는 자체 포함 세미 또는 완전 자율 계산 엔터티입니다. 환경을 인식하고 대응하고, 결정을 내리고, 목표를 달성하기 위해 결과를 생성하는 능력에 의해 정의됩니다. 에이전트의 디자인은 LLM(대규모 언어 모델), 연결된 도구(기술) 또는 둘 다인지 여부를 결정하여 목표를 달성하는 방법을 에이전트에 알릴 수 있습니다. 에이전트의 결정은 해당 입력 및 지침에 따라 결정되며, 이로 인해 에이전트가 미리 정의된 논리를 사용하거나 LLM이 해당 지침을 해석하고 작업하라는 메시지를 표시할 수 있습니다.
에이전트는 트리거를 통해 활성화되어 에이전트 실행을 만들고 결과가 달성될 때까지 각 단계(또는 작업)를 실행합니다. 에이전트 실행 전체에서 지침에 따라 LLM 또는 연결된 도구를 활용하여 작업을 완료할지 결정합니다.
에이전트는 다음 두 가지 선택 전략 중 하나를 사용하여 LLM 및 에이전트 지침을 벗어난 도구, 외부 리소스와 상호 작용할 수 있습니다.
정적 도구: 개별 단계 또는 전체 에이전트 실행에 대해 에이전트 정의에 나열된 대로 에이전트가 호출할 수 있는 고정된 리소스 집합입니다. 이러한 방식으로 정의된 경우 에이전트 내의 LLM은 정의된 것 이외의 도구를 호출하도록 결정할 수 없습니다. 이렇게 하면 속도와 도구 결과의 관련성이 향상될 수 있습니다. 미리 정의된 원본을 호출해야 하는 위협 인텔리전스 에이전트를 이러한 방식으로 설계할 수 있습니다.
동적 도구: 에이전트에 대한 컨텍스트, 추론 또는 입력에 따라 에이전트를 실행하는 동안 도구 호출이 선택됩니다. 에이전트에서 사용할 수 있는 도구는 런타임에 도입할 수 있습니다. 에이전트 실행에서 발생하는 조건에 반응해야 하는 에이전트는 이러한 방식으로 설계할 수 있습니다. 예를 들어 엔터티를 보강하는 에이전트는 에이전트에 대한 입력으로 제공된 엔터티 형식에 따라 다르게 실행될 수 있습니다.
개발자와 Security Copilot 사용자는 에이전트의 목표에 따라 도구 선택에 대한 접근 방식을 사용하여 에이전트를 디자인할 수 있습니다. 또한 에이전트의 결과가 개인, 팀 또는 organization 제공하는지 여부를 알리는 데 도움이 됩니다. 에이전트가 ID를 사용하여 실행되면 결과의 scope 및 ID의 사용 권한이 정렬되어야 합니다.
간단한 경고 심사 에이전트를 빌드하거나 복잡한 조사를 위해 다중 에이전트 시스템을 오케스트레이션하는 경우 이 문서에서는 도구 선택 및 매니페스트 디자인에서 구성 및 거버넌스를 트리거하기 위해 Security Copilot 에이전트 프레임워크와 함께 작업하는 데 필요한 기본 지식을 제공합니다.
지침
지침은 에이전트에게 목표를 정의하고, 의사 결정을 알리고, 결과를 자세히 설명하는 지침입니다. 예를 들어 심사 에이전트에게 심각도가 높은 인시던트에 집중하도록 지시하거나 데이터 에이전트가 특정 규칙을 따르는 정보만 끌어오도록 안내할 수 있습니다. 지침은 에이전트가 정확하고 일관성을 유지하는 데 도움이 됩니다.
도구
도구(기술)는 Security Copilot 에이전트가 결과를 완료하는 데 도움이 되도록 호출할 수 있는 에이전트 지침 및 LLM 외부에서 액세스되는 리소스입니다. 도구를 기존 프로그래밍 언어의 함수로 생각해 보세요. 이름, 몇 가지 인수가 있으며 호출될 때 잘 정의된 작업을 수행하고 결과를 반환합니다.
사용자는 Security Copilot 특수한 작업을 수행하거나 외부 시스템과 상호 작용하기 위해 호출할 수 있는 원하는 도구를 만들 수 있습니다.
예시:
'등록한 사람'과 같이 이전에 볼 수 없는 엔터티에 대한 답변 확인 또는 평판 질문
www.contoso.com?''인시던트 1234가 어떤 사용자에게 영향을 주나요?'와 같은 고객별 데이터에 대한 질문에 답변합니다.
''의 계정 암호testaccount@contoso.com 재설정과 같은 외부 시스템과 상호 작용합니다.
SharePoint와 같은 지식 원본에서 고객별 지식을 검색합니다.
플러그 인
새 프롬프트, 프롬프트북 또는 에이전트 기능을 만드는 것과 관련된 경우 사용자가 Security Copilot 사용할 수 있는 관련 도구 컬렉션입니다. 에이전트의 경우 플러그 인은 에이전트 및 LLM 외부의 리소스에 대한 액세스 권한을 부여하여 에이전트가 수행할 수 있는 작업을 확장합니다. 예를 들어 API를 사용하여 평판 조회와 같은 외부 서비스에 연결하는 플러그 인이 있습니다. 여기서 플러그 인에 대한 기본 도구 정의는 평판 점수, 관련 맬웨어, 위협 인텔리전스 등을 반환할 수 있습니다.
도구 형식
Security Copilot 플랫폼은 다양한 요구 사항에 맞게 도구(기술)를 작성하고 호스트하는 여러 방법을 지원합니다. 지원되는 기술을 사용하여 에이전트를 빌드할 수 있습니다. 지원되는 도구 형식은 다음과 같습니다.
| 도구 형식 | 가장 적합합니다. | 예제 사용 사례 |
|---|---|---|
| API | 외부 또는 내부 시스템 통합 | 암호 재설정 자동화, API에서 위협 인텔 가져오기, 수정 워크플로 트리거 |
| GPT | 기본 LLM에서 기본적으로 사용할 수 없는 자연어 처리에 대한 정의를 제공합니다. | 도메인별 정의, 고유한 형식으로 인시던트 요약 |
| KQL | Microsoft 데이터 원본 쿼리(Microsoft Defender, Microsoft Sentinel) | 로그인 로그 검색, 변칙 검색 |
| 대리인 | LLM(큰 언어 모델) 및 자식 도구를 사용하여 다단계 워크플로 오케스트레이션 | URL, 의 호스팅 상황을 이해하여 조사를 위해 여러 도구를 연결합니다. |
| MCP | MCP 서버에서 노출하는 동적 다중 도구 통합 보안 부조종사들이 런타임에 도구를 검색합니다. | 위협 인텔을 집계하거나 MCP 서버를 통해 여러 도구에서 수정을 오케스트레이션합니다. |
에이전트 정의
에이전트 정의는 에이전트의 청사진 역할을 하며 매니페스트 파일의 핵심 구성 요소입니다. 매니페스트의 최상위 키 중 하나이며 에이전트의 핵심 구성, 기능 및 동작을 지정합니다. 다음을 지정합니다.
- 설명/메타데이터 세부 정보(예: 이름, 설명).
- 에이전트가 실행되는 이벤트를 설명하는 트리거 정의입니다.
- 에이전트가 작업을 완료하는 데 사용하는 관련 도구 또는 도구 참조입니다.
Security Copilot 개발자는 사용자가 만든 에이전트 정의를 분석가가 실행하고 결과를 볼 수 있습니다.
에이전트 instance
에이전트 instance 특정 작업 영역 내에서 에이전트 정의의 배포된 버전입니다. 각 instance:
- 자체 ID 또는 자격 증명을 유지 관리합니다.
- instance 특정 기억과 피드백을 저장합니다.
- 여러 테넌트 및 작업 영역은 동일한 에이전트 정의의 고유한 instance 가질 수 있습니다. 한 instance 대한 구성 변경 또는 메모리 업데이트는 다른 instance 영향을 주지 않습니다.
매니페스트
매니페스트는 에이전트의 정의, 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 주소를 검색합니다. 원본 관리 사용자 지정에서 플러그 인을 > 사용하도록 설정해야 합니다. 어떤 도구가RequiredSkillsets: ThreatIntelligence.DTI호출되지 않고GetDnsResolutionsByIndicators추가되어야 합니다.lookupIpAddressGeolocationoperationId: 각 IP 주소에 대한 지리적 위치 데이터를 조회하기 위해 API 플러그 인DCA_SampleAPIPlugin에서 참조되는 OpenAPI 사양의 입니다. 참조는 빌드 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에 대한 각 호출은 트리거 실행입니다. 이러한 기술 호출은 에이전트 instance 및 트리거와 연결된 세션에서 실행되며 에이전트의 연결된 ID를 사용합니다.
FetchSkill 및 ProcessSkill
FetchSkill
에이전트 실행 시 트리거가 활성화되면 구성된 경우 FetchSkill이 데이터를 수집합니다. ProcessSkill은 실행 중에 에이전트가 해당 데이터에 대해 작동하는 방식을 정의합니다. 데이터가 페치되면 ProcessSkill이 해당 데이터를 입력으로 사용하여 특정 작업 또는 분석을 수행합니다. 이러한 두 구성 요소는 동적 데이터 기반 워크플로를 사용하도록 설정하기 위해 함께 작동합니다. FetchSkill 값이 설정된 경우 트리거는 먼저 FetchSkill을 호출합니다.
중요
Fetch 및 ProcessSkills는 기술 세트에 의해 이름을 지정해야 합니다. 형식 Skillset name.Skill name을 따라야 합니다.
트리거 Skill name 예제에서 은 입니다 RecentUrlClicks_DCA. 는 Skillset 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은 , 및 namecreated_at 를 Incident입력으로 사용하여 세 번 호출됩니다.
작업 영역
작업을 위한 컨테이너입니다. 에이전트는 작업 영역의 컨텍스트 내에서 작동합니다. 작업 영역은 액세스, 구성, 소비 및 데이터 처리에 대한 제어 단위를 제공합니다.
메모리
메모리를 사용하면 에이전트가 상호 작용 간에 컨텍스트를 유지할 수 있으므로 보다 지능적이고 개인 설정된 응답을 사용할 수 있습니다. 에이전트는 과거 작업, 사용자 기본 설정 또는 인시던트 기록과 같은 관련 정보를 저장하여 연속성을 제공하고 시간이 지남에 따라 의사 결정을 개선할 수 있습니다.