OpenAI 및 Microsoft Sentinel에 대한 시리즈에 다시 오신 것을 환영합니다! 오늘은 OpenAI의 인기 있는 언어 모델에 대한 또 다른 사용 사례를 살펴보고 Sentinel REST API를 살펴보겠습니다. 아직 Microsoft Sentinel 인스턴스가 없으면 무료 Azure 계정을 사용하여 인스턴스를 만들고 Sentinel 시작하기 빠른 시작을 따를 수 있습니다. API 키가 있는 개인 OpenAI 계정도 필요합니다. 준비해? 시작하자!
보안 실무자가 직면하는 작업 중 하나는 분석 규칙, 쿼리 및 정의를 신속하게 사용하여 경고를 트리거한 원인을 이해하는 방법입니다. 예를 들어 다음은 KQL(Kusto 쿼리 언어)로 작성된 Microsoft Sentinel 분석 규칙의 비교적 짧은 예입니다.
숙련된 KQL 운영자는 이를 구문 분석하는 데 어려움이 없지만 정신적으로 시간이 좀 걸릴 것입니다. 키워드, 로그 소스, 작업 및 이벤트 로직을 매핑합니다. KQL을 사용해 본 적이 없는 사람은 이 규칙이 탐지하도록 설계된 내용을 이해하는 데 더 많은 시간이 필요할 수 있습니다. 운 좋게도 코드를 읽고 자연어로 해석하는 데 정말 능숙한 친구가 있습니다. 바로 OpenAI의 GPT3입니다!
DaVinci와 같은 GPT3 엔진은 자연어로 코드를 해석하는 데 매우 능숙하며 Microsoft Sentinel KQL 구문 및 사용법에 대해 광범위하게 교육을 받았습니다. 더 좋은 점은 Sentinel에는 GPT3 모델을 자동화된 Sentinel 플레이북에 통합할 수 있는 OpenAI 커넥터가 내장되어 있다는 것입니다! 이 커넥터를 사용하여 Sentinel 이벤트에 분석 규칙을 설명하는 설명을 추가할 수 있습니다. 이는 선형 작업 흐름을 갖춘 간단한 논리 앱입니다.
트리거부터 시작하여 논리 앱을 살펴보겠습니다. Sentinel 커넥터를 사용하여 이벤트에서 모든 관련 분석 규칙 ID를 추출할 수 있도록 이 플레이북에는 Microsoft Sentinel 이벤트 트리거를 사용합니다. Sentinel REST API를 사용하여 텍스트 완성 프롬프트에서 AI 모델에 전달할 수 있는 규칙 ID를 사용하여 규칙 쿼리 텍스트를 찾습니다. 마지막으로 AI 모델의 출력을 이벤트에 코멘트로 추가하겠습니다.
첫 번째 작업은 Sentinel의 "이벤트 관련 분석 규칙 ID 항목"에 작동하는 "각각" 논리 블록입니다.
다음으로 Sentinel REST API를 사용하여 예약된 경고 규칙 자체를 요청해야 합니다. 이 API 엔드포인트는 https://learn.microsoft.com/en-us/rest/api/securityinsights/stable/alert-rules/get ?tabs= HTTP 에 문서화되어 있습니다. 이전에 Sentinel API를 사용해 본 적이 없다면 코드 블록 옆에 있는 녹색 "사용해 보기" 버튼을 클릭하여 자격 증명을 사용하여 실제 요청을 미리 볼 수 있습니다. 이는 API를 탐색할 수 있는 좋은 방법입니다! 우리의 경우 "Get - Alert Rules" 요청은 다음과 같습니다.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/alertRules/{ruleId}?api-version=2022-11-01
논리 앱에서 "HTTP" 작업을 사용하여 이 API 호출을 만들 수 있습니다. 다행스럽게도 방금 "For Each" 논리 블록에 추가한 이벤트 관련 분석 규칙 ID 항목에는 거의 모든 매개변수가 미리 채워져 있습니다. API 도메인 앞에 버전 사양을 추가하기만 하면 됩니다. subscribeID, ResourceGroupName, 작업 공간 이름 및 ruleId에 대한 모든 매개 변수는 동적 콘텐츠 개체에서 제공됩니다. 내 URI 블록의 실제 텍스트는 다음과 같습니다.
https://management.azure.com@{items('For_each_related_Analytics_Rule_ID')}?api-version=2022-11-01
HTTP 작업에 대한 인증 옵션도 구성해야 합니다. 논리 앱에 관리 ID를 사용하고 있습니다. 완성된 작업 블록은 다음과 같습니다.
이제 경고 규칙이 있으므로 GPT3에 전달할 수 있도록 규칙 텍스트를 구문 분석하면 됩니다. Parse JSON 작업을 사용하여 HTTP 단계의 본문 콘텐츠를 제공하고 이 API 호출의 예상 출력과 일치하도록 스키마를 정의해 보겠습니다. 스키마를 생성하는 가장 쉬운 방법은 샘플 페이로드를 업로드하는 것이지만 관심 없는 모든 속성을 포함할 필요는 없습니다. 나는 아키텍처를 다음과 같이 단축했습니다:
{"type": "object","properties": {"id": {"type": "string"},"type": {"type": "string"},"kind": {"type": "string"},"properties": {"type": "object","properties": {"severity": {"type": "string"},"query": {"type": "string"},"tactics": {},"techniques": {},"displayName": {"type": "string"},"description": {"type": "string"},"lastModifiedUtc": {"type": "string"}}}}}
지금까지 우리의 논리 블록은 다음과 같습니다:
이제 AI를 포함시킬 시간입니다! OpenAI 커넥터에서 "GPT3 프롬프트 완료"를 선택하고 이전 JSON 구문 분석 단계의 "쿼리" 동적 콘텐츠 개체를 사용하여 프롬프트를 작성합니다. 최신 Resolve 엔진을 사용하고 대부분의 기본 매개변수를 유지하겠습니다. 우리 쿼리에서는 고온 값과 저온 값 사이에 큰 차이가 나타나지 않았지만 da Vinci 모델에 긴 답변을 위한 더 많은 공간을 제공하기 위해 "최대 토큰" 매개변수를 늘리고 싶었습니다. 완료된 작업은 다음과 같아야 합니다.
스크립트의 마지막 단계는 GPT3의 결과 텍스트를 사용하여 이벤트에 댓글을 추가하는 것입니다. 대신 이벤트 작업을 추가하려면 Sentinel 작업을 선택하세요. "이벤트 ARM ID" 동적 콘텐츠 개체를 추가하고 GPT3 작업의 "텍스트(완성 텍스트)" 출력을 사용하여 주석 메시지를 작성합니다. 논리 앱 디자이너는 "각각" 논리 블록에 주석 작업을 자동으로 래핑합니다. 완성된 댓글 작업은 다음과 같아야 합니다.
논리 앱을 저장하고 이벤트에서 사용해 보겠습니다! 모든 것이 순조롭게 진행되면 논리 앱 실행 기록에 성공적인 완료가 표시됩니다. 문제가 발생하면 각 단계의 정확한 입력 및 출력 세부 정보를 확인할 수 있습니다. 이는 귀중한 문제 해결 도구입니다! 우리의 경우에는 항상 녹색 확인 표시가 있었습니다:
성공! 플레이북은 이벤트에 대한 해설을 추가하여 과로에 시달리는 보안 분석가의 시간을 몇 분씩 절약해 줍니다.
위 내용은 OpenAI 및 Microsoft Sentinel 2부: 분석 규칙 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!