Gemini로 파서 확장 프로그램 만들기
이 가이드에서는 보안 분석가와 감지 엔지니어가 자연어 프롬프트를 사용하여 기본 로그 파서를 보강하는 방법을 설명합니다. AI 파서 확장 프로그램 기능을 사용하면 복잡한 파서 구문이나 정규 표현식을 작성하지 않고도 추가 필드를 빠르게 추출하고, 조건부 로직을 적용하고, 원시 로그를 통합 데이터 모델 (UDM)에 매핑할 수 있습니다.
Google SecOps의 기본 로그 파서가 로그 소스를 파싱할 때 고객별 맞춤 속성, 선택적 필드 또는 특수 원격 분석을 생략할 수 있습니다. AI 파서 확장 프로그램 기능을 사용하면 다음 작업을 할 수 있습니다.
- 원시 로그에서 추가 필드를 추출하여 표준 UDM 필드 또는 커스텀
additional.fields에 매핑합니다. - 문자열 액션을 UDM 열거형 유형에 매핑하는 것과 같은 조건부 로직 및 값 변환을 적용합니다.
- 처음부터 시작하지 않고도 멀티턴 채팅 세션에서 생성된 확장 프로그램을 대화형으로 세부 조정합니다.
주요 용어
- 통합 데이터 모델 (UDM): Google SecOps에서 로그 데이터를 저장하고 분석하는 데 사용되는 표준 데이터 구조입니다.
시작하기 전에
시작하기 전에 다음 기본 요건을 충족하는지 확인하세요.
- 사용량 할당량: 24시간 동안 최대 10개의 AI 파서 확장 프로그램 생성 세션을 실행할 수 있으며 세션당 최대 5개의 메시지를 보낼 수 있습니다.
프롬프트 작성 권장사항
첫 번째 시도에서 정확한 파서 확장 프로그램을 얻으려면 다음 프롬프트 가이드라인을 따르세요.
- 소스 및 대상을 명시적으로 지정: 추출할 원시 로그의 일부와 채우는 정확한 UDM 필드 경로(예:
principal.ip,target.user.email_addresses또는security_result.action)를 명확하게 명시합니다. - 정확히 일치하는 리터럴에 따옴표 사용: 구조화되지 않은 로그에서 리터럴 문자열, 구분 기호 또는 샘플 값을 참조할 때는 따옴표로 묶습니다(예:
"198.51.100.0"또는"allow"). - additional.fields를 사용하여 커스텀 필드 처리: 전용 UDM 필드가 없는 독점 또는 공급업체별 속성의 경우 AI에 명확한 키 이름(예:
additional.fields["application"])으로additional.fields에 매핑하도록 지시합니다.
파서 확장 프로그램 생성
Google SecOps의 다음 위치 중 하나에서 파서 확장 프로그램 워크플로를 시작할 수 있습니다.
- 파서 설정 페이지: 파서 페이지로 이동하여 기존 로그 파서를 선택하고 확장합니다.
- 검색 페이지: 검색 페이지에서 로그를 조사할 때 파싱되지 않은 필드가 있는 이벤트에서 확장 프로그램 생성 흐름을 직접 엽니다.
파서 설정 페이지에서 파서 확장 프로그램을 생성하려면 다음 단계를 따르세요.
- Google SecOps에서 파서 설정 페이지로 이동합니다.
- 확장할 로그 유형을 검색합니다.
- 파서 옆에 있는 메뉴를 클릭하고 확장 옵션을 선택합니다.
- 원시 로그 필드에 파싱할 로그 샘플을 붙여넣습니다.
- 확장 프로그램 메서드 섹션에서 AI로 생성 탭을 선택합니다.
- 프롬프트 필드에 추출에 대한 일반 영어 설명을 입력합니다.
확인 을 클릭합니다.
시스템에서 확장 프로그램 코드를 생성하고 UDM 출력 을 업데이트합니다.
파서 확장 프로그램 세부 조정
멀티턴 채팅 세션에서 파서 확장 프로그램을 반복적으로 빌드하고 세부 조정할 수 있습니다. 후속 프롬프트를 제출하면 AI가 이전에 생성된 확장 프로그램 위에 새 안내를 적용합니다. 이전 턴의 기존 매핑 및 조건부 로직은 재정의하거나 삭제하도록 명시적으로 요청하지 않는 한 자동으로 보존됩니다.
- 프롬프트 필드에 생성된 코드를 조정하기 위한 후속 안내를 입력합니다.
- 확인 을 클릭합니다.
- 각 프롬프트 후에는 생성된 확장 프로그램 코드를 미리 보고, 샘플 UDM 출력을 검사하고, 로직을 확인하거나 조정합니다.
다음 워크플로 예에서는 반복적인 세부 조정을 통해 여러 턴에 걸쳐 파서 확장 프로그램을 빌드하는 방법을 보여줍니다.
- 턴 1 (초기 추출):
- 사용자 프롬프트:
"Extract source IP '198.51.100.0' to principal.ip and destination IP '198.51.100.1' to target.ip." - 결과: AI가 확장 프로그램 매핑
principal.ip및target.ip를 생성합니다.
- 사용자 프롬프트:
- 턴 2 (추가 매핑):
- 사용자 프롬프트:
"Also map virtual system string 'vsys1' to observer.administrative_domain." - 결과: AI가 턴 1의 IP 매핑을 유지하면서
observer.administrative_domain을 매핑하도록 확장 프로그램을 업데이트합니다.
- 사용자 프롬프트:
- 턴 3 (조건부 세부 조정):
- 사용자 프롬프트:
"In addition, map action string 'allow' to security_result[0].action as ALLOW." - 결과: AI가 이전의 모든 추출 위에 조건부 작업 열거형 매핑을 통합합니다.
- 사용자 프롬프트:
파서 확장 프로그램 검증
- 검증 을 클릭합니다.
- 프로세스가 완료된 후 검증 측정항목을 검토합니다.
참조 정보 액세스
다음 예시를 사용하여 정확한 프롬프트를 작성하세요.
구조화된 로그 프롬프트
데이터가 이름이 지정된 키, 속성 또는 XML 태그로 구성된 구조화된 로그의 경우 프롬프트에 필드 이름 또는 경로를 지정합니다.
샘플 구조화된 로그 - JSON 형식
{
"insertId": "u0mlpdesys",
"logName": "projects/sample-project-id/logs/cloudaudit.googleapis.com%2Fdata_access",
"protoPayload": {
"authenticationInfo": {
"principalEmail": "analyst@example-domain.com"
},
"methodName": "GenerateAccessToken",
"requestMetadata": {
"callerIp": "203.0.113.195",
"callerSuppliedUserAgent": "google-cloud-sdk gcloud/392.0.0"
},
"resourceName": "projects/-/serviceAccounts/110649196922301550006",
"serviceName": "iamcredentials.googleapis.com"
}
}
구조화된 로그의 프롬프트 예
| 프롬프트 안내 | 소스 필드 또는 키 | 대상 UDM 필드 |
|---|---|---|
"Map principalEmail to principal.user.email_addresses." |
principalEmail |
principal.user.email_addresses |
"Extract callerIp to principal.ip and methodName to metadata.product_event_type." |
callerIp, methodName |
principal.ip, metadata.product_event_type |
"Map resourceName to target.resource.name and serviceName to target.application." |
resourceName, serviceName |
target.resource.name, target.application |
"From XML tags, map /Event/System/Hostname to principal.hostname." |
/Event/System/Hostname |
principal.hostname |
구조화되지 않은 로그 프롬프트
구조화되지 않은 로그의 경우 샘플 로그, 위치 참조 또는 설명 라벨에서 리터럴 값을 직접 지정합니다.
샘플 구조화되지 않은 syslog 메시지
<14>Nov 9 18:52:45 198.51.100.1 1,2021/11/09 18:52:45,007051000184334,TRAFFIC,start,2561,2021/11/09 18:52:45,198.51.100.0,198.51.100.1,0.0.0.0,0.0.0.0,any allow,,,ping,vsys1,LAN,LAN,ethernet1/2,ethernet1/2,LFPpan,2021/11/09 18:52:45,9729,6,0,0,2048,0,0x100000,icmp,allow,444,444,0,6
구조화되지 않은 로그의 프롬프트 예
| 프롬프트 안내 | 샘플 리터럴 값 또는 설명 | 대상 UDM 필드 |
|---|---|---|
"Extract source IP '198.51.100.0' to principal.ip and destination IP '198.51.100.1' to target.ip." |
'198.51.100.0', '198.51.100.1' |
principal.ip, target.ip |
"Extract the application string 'ping' from the log and map it to additional.fields['application']." |
'ping' |
additional.fields["application"] |
"Map rule name 'any allow' to security_result.rule_id." |
'any allow' |
security_result[0].rule_id |
"Extract sent bytes and received bytes into network.sent_bytes and network.received_bytes." |
로그의 숫자 바이트 카운터 | network.sent_bytes, network.received_bytes |
조건부 로직 프롬프트
원시 로그 값을 특정 UDM 열거형으로 정규화하는 조건부 로직을 설명합니다.
- 열거형 정규화:
"If the firewall action in the log is 'allow', set security_result.action to ALLOW; otherwise set security_result.action to BLOCK." - 조건부 필드 매핑:
"If the protocol is 'icmp', map the ICMP type and code into network.icmp.type and network.icmp.code." - 상태 매핑:
"When the log status contains 'success' or '0', set security_result.severity to INFO; if it contains 'error', set it to ERROR."
사용량 한도
최적의 성능과 리소스 가용성을 유지하기 위해 AI 파서 확장 프로그램 기능은 다음과 같은 사용량 할당량을 적용합니다.
- 24시간당 10개 세션: 각 고객에게는 24시간 동안 최대 10개의 AI 파서 확장 프로그램 생성 세션이 할당됩니다.
- 세션당 5개 메시지: 단일 세션 내에서 초기 프롬프트와 후속 세부 조정 턴을 포함하여 최대 5개의 메시지를 보내 파서 확장 프로그램을 작성하고 세부 조정할 수 있습니다.
세션 메시지 한도에 도달하면 현재 확장 프로그램을 저장하거나 새 세션을 시작할 수 있습니다.
다음 단계
- 다른 파서 확장 프로그램 메서드에 대한 자세한 내용은 파서 확장 프로그램 개발을 참고하세요.
- 샘플 확장 프로그램 스니펫 및 시나리오는 파서 확장 프로그램 예를 참고하세요.
- 원시 로그가 UDM으로 파싱되는 방법에 대한 개요는 로그 파싱 개요를 참고하세요.
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.